You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mi...@apache.org on 2016/02/03 18:25:34 UTC

[01/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 4bb5e366b -> 6a13df3e1


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
index f538aaa..99eccfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html
@@ -5018,1055 +5018,1055 @@
 <span class="sourceLineNo">5010</span>        put.addColumn(family, qf, null);<a name="line.5010"></a>
 <span class="sourceLineNo">5011</span>      }<a name="line.5011"></a>
 <span class="sourceLineNo">5012</span>      region.put(put);<a name="line.5012"></a>
-<span class="sourceLineNo">5013</span>    }<a name="line.5013"></a>
-<span class="sourceLineNo">5014</span>  }<a name="line.5014"></a>
-<span class="sourceLineNo">5015</span><a name="line.5015"></a>
-<span class="sourceLineNo">5016</span>  static void verifyData(HRegion newReg, int startRow, int numRows, byte[] qf, byte[]... families)<a name="line.5016"></a>
-<span class="sourceLineNo">5017</span>      throws IOException {<a name="line.5017"></a>
-<span class="sourceLineNo">5018</span>    for (int i = startRow; i &lt; startRow + numRows; i++) {<a name="line.5018"></a>
-<span class="sourceLineNo">5019</span>      byte[] row = Bytes.toBytes("" + i);<a name="line.5019"></a>
-<span class="sourceLineNo">5020</span>      Get get = new Get(row);<a name="line.5020"></a>
-<span class="sourceLineNo">5021</span>      for (byte[] family : families) {<a name="line.5021"></a>
-<span class="sourceLineNo">5022</span>        get.addColumn(family, qf);<a name="line.5022"></a>
-<span class="sourceLineNo">5023</span>      }<a name="line.5023"></a>
-<span class="sourceLineNo">5024</span>      Result result = newReg.get(get);<a name="line.5024"></a>
-<span class="sourceLineNo">5025</span>      Cell[] raw = result.rawCells();<a name="line.5025"></a>
-<span class="sourceLineNo">5026</span>      assertEquals(families.length, result.size());<a name="line.5026"></a>
-<span class="sourceLineNo">5027</span>      for (int j = 0; j &lt; families.length; j++) {<a name="line.5027"></a>
-<span class="sourceLineNo">5028</span>        assertTrue(CellUtil.matchingRow(raw[j], row));<a name="line.5028"></a>
-<span class="sourceLineNo">5029</span>        assertTrue(CellUtil.matchingFamily(raw[j], families[j]));<a name="line.5029"></a>
-<span class="sourceLineNo">5030</span>        assertTrue(CellUtil.matchingQualifier(raw[j], qf));<a name="line.5030"></a>
-<span class="sourceLineNo">5031</span>      }<a name="line.5031"></a>
-<span class="sourceLineNo">5032</span>    }<a name="line.5032"></a>
-<span class="sourceLineNo">5033</span>  }<a name="line.5033"></a>
-<span class="sourceLineNo">5034</span><a name="line.5034"></a>
-<span class="sourceLineNo">5035</span>  static void assertGet(final HRegion r, final byte[] family, final byte[] k) throws IOException {<a name="line.5035"></a>
-<span class="sourceLineNo">5036</span>    // Now I have k, get values out and assert they are as expected.<a name="line.5036"></a>
-<span class="sourceLineNo">5037</span>    Get get = new Get(k).addFamily(family).setMaxVersions();<a name="line.5037"></a>
-<span class="sourceLineNo">5038</span>    Cell[] results = r.get(get).rawCells();<a name="line.5038"></a>
-<span class="sourceLineNo">5039</span>    for (int j = 0; j &lt; results.length; j++) {<a name="line.5039"></a>
-<span class="sourceLineNo">5040</span>      byte[] tmp = CellUtil.cloneValue(results[j]);<a name="line.5040"></a>
-<span class="sourceLineNo">5041</span>      // Row should be equal to value every time.<a name="line.5041"></a>
-<span class="sourceLineNo">5042</span>      assertTrue(Bytes.equals(k, tmp));<a name="line.5042"></a>
-<span class="sourceLineNo">5043</span>    }<a name="line.5043"></a>
-<span class="sourceLineNo">5044</span>  }<a name="line.5044"></a>
-<span class="sourceLineNo">5045</span><a name="line.5045"></a>
-<span class="sourceLineNo">5046</span>  /*<a name="line.5046"></a>
-<span class="sourceLineNo">5047</span>   * Assert first value in the passed region is &lt;code&gt;firstValue&lt;/code&gt;.<a name="line.5047"></a>
-<span class="sourceLineNo">5048</span>   *<a name="line.5048"></a>
-<span class="sourceLineNo">5049</span>   * @param r<a name="line.5049"></a>
-<span class="sourceLineNo">5050</span>   *<a name="line.5050"></a>
-<span class="sourceLineNo">5051</span>   * @param fs<a name="line.5051"></a>
-<span class="sourceLineNo">5052</span>   *<a name="line.5052"></a>
-<span class="sourceLineNo">5053</span>   * @param firstValue<a name="line.5053"></a>
-<span class="sourceLineNo">5054</span>   *<a name="line.5054"></a>
-<span class="sourceLineNo">5055</span>   * @throws IOException<a name="line.5055"></a>
-<span class="sourceLineNo">5056</span>   */<a name="line.5056"></a>
-<span class="sourceLineNo">5057</span>  private void assertScan(final HRegion r, final byte[] fs, final byte[] firstValue)<a name="line.5057"></a>
-<span class="sourceLineNo">5058</span>      throws IOException {<a name="line.5058"></a>
-<span class="sourceLineNo">5059</span>    byte[][] families = { fs };<a name="line.5059"></a>
-<span class="sourceLineNo">5060</span>    Scan scan = new Scan();<a name="line.5060"></a>
-<span class="sourceLineNo">5061</span>    for (int i = 0; i &lt; families.length; i++)<a name="line.5061"></a>
-<span class="sourceLineNo">5062</span>      scan.addFamily(families[i]);<a name="line.5062"></a>
-<span class="sourceLineNo">5063</span>    InternalScanner s = r.getScanner(scan);<a name="line.5063"></a>
-<span class="sourceLineNo">5064</span>    try {<a name="line.5064"></a>
-<span class="sourceLineNo">5065</span>      List&lt;Cell&gt; curVals = new ArrayList&lt;Cell&gt;();<a name="line.5065"></a>
-<span class="sourceLineNo">5066</span>      boolean first = true;<a name="line.5066"></a>
-<span class="sourceLineNo">5067</span>      OUTER_LOOP: while (s.next(curVals)) {<a name="line.5067"></a>
-<span class="sourceLineNo">5068</span>        for (Cell kv : curVals) {<a name="line.5068"></a>
-<span class="sourceLineNo">5069</span>          byte[] val = CellUtil.cloneValue(kv);<a name="line.5069"></a>
-<span class="sourceLineNo">5070</span>          byte[] curval = val;<a name="line.5070"></a>
-<span class="sourceLineNo">5071</span>          if (first) {<a name="line.5071"></a>
-<span class="sourceLineNo">5072</span>            first = false;<a name="line.5072"></a>
-<span class="sourceLineNo">5073</span>            assertTrue(Bytes.compareTo(curval, firstValue) == 0);<a name="line.5073"></a>
-<span class="sourceLineNo">5074</span>          } else {<a name="line.5074"></a>
-<span class="sourceLineNo">5075</span>            // Not asserting anything. Might as well break.<a name="line.5075"></a>
-<span class="sourceLineNo">5076</span>            break OUTER_LOOP;<a name="line.5076"></a>
-<span class="sourceLineNo">5077</span>          }<a name="line.5077"></a>
-<span class="sourceLineNo">5078</span>        }<a name="line.5078"></a>
-<span class="sourceLineNo">5079</span>      }<a name="line.5079"></a>
-<span class="sourceLineNo">5080</span>    } finally {<a name="line.5080"></a>
-<span class="sourceLineNo">5081</span>      s.close();<a name="line.5081"></a>
-<span class="sourceLineNo">5082</span>    }<a name="line.5082"></a>
-<span class="sourceLineNo">5083</span>  }<a name="line.5083"></a>
-<span class="sourceLineNo">5084</span><a name="line.5084"></a>
-<span class="sourceLineNo">5085</span>  /**<a name="line.5085"></a>
-<span class="sourceLineNo">5086</span>   * Test that we get the expected flush results back<a name="line.5086"></a>
-<span class="sourceLineNo">5087</span>   * @throws IOException<a name="line.5087"></a>
-<span class="sourceLineNo">5088</span>   */<a name="line.5088"></a>
-<span class="sourceLineNo">5089</span>  @Test<a name="line.5089"></a>
-<span class="sourceLineNo">5090</span>  public void testFlushResult() throws IOException {<a name="line.5090"></a>
-<span class="sourceLineNo">5091</span>    String method = name.getMethodName();<a name="line.5091"></a>
-<span class="sourceLineNo">5092</span>    TableName tableName = TableName.valueOf(method);<a name="line.5092"></a>
-<span class="sourceLineNo">5093</span>    byte[] family = Bytes.toBytes("family");<a name="line.5093"></a>
-<span class="sourceLineNo">5094</span><a name="line.5094"></a>
-<span class="sourceLineNo">5095</span>    this.region = initHRegion(tableName, method, family);<a name="line.5095"></a>
-<span class="sourceLineNo">5096</span><a name="line.5096"></a>
-<span class="sourceLineNo">5097</span>    // empty memstore, flush doesn't run<a name="line.5097"></a>
-<span class="sourceLineNo">5098</span>    HRegion.FlushResult fr = region.flush(true);<a name="line.5098"></a>
-<span class="sourceLineNo">5099</span>    assertFalse(fr.isFlushSucceeded());<a name="line.5099"></a>
-<span class="sourceLineNo">5100</span>    assertFalse(fr.isCompactionNeeded());<a name="line.5100"></a>
-<span class="sourceLineNo">5101</span><a name="line.5101"></a>
-<span class="sourceLineNo">5102</span>    // Flush enough files to get up to the threshold, doesn't need compactions<a name="line.5102"></a>
-<span class="sourceLineNo">5103</span>    for (int i = 0; i &lt; 2; i++) {<a name="line.5103"></a>
-<span class="sourceLineNo">5104</span>      Put put = new Put(tableName.toBytes()).addColumn(family, family, tableName.toBytes());<a name="line.5104"></a>
-<span class="sourceLineNo">5105</span>      region.put(put);<a name="line.5105"></a>
-<span class="sourceLineNo">5106</span>      fr = region.flush(true);<a name="line.5106"></a>
-<span class="sourceLineNo">5107</span>      assertTrue(fr.isFlushSucceeded());<a name="line.5107"></a>
-<span class="sourceLineNo">5108</span>      assertFalse(fr.isCompactionNeeded());<a name="line.5108"></a>
-<span class="sourceLineNo">5109</span>    }<a name="line.5109"></a>
-<span class="sourceLineNo">5110</span><a name="line.5110"></a>
-<span class="sourceLineNo">5111</span>    // Two flushes after the threshold, compactions are needed<a name="line.5111"></a>
-<span class="sourceLineNo">5112</span>    for (int i = 0; i &lt; 2; i++) {<a name="line.5112"></a>
-<span class="sourceLineNo">5113</span>      Put put = new Put(tableName.toBytes()).addColumn(family, family, tableName.toBytes());<a name="line.5113"></a>
-<span class="sourceLineNo">5114</span>      region.put(put);<a name="line.5114"></a>
-<span class="sourceLineNo">5115</span>      fr = region.flush(true);<a name="line.5115"></a>
-<span class="sourceLineNo">5116</span>      assertTrue(fr.isFlushSucceeded());<a name="line.5116"></a>
-<span class="sourceLineNo">5117</span>      assertTrue(fr.isCompactionNeeded());<a name="line.5117"></a>
-<span class="sourceLineNo">5118</span>    }<a name="line.5118"></a>
-<span class="sourceLineNo">5119</span>  }<a name="line.5119"></a>
-<span class="sourceLineNo">5120</span><a name="line.5120"></a>
-<span class="sourceLineNo">5121</span>  private Configuration initSplit() {<a name="line.5121"></a>
-<span class="sourceLineNo">5122</span>    // Always compact if there is more than one store file.<a name="line.5122"></a>
-<span class="sourceLineNo">5123</span>    CONF.setInt("hbase.hstore.compactionThreshold", 2);<a name="line.5123"></a>
-<span class="sourceLineNo">5124</span><a name="line.5124"></a>
-<span class="sourceLineNo">5125</span>    // Make lease timeout longer, lease checks less frequent<a name="line.5125"></a>
-<span class="sourceLineNo">5126</span>    CONF.setInt("hbase.master.lease.thread.wakefrequency", 5 * 1000);<a name="line.5126"></a>
-<span class="sourceLineNo">5127</span><a name="line.5127"></a>
-<span class="sourceLineNo">5128</span>    CONF.setInt(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, 10 * 1000);<a name="line.5128"></a>
-<span class="sourceLineNo">5129</span><a name="line.5129"></a>
-<span class="sourceLineNo">5130</span>    // Increase the amount of time between client retries<a name="line.5130"></a>
-<span class="sourceLineNo">5131</span>    CONF.setLong("hbase.client.pause", 15 * 1000);<a name="line.5131"></a>
-<span class="sourceLineNo">5132</span><a name="line.5132"></a>
-<span class="sourceLineNo">5133</span>    // This size should make it so we always split using the addContent<a name="line.5133"></a>
-<span class="sourceLineNo">5134</span>    // below. After adding all data, the first region is 1.3M<a name="line.5134"></a>
-<span class="sourceLineNo">5135</span>    CONF.setLong(HConstants.HREGION_MAX_FILESIZE, 1024 * 128);<a name="line.5135"></a>
-<span class="sourceLineNo">5136</span>    return CONF;<a name="line.5136"></a>
-<span class="sourceLineNo">5137</span>  }<a name="line.5137"></a>
-<span class="sourceLineNo">5138</span><a name="line.5138"></a>
-<span class="sourceLineNo">5139</span>  /**<a name="line.5139"></a>
-<span class="sourceLineNo">5140</span>   * @param tableName<a name="line.5140"></a>
-<span class="sourceLineNo">5141</span>   * @param callingMethod<a name="line.5141"></a>
-<span class="sourceLineNo">5142</span>   * @param conf<a name="line.5142"></a>
-<span class="sourceLineNo">5143</span>   * @param families<a name="line.5143"></a>
-<span class="sourceLineNo">5144</span>   * @throws IOException<a name="line.5144"></a>
-<span class="sourceLineNo">5145</span>   * @return A region on which you must call<a name="line.5145"></a>
-<span class="sourceLineNo">5146</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5146"></a>
-<span class="sourceLineNo">5147</span>   */<a name="line.5147"></a>
-<span class="sourceLineNo">5148</span>  private static HRegion initHRegion(TableName tableName, String callingMethod, Configuration conf,<a name="line.5148"></a>
-<span class="sourceLineNo">5149</span>      byte[]... families) throws IOException {<a name="line.5149"></a>
-<span class="sourceLineNo">5150</span>    return initHRegion(tableName, null, null, callingMethod, conf, false, families);<a name="line.5150"></a>
-<span class="sourceLineNo">5151</span>  }<a name="line.5151"></a>
-<span class="sourceLineNo">5152</span><a name="line.5152"></a>
-<span class="sourceLineNo">5153</span>  /**<a name="line.5153"></a>
-<span class="sourceLineNo">5154</span>   * @param tableName<a name="line.5154"></a>
-<span class="sourceLineNo">5155</span>   * @param callingMethod<a name="line.5155"></a>
-<span class="sourceLineNo">5156</span>   * @param conf<a name="line.5156"></a>
-<span class="sourceLineNo">5157</span>   * @param isReadOnly<a name="line.5157"></a>
-<span class="sourceLineNo">5158</span>   * @param families<a name="line.5158"></a>
-<span class="sourceLineNo">5159</span>   * @throws IOException<a name="line.5159"></a>
-<span class="sourceLineNo">5160</span>   * @return A region on which you must call<a name="line.5160"></a>
-<span class="sourceLineNo">5161</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5161"></a>
-<span class="sourceLineNo">5162</span>   */<a name="line.5162"></a>
-<span class="sourceLineNo">5163</span>  private static HRegion initHRegion(TableName tableName, String callingMethod, Configuration conf,<a name="line.5163"></a>
-<span class="sourceLineNo">5164</span>      boolean isReadOnly, byte[]... families) throws IOException {<a name="line.5164"></a>
-<span class="sourceLineNo">5165</span>    return initHRegion(tableName, null, null, callingMethod, conf, isReadOnly, families);<a name="line.5165"></a>
-<span class="sourceLineNo">5166</span>  }<a name="line.5166"></a>
-<span class="sourceLineNo">5167</span><a name="line.5167"></a>
-<span class="sourceLineNo">5168</span>  public static HRegion initHRegion(TableName tableName, byte[] startKey, byte[] stopKey,<a name="line.5168"></a>
-<span class="sourceLineNo">5169</span>      String callingMethod, Configuration conf, boolean isReadOnly, byte[]... families)<a name="line.5169"></a>
-<span class="sourceLineNo">5170</span>      throws IOException {<a name="line.5170"></a>
-<span class="sourceLineNo">5171</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.5171"></a>
-<span class="sourceLineNo">5172</span>    HRegionInfo hri = new HRegionInfo(tableName, startKey, stopKey);<a name="line.5172"></a>
-<span class="sourceLineNo">5173</span>    final WAL wal = HBaseTestingUtility.createWal(conf, logDir, hri);<a name="line.5173"></a>
-<span class="sourceLineNo">5174</span>    return initHRegion(tableName, startKey, stopKey, callingMethod, conf, isReadOnly,<a name="line.5174"></a>
-<span class="sourceLineNo">5175</span>        Durability.SYNC_WAL, wal, families);<a name="line.5175"></a>
-<span class="sourceLineNo">5176</span>  }<a name="line.5176"></a>
-<span class="sourceLineNo">5177</span><a name="line.5177"></a>
-<span class="sourceLineNo">5178</span>  /**<a name="line.5178"></a>
-<span class="sourceLineNo">5179</span>   * @param tableName<a name="line.5179"></a>
-<span class="sourceLineNo">5180</span>   * @param startKey<a name="line.5180"></a>
-<span class="sourceLineNo">5181</span>   * @param stopKey<a name="line.5181"></a>
-<span class="sourceLineNo">5182</span>   * @param callingMethod<a name="line.5182"></a>
-<span class="sourceLineNo">5183</span>   * @param conf<a name="line.5183"></a>
-<span class="sourceLineNo">5184</span>   * @param isReadOnly<a name="line.5184"></a>
-<span class="sourceLineNo">5185</span>   * @param families<a name="line.5185"></a>
-<span class="sourceLineNo">5186</span>   * @throws IOException<a name="line.5186"></a>
-<span class="sourceLineNo">5187</span>   * @return A region on which you must call<a name="line.5187"></a>
-<span class="sourceLineNo">5188</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5188"></a>
-<span class="sourceLineNo">5189</span>   */<a name="line.5189"></a>
-<span class="sourceLineNo">5190</span>  public static HRegion initHRegion(TableName tableName, byte[] startKey, byte[] stopKey,<a name="line.5190"></a>
-<span class="sourceLineNo">5191</span>      String callingMethod, Configuration conf, boolean isReadOnly, Durability durability,<a name="line.5191"></a>
-<span class="sourceLineNo">5192</span>      WAL wal, byte[]... families) throws IOException {<a name="line.5192"></a>
-<span class="sourceLineNo">5193</span>    return TEST_UTIL.createLocalHRegion(tableName, startKey, stopKey,<a name="line.5193"></a>
-<span class="sourceLineNo">5194</span>        isReadOnly, durability, wal, families);<a name="line.5194"></a>
-<span class="sourceLineNo">5195</span>  }<a name="line.5195"></a>
-<span class="sourceLineNo">5196</span><a name="line.5196"></a>
-<span class="sourceLineNo">5197</span>  /**<a name="line.5197"></a>
-<span class="sourceLineNo">5198</span>   * Assert that the passed in Cell has expected contents for the specified row,<a name="line.5198"></a>
-<span class="sourceLineNo">5199</span>   * column &amp; timestamp.<a name="line.5199"></a>
-<span class="sourceLineNo">5200</span>   */<a name="line.5200"></a>
-<span class="sourceLineNo">5201</span>  private void checkOneCell(Cell kv, byte[] cf, int rowIdx, int colIdx, long ts) {<a name="line.5201"></a>
-<span class="sourceLineNo">5202</span>    String ctx = "rowIdx=" + rowIdx + "; colIdx=" + colIdx + "; ts=" + ts;<a name="line.5202"></a>
-<span class="sourceLineNo">5203</span>    assertEquals("Row mismatch which checking: " + ctx, "row:" + rowIdx,<a name="line.5203"></a>
-<span class="sourceLineNo">5204</span>        Bytes.toString(CellUtil.cloneRow(kv)));<a name="line.5204"></a>
-<span class="sourceLineNo">5205</span>    assertEquals("ColumnFamily mismatch while checking: " + ctx, Bytes.toString(cf),<a name="line.5205"></a>
-<span class="sourceLineNo">5206</span>        Bytes.toString(CellUtil.cloneFamily(kv)));<a name="line.5206"></a>
-<span class="sourceLineNo">5207</span>    assertEquals("Column qualifier mismatch while checking: " + ctx, "column:" + colIdx,<a name="line.5207"></a>
-<span class="sourceLineNo">5208</span>        Bytes.toString(CellUtil.cloneQualifier(kv)));<a name="line.5208"></a>
-<span class="sourceLineNo">5209</span>    assertEquals("Timestamp mismatch while checking: " + ctx, ts, kv.getTimestamp());<a name="line.5209"></a>
-<span class="sourceLineNo">5210</span>    assertEquals("Value mismatch while checking: " + ctx, "value-version-" + ts,<a name="line.5210"></a>
-<span class="sourceLineNo">5211</span>        Bytes.toString(CellUtil.cloneValue(kv)));<a name="line.5211"></a>
-<span class="sourceLineNo">5212</span>  }<a name="line.5212"></a>
-<span class="sourceLineNo">5213</span><a name="line.5213"></a>
-<span class="sourceLineNo">5214</span>  @Test (timeout=60000)<a name="line.5214"></a>
-<span class="sourceLineNo">5215</span>  public void testReverseScanner_FromMemStore_SingleCF_Normal()<a name="line.5215"></a>
-<span class="sourceLineNo">5216</span>      throws IOException {<a name="line.5216"></a>
-<span class="sourceLineNo">5217</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5217"></a>
-<span class="sourceLineNo">5218</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5218"></a>
-<span class="sourceLineNo">5219</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5219"></a>
-<span class="sourceLineNo">5220</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5220"></a>
-<span class="sourceLineNo">5221</span>    byte[][] families = { cf };<a name="line.5221"></a>
-<span class="sourceLineNo">5222</span>    byte[] col = Bytes.toBytes("C");<a name="line.5222"></a>
-<span class="sourceLineNo">5223</span>    long ts = 1;<a name="line.5223"></a>
-<span class="sourceLineNo">5224</span>    String method = this.getName();<a name="line.5224"></a>
-<span class="sourceLineNo">5225</span>    this.region = initHRegion(tableName, method, families);<a name="line.5225"></a>
-<span class="sourceLineNo">5226</span>    try {<a name="line.5226"></a>
-<span class="sourceLineNo">5227</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5227"></a>
-<span class="sourceLineNo">5228</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5228"></a>
-<span class="sourceLineNo">5229</span>          null);<a name="line.5229"></a>
-<span class="sourceLineNo">5230</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5230"></a>
-<span class="sourceLineNo">5231</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5231"></a>
-<span class="sourceLineNo">5232</span>      Put put = null;<a name="line.5232"></a>
-<span class="sourceLineNo">5233</span>      put = new Put(rowC);<a name="line.5233"></a>
-<span class="sourceLineNo">5234</span>      put.add(kv1);<a name="line.5234"></a>
-<span class="sourceLineNo">5235</span>      put.add(kv11);<a name="line.5235"></a>
-<span class="sourceLineNo">5236</span>      region.put(put);<a name="line.5236"></a>
-<span class="sourceLineNo">5237</span>      put = new Put(rowA);<a name="line.5237"></a>
-<span class="sourceLineNo">5238</span>      put.add(kv2);<a name="line.5238"></a>
-<span class="sourceLineNo">5239</span>      region.put(put);<a name="line.5239"></a>
-<span class="sourceLineNo">5240</span>      put = new Put(rowB);<a name="line.5240"></a>
-<span class="sourceLineNo">5241</span>      put.add(kv3);<a name="line.5241"></a>
-<span class="sourceLineNo">5242</span>      region.put(put);<a name="line.5242"></a>
-<span class="sourceLineNo">5243</span><a name="line.5243"></a>
-<span class="sourceLineNo">5244</span>      Scan scan = new Scan(rowC);<a name="line.5244"></a>
-<span class="sourceLineNo">5245</span>      scan.setMaxVersions(5);<a name="line.5245"></a>
-<span class="sourceLineNo">5246</span>      scan.setReversed(true);<a name="line.5246"></a>
-<span class="sourceLineNo">5247</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5247"></a>
-<span class="sourceLineNo">5248</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5248"></a>
-<span class="sourceLineNo">5249</span>      boolean hasNext = scanner.next(currRow);<a name="line.5249"></a>
-<span class="sourceLineNo">5250</span>      assertEquals(2, currRow.size());<a name="line.5250"></a>
-<span class="sourceLineNo">5251</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5251"></a>
-<span class="sourceLineNo">5252</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5252"></a>
-<span class="sourceLineNo">5253</span>      assertTrue(hasNext);<a name="line.5253"></a>
-<span class="sourceLineNo">5254</span>      currRow.clear();<a name="line.5254"></a>
-<span class="sourceLineNo">5255</span>      hasNext = scanner.next(currRow);<a name="line.5255"></a>
-<span class="sourceLineNo">5256</span>      assertEquals(1, currRow.size());<a name="line.5256"></a>
-<span class="sourceLineNo">5257</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5257"></a>
-<span class="sourceLineNo">5258</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5258"></a>
-<span class="sourceLineNo">5259</span>      assertTrue(hasNext);<a name="line.5259"></a>
-<span class="sourceLineNo">5260</span>      currRow.clear();<a name="line.5260"></a>
-<span class="sourceLineNo">5261</span>      hasNext = scanner.next(currRow);<a name="line.5261"></a>
-<span class="sourceLineNo">5262</span>      assertEquals(1, currRow.size());<a name="line.5262"></a>
-<span class="sourceLineNo">5263</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5263"></a>
-<span class="sourceLineNo">5264</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5264"></a>
-<span class="sourceLineNo">5265</span>      assertFalse(hasNext);<a name="line.5265"></a>
-<span class="sourceLineNo">5266</span>      scanner.close();<a name="line.5266"></a>
-<span class="sourceLineNo">5267</span>    } finally {<a name="line.5267"></a>
-<span class="sourceLineNo">5268</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5268"></a>
-<span class="sourceLineNo">5269</span>      this.region = null;<a name="line.5269"></a>
-<span class="sourceLineNo">5270</span>    }<a name="line.5270"></a>
-<span class="sourceLineNo">5271</span>  }<a name="line.5271"></a>
-<span class="sourceLineNo">5272</span><a name="line.5272"></a>
-<span class="sourceLineNo">5273</span>  @Test (timeout=60000)<a name="line.5273"></a>
-<span class="sourceLineNo">5274</span>  public void testReverseScanner_FromMemStore_SingleCF_LargerKey()<a name="line.5274"></a>
-<span class="sourceLineNo">5275</span>      throws IOException {<a name="line.5275"></a>
-<span class="sourceLineNo">5276</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5276"></a>
-<span class="sourceLineNo">5277</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5277"></a>
-<span class="sourceLineNo">5278</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5278"></a>
-<span class="sourceLineNo">5279</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5279"></a>
-<span class="sourceLineNo">5280</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5280"></a>
-<span class="sourceLineNo">5281</span>    byte[][] families = { cf };<a name="line.5281"></a>
-<span class="sourceLineNo">5282</span>    byte[] col = Bytes.toBytes("C");<a name="line.5282"></a>
-<span class="sourceLineNo">5283</span>    long ts = 1;<a name="line.5283"></a>
-<span class="sourceLineNo">5284</span>    String method = this.getName();<a name="line.5284"></a>
-<span class="sourceLineNo">5285</span>    this.region = initHRegion(tableName, method, families);<a name="line.5285"></a>
-<span class="sourceLineNo">5286</span>    try {<a name="line.5286"></a>
-<span class="sourceLineNo">5287</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5287"></a>
-<span class="sourceLineNo">5288</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5288"></a>
-<span class="sourceLineNo">5289</span>          null);<a name="line.5289"></a>
-<span class="sourceLineNo">5290</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5290"></a>
-<span class="sourceLineNo">5291</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5291"></a>
-<span class="sourceLineNo">5292</span>      Put put = null;<a name="line.5292"></a>
-<span class="sourceLineNo">5293</span>      put = new Put(rowC);<a name="line.5293"></a>
-<span class="sourceLineNo">5294</span>      put.add(kv1);<a name="line.5294"></a>
-<span class="sourceLineNo">5295</span>      put.add(kv11);<a name="line.5295"></a>
-<span class="sourceLineNo">5296</span>      region.put(put);<a name="line.5296"></a>
-<span class="sourceLineNo">5297</span>      put = new Put(rowA);<a name="line.5297"></a>
-<span class="sourceLineNo">5298</span>      put.add(kv2);<a name="line.5298"></a>
-<span class="sourceLineNo">5299</span>      region.put(put);<a name="line.5299"></a>
-<span class="sourceLineNo">5300</span>      put = new Put(rowB);<a name="line.5300"></a>
-<span class="sourceLineNo">5301</span>      put.add(kv3);<a name="line.5301"></a>
-<span class="sourceLineNo">5302</span>      region.put(put);<a name="line.5302"></a>
-<span class="sourceLineNo">5303</span><a name="line.5303"></a>
-<span class="sourceLineNo">5304</span>      Scan scan = new Scan(rowD);<a name="line.5304"></a>
-<span class="sourceLineNo">5305</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5305"></a>
-<span class="sourceLineNo">5306</span>      scan.setReversed(true);<a name="line.5306"></a>
-<span class="sourceLineNo">5307</span>      scan.setMaxVersions(5);<a name="line.5307"></a>
-<span class="sourceLineNo">5308</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5308"></a>
-<span class="sourceLineNo">5309</span>      boolean hasNext = scanner.next(currRow);<a name="line.5309"></a>
-<span class="sourceLineNo">5310</span>      assertEquals(2, currRow.size());<a name="line.5310"></a>
-<span class="sourceLineNo">5311</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5311"></a>
-<span class="sourceLineNo">5312</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5312"></a>
-<span class="sourceLineNo">5313</span>      assertTrue(hasNext);<a name="line.5313"></a>
-<span class="sourceLineNo">5314</span>      currRow.clear();<a name="line.5314"></a>
-<span class="sourceLineNo">5315</span>      hasNext = scanner.next(currRow);<a name="line.5315"></a>
-<span class="sourceLineNo">5316</span>      assertEquals(1, currRow.size());<a name="line.5316"></a>
-<span class="sourceLineNo">5317</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5317"></a>
-<span class="sourceLineNo">5318</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5318"></a>
-<span class="sourceLineNo">5319</span>      assertTrue(hasNext);<a name="line.5319"></a>
-<span class="sourceLineNo">5320</span>      currRow.clear();<a name="line.5320"></a>
-<span class="sourceLineNo">5321</span>      hasNext = scanner.next(currRow);<a name="line.5321"></a>
-<span class="sourceLineNo">5322</span>      assertEquals(1, currRow.size());<a name="line.5322"></a>
-<span class="sourceLineNo">5323</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5323"></a>
-<span class="sourceLineNo">5324</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5324"></a>
-<span class="sourceLineNo">5325</span>      assertFalse(hasNext);<a name="line.5325"></a>
-<span class="sourceLineNo">5326</span>      scanner.close();<a name="line.5326"></a>
-<span class="sourceLineNo">5327</span>    } finally {<a name="line.5327"></a>
-<span class="sourceLineNo">5328</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5328"></a>
-<span class="sourceLineNo">5329</span>      this.region = null;<a name="line.5329"></a>
-<span class="sourceLineNo">5330</span>    }<a name="line.5330"></a>
-<span class="sourceLineNo">5331</span>  }<a name="line.5331"></a>
-<span class="sourceLineNo">5332</span><a name="line.5332"></a>
-<span class="sourceLineNo">5333</span>  @Test (timeout=60000)<a name="line.5333"></a>
-<span class="sourceLineNo">5334</span>  public void testReverseScanner_FromMemStore_SingleCF_FullScan()<a name="line.5334"></a>
-<span class="sourceLineNo">5335</span>      throws IOException {<a name="line.5335"></a>
-<span class="sourceLineNo">5336</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5336"></a>
-<span class="sourceLineNo">5337</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5337"></a>
-<span class="sourceLineNo">5338</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5338"></a>
-<span class="sourceLineNo">5339</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5339"></a>
-<span class="sourceLineNo">5340</span>    byte[][] families = { cf };<a name="line.5340"></a>
-<span class="sourceLineNo">5341</span>    byte[] col = Bytes.toBytes("C");<a name="line.5341"></a>
-<span class="sourceLineNo">5342</span>    long ts = 1;<a name="line.5342"></a>
-<span class="sourceLineNo">5343</span>    String method = this.getName();<a name="line.5343"></a>
-<span class="sourceLineNo">5344</span>    this.region = initHRegion(tableName, method, families);<a name="line.5344"></a>
-<span class="sourceLineNo">5345</span>    try {<a name="line.5345"></a>
-<span class="sourceLineNo">5346</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5346"></a>
-<span class="sourceLineNo">5347</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5347"></a>
-<span class="sourceLineNo">5348</span>          null);<a name="line.5348"></a>
-<span class="sourceLineNo">5349</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5349"></a>
-<span class="sourceLineNo">5350</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5350"></a>
-<span class="sourceLineNo">5351</span>      Put put = null;<a name="line.5351"></a>
-<span class="sourceLineNo">5352</span>      put = new Put(rowC);<a name="line.5352"></a>
-<span class="sourceLineNo">5353</span>      put.add(kv1);<a name="line.5353"></a>
-<span class="sourceLineNo">5354</span>      put.add(kv11);<a name="line.5354"></a>
-<span class="sourceLineNo">5355</span>      region.put(put);<a name="line.5355"></a>
-<span class="sourceLineNo">5356</span>      put = new Put(rowA);<a name="line.5356"></a>
-<span class="sourceLineNo">5357</span>      put.add(kv2);<a name="line.5357"></a>
-<span class="sourceLineNo">5358</span>      region.put(put);<a name="line.5358"></a>
-<span class="sourceLineNo">5359</span>      put = new Put(rowB);<a name="line.5359"></a>
-<span class="sourceLineNo">5360</span>      put.add(kv3);<a name="line.5360"></a>
-<span class="sourceLineNo">5361</span>      region.put(put);<a name="line.5361"></a>
-<span class="sourceLineNo">5362</span>      Scan scan = new Scan();<a name="line.5362"></a>
-<span class="sourceLineNo">5363</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5363"></a>
-<span class="sourceLineNo">5364</span>      scan.setReversed(true);<a name="line.5364"></a>
-<span class="sourceLineNo">5365</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5365"></a>
-<span class="sourceLineNo">5366</span>      boolean hasNext = scanner.next(currRow);<a name="line.5366"></a>
-<span class="sourceLineNo">5367</span>      assertEquals(1, currRow.size());<a name="line.5367"></a>
-<span class="sourceLineNo">5368</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5368"></a>
-<span class="sourceLineNo">5369</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5369"></a>
-<span class="sourceLineNo">5370</span>      assertTrue(hasNext);<a name="line.5370"></a>
-<span class="sourceLineNo">5371</span>      currRow.clear();<a name="line.5371"></a>
-<span class="sourceLineNo">5372</span>      hasNext = scanner.next(currRow);<a name="line.5372"></a>
-<span class="sourceLineNo">5373</span>      assertEquals(1, currRow.size());<a name="line.5373"></a>
-<span class="sourceLineNo">5374</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5374"></a>
-<span class="sourceLineNo">5375</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5375"></a>
-<span class="sourceLineNo">5376</span>      assertTrue(hasNext);<a name="line.5376"></a>
-<span class="sourceLineNo">5377</span>      currRow.clear();<a name="line.5377"></a>
-<span class="sourceLineNo">5378</span>      hasNext = scanner.next(currRow);<a name="line.5378"></a>
-<span class="sourceLineNo">5379</span>      assertEquals(1, currRow.size());<a name="line.5379"></a>
-<span class="sourceLineNo">5380</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5380"></a>
-<span class="sourceLineNo">5381</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5381"></a>
-<span class="sourceLineNo">5382</span>      assertFalse(hasNext);<a name="line.5382"></a>
-<span class="sourceLineNo">5383</span>      scanner.close();<a name="line.5383"></a>
-<span class="sourceLineNo">5384</span>    } finally {<a name="line.5384"></a>
-<span class="sourceLineNo">5385</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5385"></a>
-<span class="sourceLineNo">5386</span>      this.region = null;<a name="line.5386"></a>
-<span class="sourceLineNo">5387</span>    }<a name="line.5387"></a>
-<span class="sourceLineNo">5388</span>  }<a name="line.5388"></a>
-<span class="sourceLineNo">5389</span><a name="line.5389"></a>
-<span class="sourceLineNo">5390</span>  @Test (timeout=60000)<a name="line.5390"></a>
-<span class="sourceLineNo">5391</span>  public void testReverseScanner_moreRowsMayExistAfter() throws IOException {<a name="line.5391"></a>
-<span class="sourceLineNo">5392</span>    // case for "INCLUDE_AND_SEEK_NEXT_ROW &amp; SEEK_NEXT_ROW" endless loop<a name="line.5392"></a>
-<span class="sourceLineNo">5393</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5393"></a>
-<span class="sourceLineNo">5394</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5394"></a>
-<span class="sourceLineNo">5395</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5395"></a>
-<span class="sourceLineNo">5396</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5396"></a>
-<span class="sourceLineNo">5397</span>    byte[] rowE = Bytes.toBytes("rowE");<a name="line.5397"></a>
-<span class="sourceLineNo">5398</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5398"></a>
-<span class="sourceLineNo">5399</span>    byte[][] families = { cf };<a name="line.5399"></a>
-<span class="sourceLineNo">5400</span>    byte[] col1 = Bytes.toBytes("col1");<a name="line.5400"></a>
-<span class="sourceLineNo">5401</span>    byte[] col2 = Bytes.toBytes("col2");<a name="line.5401"></a>
-<span class="sourceLineNo">5402</span>    long ts = 1;<a name="line.5402"></a>
-<span class="sourceLineNo">5403</span>    String method = this.getName();<a name="line.5403"></a>
-<span class="sourceLineNo">5404</span>    this.region = initHRegion(tableName, method, families);<a name="line.5404"></a>
-<span class="sourceLineNo">5405</span>    try {<a name="line.5405"></a>
-<span class="sourceLineNo">5406</span>      KeyValue kv1 = new KeyValue(rowA, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5406"></a>
-<span class="sourceLineNo">5407</span>      KeyValue kv2 = new KeyValue(rowB, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5407"></a>
-<span class="sourceLineNo">5408</span>      KeyValue kv3 = new KeyValue(rowC, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5408"></a>
-<span class="sourceLineNo">5409</span>      KeyValue kv4_1 = new KeyValue(rowD, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5409"></a>
-<span class="sourceLineNo">5410</span>      KeyValue kv4_2 = new KeyValue(rowD, cf, col2, ts, KeyValue.Type.Put, null);<a name="line.5410"></a>
-<span class="sourceLineNo">5411</span>      KeyValue kv5 = new KeyValue(rowE, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5411"></a>
-<span class="sourceLineNo">5412</span>      Put put = null;<a name="line.5412"></a>
-<span class="sourceLineNo">5413</span>      put = new Put(rowA);<a name="line.5413"></a>
-<span class="sourceLineNo">5414</span>      put.add(kv1);<a name="line.5414"></a>
-<span class="sourceLineNo">5415</span>      region.put(put);<a name="line.5415"></a>
-<span class="sourceLineNo">5416</span>      put = new Put(rowB);<a name="line.5416"></a>
-<span class="sourceLineNo">5417</span>      put.add(kv2);<a name="line.5417"></a>
-<span class="sourceLineNo">5418</span>      region.put(put);<a name="line.5418"></a>
-<span class="sourceLineNo">5419</span>      put = new Put(rowC);<a name="line.5419"></a>
-<span class="sourceLineNo">5420</span>      put.add(kv3);<a name="line.5420"></a>
-<span class="sourceLineNo">5421</span>      region.put(put);<a name="line.5421"></a>
-<span class="sourceLineNo">5422</span>      put = new Put(rowD);<a name="line.5422"></a>
-<span class="sourceLineNo">5423</span>      put.add(kv4_1);<a name="line.5423"></a>
-<span class="sourceLineNo">5424</span>      region.put(put);<a name="line.5424"></a>
-<span class="sourceLineNo">5425</span>      put = new Put(rowD);<a name="line.5425"></a>
-<span class="sourceLineNo">5426</span>      put.add(kv4_2);<a name="line.5426"></a>
-<span class="sourceLineNo">5427</span>      region.put(put);<a name="line.5427"></a>
-<span class="sourceLineNo">5428</span>      put = new Put(rowE);<a name="line.5428"></a>
-<span class="sourceLineNo">5429</span>      put.add(kv5);<a name="line.5429"></a>
-<span class="sourceLineNo">5430</span>      region.put(put);<a name="line.5430"></a>
-<span class="sourceLineNo">5431</span>      region.flush(true);<a name="line.5431"></a>
-<span class="sourceLineNo">5432</span>      Scan scan = new Scan(rowD, rowA);<a name="line.5432"></a>
-<span class="sourceLineNo">5433</span>      scan.addColumn(families[0], col1);<a name="line.5433"></a>
-<span class="sourceLineNo">5434</span>      scan.setReversed(true);<a name="line.5434"></a>
-<span class="sourceLineNo">5435</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5435"></a>
-<span class="sourceLineNo">5436</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5436"></a>
-<span class="sourceLineNo">5437</span>      boolean hasNext = scanner.next(currRow);<a name="line.5437"></a>
-<span class="sourceLineNo">5438</span>      assertEquals(1, currRow.size());<a name="line.5438"></a>
-<span class="sourceLineNo">5439</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5439"></a>
-<span class="sourceLineNo">5440</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5440"></a>
-<span class="sourceLineNo">5441</span>      assertTrue(hasNext);<a name="line.5441"></a>
-<span class="sourceLineNo">5442</span>      currRow.clear();<a name="line.5442"></a>
-<span class="sourceLineNo">5443</span>      hasNext = scanner.next(currRow);<a name="line.5443"></a>
-<span class="sourceLineNo">5444</span>      assertEquals(1, currRow.size());<a name="line.5444"></a>
-<span class="sourceLineNo">5445</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5445"></a>
-<span class="sourceLineNo">5446</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5446"></a>
-<span class="sourceLineNo">5447</span>      assertTrue(hasNext);<a name="line.5447"></a>
-<span class="sourceLineNo">5448</span>      currRow.clear();<a name="line.5448"></a>
-<span class="sourceLineNo">5449</span>      hasNext = scanner.next(currRow);<a name="line.5449"></a>
-<span class="sourceLineNo">5450</span>      assertEquals(1, currRow.size());<a name="line.5450"></a>
-<span class="sourceLineNo">5451</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5451"></a>
-<span class="sourceLineNo">5452</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5452"></a>
-<span class="sourceLineNo">5453</span>      assertFalse(hasNext);<a name="line.5453"></a>
-<span class="sourceLineNo">5454</span>      scanner.close();<a name="line.5454"></a>
-<span class="sourceLineNo">5455</span><a name="line.5455"></a>
-<span class="sourceLineNo">5456</span>      scan = new Scan(rowD, rowA);<a name="line.5456"></a>
-<span class="sourceLineNo">5457</span>      scan.addColumn(families[0], col2);<a name="line.5457"></a>
-<span class="sourceLineNo">5458</span>      scan.setReversed(true);<a name="line.5458"></a>
-<span class="sourceLineNo">5459</span>      currRow.clear();<a name="line.5459"></a>
-<span class="sourceLineNo">5460</span>      scanner = region.getScanner(scan);<a name="line.5460"></a>
-<span class="sourceLineNo">5461</span>      hasNext = scanner.next(currRow);<a name="line.5461"></a>
-<span class="sourceLineNo">5462</span>      assertEquals(1, currRow.size());<a name="line.5462"></a>
-<span class="sourceLineNo">5463</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5463"></a>
-<span class="sourceLineNo">5464</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5464"></a>
-<span class="sourceLineNo">5465</span>      scanner.close();<a name="line.5465"></a>
-<span class="sourceLineNo">5466</span>    } finally {<a name="line.5466"></a>
-<span class="sourceLineNo">5467</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5467"></a>
-<span class="sourceLineNo">5468</span>      this.region = null;<a name="line.5468"></a>
-<span class="sourceLineNo">5469</span>    }<a name="line.5469"></a>
-<span class="sourceLineNo">5470</span>  }<a name="line.5470"></a>
-<span class="sourceLineNo">5471</span><a name="line.5471"></a>
-<span class="sourceLineNo">5472</span>  @Test (timeout=60000)<a name="line.5472"></a>
-<span class="sourceLineNo">5473</span>  public void testReverseScanner_smaller_blocksize() throws IOException {<a name="line.5473"></a>
-<span class="sourceLineNo">5474</span>    // case to ensure no conflict with HFile index optimization<a name="line.5474"></a>
-<span class="sourceLineNo">5475</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5475"></a>
-<span class="sourceLineNo">5476</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5476"></a>
-<span class="sourceLineNo">5477</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5477"></a>
-<span class="sourceLineNo">5478</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5478"></a>
-<span class="sourceLineNo">5479</span>    byte[] rowE = Bytes.toBytes("rowE");<a name="line.5479"></a>
-<span class="sourceLineNo">5480</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5480"></a>
-<span class="sourceLineNo">5481</span>    byte[][] families = { cf };<a name="line.5481"></a>
-<span class="sourceLineNo">5482</span>    byte[] col1 = Bytes.toBytes("col1");<a name="line.5482"></a>
-<span class="sourceLineNo">5483</span>    byte[] col2 = Bytes.toBytes("col2");<a name="line.5483"></a>
-<span class="sourceLineNo">5484</span>    long ts = 1;<a name="line.5484"></a>
-<span class="sourceLineNo">5485</span>    String method = this.getName();<a name="line.5485"></a>
-<span class="sourceLineNo">5486</span>    HBaseConfiguration config = new HBaseConfiguration();<a name="line.5486"></a>
-<span class="sourceLineNo">5487</span>    config.setInt("test.block.size", 1);<a name="line.5487"></a>
-<span class="sourceLineNo">5488</span>    this.region = initHRegion(tableName, method, config, families);<a name="line.5488"></a>
-<span class="sourceLineNo">5489</span>    try {<a name="line.5489"></a>
-<span class="sourceLineNo">5490</span>      KeyValue kv1 = new KeyValue(rowA, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5490"></a>
-<span class="sourceLineNo">5491</span>      KeyValue kv2 = new KeyValue(rowB, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5491"></a>
-<span class="sourceLineNo">5492</span>      KeyValue kv3 = new KeyValue(rowC, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5492"></a>
-<span class="sourceLineNo">5493</span>      KeyValue kv4_1 = new KeyValue(rowD, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5493"></a>
-<span class="sourceLineNo">5494</span>      KeyValue kv4_2 = new KeyValue(rowD, cf, col2, ts, KeyValue.Type.Put, null);<a name="line.5494"></a>
-<span class="sourceLineNo">5495</span>      KeyValue kv5 = new KeyValue(rowE, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5495"></a>
-<span class="sourceLineNo">5496</span>      Put put = null;<a name="line.5496"></a>
-<span class="sourceLineNo">5497</span>      put = new Put(rowA);<a name="line.5497"></a>
-<span class="sourceLineNo">5498</span>      put.add(kv1);<a name="line.5498"></a>
-<span class="sourceLineNo">5499</span>      region.put(put);<a name="line.5499"></a>
-<span class="sourceLineNo">5500</span>      put = new Put(rowB);<a name="line.5500"></a>
-<span class="sourceLineNo">5501</span>      put.add(kv2);<a name="line.5501"></a>
-<span class="sourceLineNo">5502</span>      region.put(put);<a name="line.5502"></a>
-<span class="sourceLineNo">5503</span>      put = new Put(rowC);<a name="line.5503"></a>
-<span class="sourceLineNo">5504</span>      put.add(kv3);<a name="line.5504"></a>
-<span class="sourceLineNo">5505</span>      region.put(put);<a name="line.5505"></a>
-<span class="sourceLineNo">5506</span>      put = new Put(rowD);<a name="line.5506"></a>
-<span class="sourceLineNo">5507</span>      put.add(kv4_1);<a name="line.5507"></a>
-<span class="sourceLineNo">5508</span>      region.put(put);<a name="line.5508"></a>
-<span class="sourceLineNo">5509</span>      put = new Put(rowD);<a name="line.5509"></a>
-<span class="sourceLineNo">5510</span>      put.add(kv4_2);<a name="line.5510"></a>
-<span class="sourceLineNo">5511</span>      region.put(put);<a name="line.5511"></a>
-<span class="sourceLineNo">5512</span>      put = new Put(rowE);<a name="line.5512"></a>
-<span class="sourceLineNo">5513</span>      put.add(kv5);<a name="line.5513"></a>
-<span class="sourceLineNo">5514</span>      region.put(put);<a name="line.5514"></a>
-<span class="sourceLineNo">5515</span>      region.flush(true);<a name="line.5515"></a>
-<span class="sourceLineNo">5516</span>      Scan scan = new Scan(rowD, rowA);<a name="line.5516"></a>
-<span class="sourceLineNo">5517</span>      scan.addColumn(families[0], col1);<a name="line.5517"></a>
-<span class="sourceLineNo">5518</span>      scan.setReversed(true);<a name="line.5518"></a>
-<span class="sourceLineNo">5519</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5519"></a>
-<span class="sourceLineNo">5520</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5520"></a>
-<span class="sourceLineNo">5521</span>      boolean hasNext = scanner.next(currRow);<a name="line.5521"></a>
-<span class="sourceLineNo">5522</span>      assertEquals(1, currRow.size());<a name="line.5522"></a>
-<span class="sourceLineNo">5523</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5523"></a>
-<span class="sourceLineNo">5524</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5524"></a>
-<span class="sourceLineNo">5525</span>      assertTrue(hasNext);<a name="line.5525"></a>
-<span class="sourceLineNo">5526</span>      currRow.clear();<a name="line.5526"></a>
-<span class="sourceLineNo">5527</span>      hasNext = scanner.next(currRow);<a name="line.5527"></a>
-<span class="sourceLineNo">5528</span>      assertEquals(1, currRow.size());<a name="line.5528"></a>
-<span class="sourceLineNo">5529</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5529"></a>
-<span class="sourceLineNo">5530</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5530"></a>
-<span class="sourceLineNo">5531</span>      assertTrue(hasNext);<a name="line.5531"></a>
-<span class="sourceLineNo">5532</span>      currRow.clear();<a name="line.5532"></a>
-<span class="sourceLineNo">5533</span>      hasNext = scanner.next(currRow);<a name="line.5533"></a>
-<span class="sourceLineNo">5534</span>      assertEquals(1, currRow.size());<a name="line.5534"></a>
-<span class="sourceLineNo">5535</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5535"></a>
-<span class="sourceLineNo">5536</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5536"></a>
-<span class="sourceLineNo">5537</span>      assertFalse(hasNext);<a name="line.5537"></a>
-<span class="sourceLineNo">5538</span>      scanner.close();<a name="line.5538"></a>
-<span class="sourceLineNo">5539</span><a name="line.5539"></a>
-<span class="sourceLineNo">5540</span>      scan = new Scan(rowD, rowA);<a name="line.5540"></a>
-<span class="sourceLineNo">5541</span>      scan.addColumn(families[0], col2);<a name="line.5541"></a>
-<span class="sourceLineNo">5542</span>      scan.setReversed(true);<a name="line.5542"></a>
-<span class="sourceLineNo">5543</span>      currRow.clear();<a name="line.5543"></a>
-<span class="sourceLineNo">5544</span>      scanner = region.getScanner(scan);<a name="line.5544"></a>
-<span class="sourceLineNo">5545</span>      hasNext = scanner.next(currRow);<a name="line.5545"></a>
-<span class="sourceLineNo">5546</span>      assertEquals(1, currRow.size());<a name="line.5546"></a>
-<span class="sourceLineNo">5547</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5547"></a>
-<span class="sourceLineNo">5548</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5548"></a>
-<span class="sourceLineNo">5549</span>      scanner.close();<a name="line.5549"></a>
-<span class="sourceLineNo">5550</span>    } finally {<a name="line.5550"></a>
-<span class="sourceLineNo">5551</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5551"></a>
-<span class="sourceLineNo">5552</span>      this.region = null;<a name="line.5552"></a>
-<span class="sourceLineNo">5553</span>    }<a name="line.5553"></a>
-<span class="sourceLineNo">5554</span>  }<a name="line.5554"></a>
-<span class="sourceLineNo">5555</span><a name="line.5555"></a>
-<span class="sourceLineNo">5556</span>  @Test (timeout=60000)<a name="line.5556"></a>
-<span class="sourceLineNo">5557</span>  public void testReverseScanner_FromMemStoreAndHFiles_MultiCFs1()<a name="line.5557"></a>
-<span class="sourceLineNo">5558</span>      throws IOException {<a name="line.5558"></a>
-<span class="sourceLineNo">5559</span>    byte[] row0 = Bytes.toBytes("row0"); // 1 kv<a name="line.5559"></a>
-<span class="sourceLineNo">5560</span>    byte[] row1 = Bytes.toBytes("row1"); // 2 kv<a name="line.5560"></a>
-<span class="sourceLineNo">5561</span>    byte[] row2 = Bytes.toBytes("row2"); // 4 kv<a name="line.5561"></a>
-<span class="sourceLineNo">5562</span>    byte[] row3 = Bytes.toBytes("row3"); // 2 kv<a name="line.5562"></a>
-<span class="sourceLineNo">5563</span>    byte[] row4 = Bytes.toBytes("row4"); // 5 kv<a name="line.5563"></a>
-<span class="sourceLineNo">5564</span>    byte[] row5 = Bytes.toBytes("row5"); // 2 kv<a name="line.5564"></a>
-<span class="sourceLineNo">5565</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5565"></a>
-<span class="sourceLineNo">5566</span>    byte[] cf2 = Bytes.toBytes("CF2");<a name="line.5566"></a>
-<span class="sourceLineNo">5567</span>    byte[] cf3 = Bytes.toBytes("CF3");<a name="line.5567"></a>
-<span class="sourceLineNo">5568</span>    byte[][] families = { cf1, cf2, cf3 };<a name="line.5568"></a>
-<span class="sourceLineNo">5569</span>    byte[] col = Bytes.toBytes("C");<a name="line.5569"></a>
-<span class="sourceLineNo">5570</span>    long ts = 1;<a name="line.5570"></a>
-<span class="sourceLineNo">5571</span>    String method = this.getName();<a name="line.5571"></a>
-<span class="sourceLineNo">5572</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5572"></a>
-<span class="sourceLineNo">5573</span>    // disable compactions in this test.<a name="line.5573"></a>
-<span class="sourceLineNo">5574</span>    conf.setInt("hbase.hstore.compactionThreshold", 10000);<a name="line.5574"></a>
-<span class="sourceLineNo">5575</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5575"></a>
-<span class="sourceLineNo">5576</span>    try {<a name="line.5576"></a>
-<span class="sourceLineNo">5577</span>      // kv naming style: kv(row number) totalKvCountInThisRow seq no<a name="line.5577"></a>
-<span class="sourceLineNo">5578</span>      KeyValue kv0_1_1 = new KeyValue(row0, cf1, col, ts, KeyValue.Type.Put,<a name="line.5578"></a>
-<span class="sourceLineNo">5579</span>          null);<a name="line.5579"></a>
-<span class="sourceLineNo">5580</span>      KeyValue kv1_2_1 = new KeyValue(row1, cf2, col, ts, KeyValue.Type.Put,<a name="line.5580"></a>
-<span class="sourceLineNo">5581</span>          null);<a name="line.5581"></a>
-<span class="sourceLineNo">5582</span>      KeyValue kv1_2_2 = new KeyValue(row1, cf1, col, ts + 1,<a name="line.5582"></a>
-<span class="sourceLineNo">5583</span>          KeyValue.Type.Put, null);<a name="line.5583"></a>
-<span class="sourceLineNo">5584</span>      KeyValue kv2_4_1 = new KeyValue(row2, cf2, col, ts, KeyValue.Type.Put,<a name="line.5584"></a>
-<span class="sourceLineNo">5585</span>          null);<a name="line.5585"></a>
-<span class="sourceLineNo">5586</span>      KeyValue kv2_4_2 = new KeyValue(row2, cf1, col, ts, KeyValue.Type.Put,<a name="line.5586"></a>
-<span class="sourceLineNo">5587</span>          null);<a name="line.5587"></a>
-<span class="sourceLineNo">5588</span>      KeyValue kv2_4_3 = new KeyValue(row2, cf3, col, ts, KeyValue.Type.Put,<a name="line.5588"></a>
-<span class="sourceLineNo">5589</span>          null);<a name="line.5589"></a>
-<span class="sourceLineNo">5590</span>      KeyValue kv2_4_4 = new KeyValue(row2, cf1, col, ts + 4,<a name="line.5590"></a>
-<span class="sourceLineNo">5591</span>          KeyValue.Type.Put, null);<a name="line.5591"></a>
-<span class="sourceLineNo">5592</span>      KeyValue kv3_2_1 = new KeyValue(row3, cf2, col, ts, KeyValue.Type.Put,<a name="line.5592"></a>
-<span class="sourceLineNo">5593</span>          null);<a name="line.5593"></a>
-<span class="sourceLineNo">5594</span>      KeyValue kv3_2_2 = new KeyValue(row3, cf1, col, ts + 4,<a name="line.5594"></a>
-<span class="sourceLineNo">5595</span>          KeyValue.Type.Put, null);<a name="line.5595"></a>
-<span class="sourceLineNo">5596</span>      KeyValue kv4_5_1 = new KeyValue(row4, cf1, col, ts, KeyValue.Type.Put,<a name="line.5596"></a>
-<span class="sourceLineNo">5597</span>          null);<a name="line.5597"></a>
-<span class="sourceLineNo">5598</span>      KeyValue kv4_5_2 = new KeyValue(row4, cf3, col, ts, KeyValue.Type.Put,<a name="line.5598"></a>
-<span class="sourceLineNo">5599</span>          null);<a name="line.5599"></a>
-<span class="sourceLineNo">5600</span>      KeyValue kv4_5_3 = new KeyValue(row4, cf3, col, ts + 5,<a name="line.5600"></a>
-<span class="sourceLineNo">5601</span>          KeyValue.Type.Put, null);<a name="line.5601"></a>
-<span class="sourceLineNo">5602</span>      KeyValue kv4_5_4 = new KeyValue(row4, cf2, col, ts, KeyValue.Type.Put,<a name="line.5602"></a>
-<span class="sourceLineNo">5603</span>          null);<a name="line.5603"></a>
-<span class="sourceLineNo">5604</span>      KeyValue kv4_5_5 = new KeyValue(row4, cf1, col, ts + 3,<a name="line.5604"></a>
-<span class="sourceLineNo">5605</span>          KeyValue.Type.Put, null);<a name="line.5605"></a>
-<span class="sourceLineNo">5606</span>      KeyValue kv5_2_1 = new KeyValue(row5, cf2, col, ts, KeyValue.Type.Put,<a name="line.5606"></a>
-<span class="sourceLineNo">5607</span>          null);<a name="line.5607"></a>
-<span class="sourceLineNo">5608</span>      KeyValue kv5_2_2 = new KeyValue(row5, cf3, col, ts, KeyValue.Type.Put,<a name="line.5608"></a>
-<span class="sourceLineNo">5609</span>          null);<a name="line.5609"></a>
-<span class="sourceLineNo">5610</span>      // hfiles(cf1/cf2) :"row1"(1 kv) / "row2"(1 kv) / "row4"(2 kv)<a name="line.5610"></a>
-<span class="sourceLineNo">5611</span>      Put put = null;<a name="line.5611"></a>
-<span class="sourceLineNo">5612</span>      put = new Put(row1);<a name="line.5612"></a>
-<span class="sourceLineNo">5613</span>      put.add(kv1_2_1);<a name="line.5613"></a>
-<span class="sourceLineNo">5614</span>      region.put(put);<a name="line.5614"></a>
-<span class="sourceLineNo">5615</span>      put = new Put(row2);<a name="line.5615"></a>
-<span class="sourceLineNo">5616</span>      put.add(kv2_4_1);<a name="line.5616"></a>
-<span class="sourceLineNo">5617</span>      region.put(put);<a name="line.5617"></a>
-<span class="sourceLineNo">5618</span>      put = new Put(row4);<a name="line.5618"></a>
-<span class="sourceLineNo">5619</span>      put.add(kv4_5_4);<a name="line.5619"></a>
-<span class="sourceLineNo">5620</span>      put.add(kv4_5_5);<a name="line.5620"></a>
-<span class="sourceLineNo">5621</span>      region.put(put);<a name="line.5621"></a>
-<span class="sourceLineNo">5622</span>      region.flush(true);<a name="line.5622"></a>
-<span class="sourceLineNo">5623</span>      // hfiles(cf1/cf3) : "row1" (1 kvs) / "row2" (1 kv) / "row4" (2 kv)<a name="line.5623"></a>
-<span class="sourceLineNo">5624</span>      put = new Put(row4);<a name="line.5624"></a>
-<span class="sourceLineNo">5625</span>      put.add(kv4_5_1);<a name="line.5625"></a>
-<span class="sourceLineNo">5626</span>      put.add(kv4_5_3);<a name="line.5626"></a>
-<span class="sourceLineNo">5627</span>      region.put(put);<a name="line.5627"></a>
-<span class="sourceLineNo">5628</span>      put = new Put(row1);<a name="line.5628"></a>
-<span class="sourceLineNo">5629</span>      put.add(kv1_2_2);<a name="line.5629"></a>
-<span class="sourceLineNo">5630</span>      region.put(put);<a name="line.5630"></a>
-<span class="sourceLineNo">5631</span>      put = new Put(row2);<a name="line.5631"></a>
-<span class="sourceLineNo">5632</span>      put.add(kv2_4_4);<a name="line.5632"></a>
-<span class="sourceLineNo">5633</span>      region.put(put);<a name="line.5633"></a>
-<span class="sourceLineNo">5634</span>      region.flush(true);<a name="line.5634"></a>
-<span class="sourceLineNo">5635</span>      // hfiles(cf1/cf3) : "row2"(2 kv) / "row3"(1 kvs) / "row4" (1 kv)<a name="line.5635"></a>
-<span class="sourceLineNo">5636</span>      put = new Put(row4);<a name="line.5636"></a>
-<span class="sourceLineNo">5637</span>      put.add(kv4_5_2);<a name="line.5637"></a>
-<span class="sourceLineNo">5638</span>      region.put(put);<a name="line.5638"></a>
-<span class="sourceLineNo">5639</span>      put = new Put(row2);<a name="line.5639"></a>
-<span class="sourceLineNo">5640</span>      put.add(kv2_4_2);<a name="line.5640"></a>
-<span class="sourceLineNo">5641</span>      put.add(kv2_4_3);<a name="line.5641"></a>
-<span class="sourceLineNo">5642</span>      region.put(put);<a name="line.5642"></a>
-<span class="sourceLineNo">5643</span>      put = new Put(row3);<a name="line.5643"></a>
-<span class="sourceLineNo">5644</span>      put.add(kv3_2_2);<a name="line.5644"></a>
-<span class="sourceLineNo">5645</span>      region.put(put);<a name="line.5645"></a>
-<span class="sourceLineNo">5646</span>      region.flush(true);<a name="line.5646"></a>
-<span class="sourceLineNo">5647</span>      // memstore(cf1/cf2/cf3) : "row0" (1 kvs) / "row3" ( 1 kv) / "row5" (max)<a name="line.5647"></a>
-<span class="sourceLineNo">5648</span>      // ( 2 kv)<a name="line.5648"></a>
-<span class="sourceLineNo">5649</span>      put = new Put(row0);<a name="line.5649"></a>
-<span class="sourceLineNo">5650</span>      put.add(kv0_1_1);<a name="line.5650"></a>
-<span class="sourceLineNo">5651</span>      region.put(put);<a name="line.5651"></a>
-<span class="sourceLineNo">5652</span>      put = new Put(row3);<a name="line.5652"></a>
-<span class="sourceLineNo">5653</span>      put.add(kv3_2_1);<a name="line.5653"></a>
-<span class="sourceLineNo">5654</span>      region.put(put);<a name="line.5654"></a>
-<span class="sourceLineNo">5655</span>      put = new Put(row5);<a name="line.5655"></a>
-<span class="sourceLineNo">5656</span>      put.add(kv5_2_1);<a name="line.5656"></a>
-<span class="sourceLineNo">5657</span>      put.add(kv5_2_2);<a name="line.5657"></a>
-<span class="sourceLineNo">5658</span>      region.put(put);<a name="line.5658"></a>
-<span class="sourceLineNo">5659</span>      // scan range = ["row4", min), skip the max "row5"<a name="line.5659"></a>
-<span class="sourceLineNo">5660</span>      Scan scan = new Scan(row4);<a name="line.5660"></a>
-<span class="sourceLineNo">5661</span>      scan.setMaxVersions(5);<a name="line.5661"></a>
-<span class="sourceLineNo">5662</span>      scan.setBatch(3);<a name="line.5662"></a>
-<span class="sourceLineNo">5663</span>      scan.setReversed(true);<a name="line.5663"></a>
-<span class="sourceLineNo">5664</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5664"></a>
-<span class="sourceLineNo">5665</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5665"></a>
-<span class="sourceLineNo">5666</span>      boolean hasNext = false;<a name="line.5666"></a>
-<span class="sourceLineNo">5667</span>      // 1. scan out "row4" (5 kvs), "row5" can't be scanned out since not<a name="line.5667"></a>
-<span class="sourceLineNo">5668</span>      // included in scan range<a name="line.5668"></a>
-<span class="sourceLineNo">5669</span>      // "row4" takes 2 next() calls since batch=3<a name="line.5669"></a>
-<span class="sourceLineNo">5670</span>      hasNext = scanner.next(currRow);<a name="line.5670"></a>
-<span class="sourceLineNo">5671</span>      assertEquals(3, currRow.size());<a name="line.5671"></a>
-<span class="sourceLineNo">5672</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5672"></a>
-<span class="sourceLineNo">5673</span>          .get(0).getRowLength(), row4, 0, row4.length));<a name="line.5673"></a>
-<span class="sourceLineNo">5674</span>      assertTrue(hasNext);<a name="line.5674"></a>
-<span class="sourceLineNo">5675</span>      currRow.clear();<a name="line.5675"></a>
-<span class="sourceLineNo">5676</span>      hasNext = scanner.next(currRow);<a name="line.5676"></a>
-<span class="sourceLineNo">5677</span>      assertEquals(2, currRow.size());<a name="line.5677"></a>
-<span class="sourceLineNo">5678</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow.get(0).getRowLength(), row4, 0,<a name="line.5678"></a>
-<span class="sourceLineNo">5679</span>        row4.length));<a name="line.5679"></a>
-<span class="sourceLineNo">5680</span>      assertTrue(hasNext);<a name="line.5680"></a>
-<span class="sourceLineNo">5681</span>      // 2. scan out "row3" (2 kv)<a name="line.5681"></a>
-<span class="sourceLineNo">5682</span>      currRow.clear();<a name="line.5682"></a>
-<span class="sourceLineNo">5683</span>      hasNext = scanner.next(currRow);<a name="line.5683"></a>
-<span class="sourceLineNo">5684</span>      assertEquals(2, currRow.size());<a name="line.5684"></a>
-<span class="sourceLineNo">5685</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5685"></a>
-<span class="sourceLineNo">5686</span>          .get(0).getRowLength(), row3, 0, row3.length));<a name="line.5686"></a>
-<span class="sourceLineNo">5687</span>      assertTrue(hasNext);<a name="line.5687"></a>
-<span class="sourceLineNo">5688</span>      // 3. scan out "row2" (4 kvs)<a name="line.5688"></a>
-<span class="sourceLineNo">5689</span>      // "row2" takes 2 next() calls since batch=3<a name="line.5689"></a>
-<span class="sourceLineNo">5690</span>      currRow.clear();<a name="line.5690"></a>
-<span class="sourceLineNo">5691</span>      hasNext = scanner.next(currRow);<a name="line.5691"></a>
-<span class="sourceLineNo">5692</span>      assertEquals(3, currRow.size());<a name="line.5692"></a>
-<span class="sourceLineNo">5693</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5693"></a>
-<span class="sourceLineNo">5694</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5694"></a>
-<span class="sourceLineNo">5695</span>      assertTrue(hasNext);<a name="line.5695"></a>
-<span class="sourceLineNo">5696</span>      currRow.clear();<a name="line.5696"></a>
-<span class="sourceLineNo">5697</span>      hasNext = scanner.next(currRow);<a name="line.5697"></a>
-<span class="sourceLineNo">5698</span>      assertEquals(1, currRow.size());<a name="line.5698"></a>
-<span class="sourceLineNo">5699</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5699"></a>
-<span class="sourceLineNo">5700</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5700"></a>
-<span class="sourceLineNo">5701</span>      assertTrue(hasNext);<a name="line.5701"></a>
-<span class="sourceLineNo">5702</span>      // 4. scan out "row1" (2 kv)<a name="line.5702"></a>
-<span class="sourceLineNo">5703</span>      currRow.clear();<a name="line.5703"></a>
-<span class="sourceLineNo">5704</span>      hasNext = scanner.next(currRow);<a name="line.5704"></a>
-<span class="sourceLineNo">5705</span>      assertEquals(2, currRow.size());<a name="line.5705"></a>
-<span class="sourceLineNo">5706</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5706"></a>
-<span class="sourceLineNo">5707</span>          .get(0).getRowLength(), row1, 0, row1.length));<a name="line.5707"></a>
-<span class="sourceLineNo">5708</span>      assertTrue(hasNext);<a name="line.5708"></a>
-<span class="sourceLineNo">5709</span>      // 5. scan out "row0" (1 kv)<a name="line.5709"></a>
-<span class="sourceLineNo">5710</span>      currRow.clear();<a name="line.5710"></a>
-<span class="sourceLineNo">5711</span>      hasNext = scanner.next(currRow);<a name="line.5711"></a>
-<span class="sourceLineNo">5712</span>      assertEquals(1, currRow.size());<a name="line.5712"></a>
-<span class="sourceLineNo">5713</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5713"></a>
-<span class="sourceLineNo">5714</span>          .get(0).getRowLength(), row0, 0, row0.length));<a name="line.5714"></a>
-<span class="sourceLineNo">5715</span>      assertFalse(hasNext);<a name="line.5715"></a>
-<span class="sourceLineNo">5716</span><a name="line.5716"></a>
-<span class="sourceLineNo">5717</span>      scanner.close();<a name="line.5717"></a>
-<span class="sourceLineNo">5718</span>    } finally {<a name="line.5718"></a>
-<span class="sourceLineNo">5719</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5719"></a>
-<span class="sourceLineNo">5720</span>      this.region = null;<a name="line.5720"></a>
-<span class="sourceLineNo">5721</span>    }<a name="line.5721"></a>
-<span class="sourceLineNo">5722</span>  }<a name="line.5722"></a>
-<span class="sourceLineNo">5723</span><a name="line.5723"></a>
-<span class="sourceLineNo">5724</span>  @Test (timeout=60000)<a name="line.5724"></a>
-<span class="sourceLineNo">5725</span>  public void testReverseScanner_FromMemStoreAndHFiles_MultiCFs2()<a name="line.5725"></a>
-<span class="sourceLineNo">5726</span>      throws IOException {<a name="line.5726"></a>
-<span class="sourceLineNo">5727</span>    byte[] row1 = Bytes.toBytes("row1");<a name="line.5727"></a>
-<span class="sourceLineNo">5728</span>    byte[] row2 = Bytes.toBytes("row2");<a name="line.5728"></a>
-<span class="sourceLineNo">5729</span>    byte[] row3 = Bytes.toBytes("row3");<a name="line.5729"></a>
-<span class="sourceLineNo">5730</span>    byte[] row4 = Bytes.toBytes("row4");<a name="line.5730"></a>
-<span class="sourceLineNo">5731</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5731"></a>
-<span class="sourceLineNo">5732</span>    byte[] cf2 = Bytes.toBytes("CF2");<a name="line.5732"></a>
-<span class="sourceLineNo">5733</span>    byte[] cf3 = Bytes.toBytes("CF3");<a name="line.5733"></a>
-<span class="sourceLineNo">5734</span>    byte[] cf4 = Bytes.toBytes("CF4");<a name="line.5734"></a>
-<span class="sourceLineNo">5735</span>    byte[][] families = { cf1, cf2, cf3, cf4 };<a name="line.5735"></a>
-<span class="sourceLineNo">5736</span>    byte[] col = Bytes.toBytes("C");<a name="line.5736"></a>
-<span class="sourceLineNo">5737</span>    long ts = 1;<a name="line.5737"></a>
-<span class="sourceLineNo">5738</span>    String method = this.getName();<a name="line.5738"></a>
-<span class="sourceLineNo">5739</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5739"></a>
-<span class="sourceLineNo">5740</span>    // disable compactions in this test.<a name="line.5740"></a>
-<span class="sourceLineNo">5741</span>    conf.setInt("hbase.hstore.compactionThreshold", 10000);<a name="line.5741"></a>
-<span class="sourceLineNo">5742</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5742"></a>
-<span class="sourceLineNo">5743</span>    try {<a name="line.5743"></a>
-<span class="sourceLineNo">5744</span>      KeyValue kv1 = new KeyValue(row1, cf1, col, ts, KeyValue.Type.Put, null);<a name="line.5744"></a>
-<span class="sourceLineNo">5745</span>      KeyValue kv2 = new KeyValue(row2, cf2, col, ts, KeyValue.Type.Put, null);<a name="line.5745"></a>
-<span class="sourceLineNo">5746</span>      KeyValue kv3 = new KeyValue(row3, cf3, col, ts, KeyValue.Type.Put, null);<a name="line.5746"></a>
-<span class="sourceLineNo">5747</span>      KeyValue kv4 = new KeyValue(row4, cf4, col, ts, KeyValue.Type.Put, null);<a name="line.5747"></a>
-<span class="sourceLineNo">5748</span>      // storefile1<a name="line.5748"></a>
-<span class="sourceLineNo">5749</span>      Put put = new Put(row1);<a name="line.5749"></a>
-<span class="sourceLineNo">5750</span>      put.add(kv1);<a name="line.5750"></a>
-<span class="sourceLineNo">5751</span>      region.put(put);<a name="line.5751"></a>
-<span class="sourceLineNo">5752</span>      region.flush(true);<a name="line.5752"></a>
-<span class="sourceLineNo">5753</span>      // storefile2<a name="line.5753"></a>
-<span class="sourceLineNo">5754</span>      put = new Put(row2);<a name="line.5754"></a>
-<span class="sourceLineNo">5755</span>      put.add(kv2);<a name="line.5755"></a>
-<span class="sourceLineNo">5756</span>      region.put(put);<a name="line.5756"></a>
-<span class="sourceLineNo">5757</span>      region.flush(true);<a name="line.5757"></a>
-<span class="sourceLineNo">5758</span>      // storefile3<a name="line.5758"></a>
-<span class="sourceLineNo">5759</span>      put = new Put(row3);<a name="line.5759"></a>
-<span class="sourceLineNo">5760</span>      put.add(kv3);<a name="line.5760"></a>
-<span class="sourceLineNo">5761</span>      region.put(put);<a name="line.5761"></a>
-<span class="sourceLineNo">5762</span>      region.flush(true);<a name="line.5762"></a>
-<span class="sourceLineNo">5763</span>      // memstore<a name="line.5763"></a>
-<span class="sourceLineNo">5764</span>      put = new Put(row4);<a name="line.5764"></a>
-<span class="sourceLineNo">5765</span>      put.add(kv4);<a name="line.5765"></a>
-<span class="sourceLineNo">5766</span>      region.put(put);<a name="line.5766"></a>
-<span class="sourceLineNo">5767</span>      // scan range = ["row4", min)<a name="line.5767"></a>
-<span class="sourceLineNo">5768</span>      Scan scan = new Scan(row4);<a name="line.5768"></a>
-<span class="sourceLineNo">5769</span>      scan.setReversed(true);<a name="line.5769"></a>
-<span class="sourceLineNo">5770</span>      scan.setBatch(10);<a name="line.5770"></a>
-<span class="sourceLineNo">5771</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5771"></a>
-<span class="sourceLineNo">5772</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5772"></a>
-<span class="sourceLineNo">5773</span>      boolean hasNext = scanner.next(currRow);<a name="line.5773"></a>
-<span class="sourceLineNo">5774</span>      assertEquals(1, currRow.size());<a name="line.5774"></a>
-<span class="sourceLineNo">5775</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5775"></a>
-<span class="sourceLineNo">5776</span>          .get(0).getRowLength(), row4, 0, row4.length));<a name="line.5776"></a>
-<span class="sourceLineNo">5777</span>      assertTrue(hasNext);<a name="line.5777"></a>
-<span class="sourceLineNo">5778</span>      currRow.clear();<a name="line.5778"></a>
-<span class="sourceLineNo">5779</span>      hasNext = scanner.next(currRow);<a name="line.5779"></a>
-<span class="sourceLineNo">5780</span>      assertEquals(1, currRow.size());<a name="line.5780"></a>
-<span class="sourceLineNo">5781</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5781"></a>
-<span class="sourceLineNo">5782</span>          .get(0).getRowLength(), row3, 0, row3.length));<a name="line.5782"></a>
-<span class="sourceLineNo">5783</span>      assertTrue(hasNext);<a name="line.5783"></a>
-<span class="sourceLineNo">5784</span>      currRow.clear();<a name="line.5784"></a>
-<span class="sourceLineNo">5785</span>      hasNext = scanner.next(currRow);<a name="line.5785"></a>
-<span class="sourceLineNo">5786</span>      assertEquals(1, currRow.size());<a name="line.5786"></a>
-<span class="sourceLineNo">5787</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5787"></a>
-<span class="sourceLineNo">5788</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5788"></a>
-<span class="sourceLineNo">5789</span>      assertTrue(hasNext);<a name="line.5789"></a>
-<span class="sourceLineNo">5790</span>      currRow.clear();<a name="line.5790"></a>
-<span class="sourceLineNo">5791</span>      hasNext = scanner.next(currRow);<a name="line.5791"></a>
-<span class="sourceLineNo">5792</span>      assertEquals(1, currRow.size());<a name="line.5792"></a>
-<span class="sourceLineNo">5793</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5793"></a>
-<span class="sourceLineNo">5794</span>          .get(0).getRowLength(), row1, 0, row1.length));<a name="line.5794"></a>
-<span class="sourceLineNo">5795</span>      assertFalse(hasNext);<a name="line.5795"></a>
-<span class="sourceLineNo">5796</span>    } finally {<a name="line.5796"></a>
-<span class="sourceLineNo">5797</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5797"></a>
-<span class="sourceLineNo">5798</span>      this.region = null;<a name="line.5798"></a>
-<span class="sourceLineNo">5799</span>    }<a name="line.5799"></a>
-<span class="sourceLineNo">5800</span>  }<a name="line.5800"></a>
-<span class="sourceLineNo">5801</span><a name="line.5801"></a>
-<span class="sourceLineNo">5802</span>  /**<a name="line.5802"></a>
-<span class="sourceLineNo">5803</span>   * Test for HBASE-14497: Reverse Scan threw StackOverflow caused by readPt checking<a name="line.5803"></a>
-<span class="sourceLineNo">5804</span>   */<a name="line.5804"></a>
-<span class="sourceLineNo">5805</span>  @Test (timeout = 60000)<a name="line.5805"></a>
-<span class="sourceLineNo">5806</span>  public void testReverseScanner_StackOverflow() throws IOException {<a name="line.5806"></a>
-<span class="sourceLineNo">5807</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5807"></a>
-<span class="sourceLineNo">5808</span>    byte[][] families = {cf1};<a name="line.5808"></a>
-<span class="sourceLineNo">5809</span>    byte[] col = Bytes.toBytes("C");<a name="line.5809"></a>
-<span class="sourceLineNo">5810</span>    String method = this.getName();<a name="line.5810"></a>
-<span class="sourceLineNo">5811</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5811"></a>
-<span class="sourceLineNo">5812</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5812"></a>
-<span class="sourceLineNo">5813</span>    try {<a name="line.5813"></a>
-<span class="sourceLineNo">5814</span>      // setup with one storefile and one memstore, to create scanner and get an earlier readPt<a name="line.5814"></a>
-<span class="sourceLineNo">5815</span>      Put put = new Put(Bytes.toBytes("19998"));<a name="line.5815"></a>
-<span class="sourceLineNo">5816</span>      put.addColumn(cf1, col, Bytes.toBytes("val"));<a name="line.5816"></a>
-<span class="sourceLineNo">5817</span>      region.put(put);<a name="line.5817"></a>
-<span class="sourceLineNo">5818</span>      region.flushcache(true, true);<a name="line.5818"></a>
-<span class="sourceLineNo">5819</span>      Put put2 = new Put(Bytes.toBytes("19997"));<a name="line.5819"></a>
-<span class="sourceLineNo">5820</span>      put2.addColumn(cf1, col, Bytes.toBytes("val"));<a name="line.5820"></a>
-<span class="sourceLineNo">5821</span>      region.put(put2);<a name="line.5821"></a>
-<span class="sourceLineNo">5822</span><a name="line.5822"></a>
-<span class="sourceLineNo">5823</span>      Scan scan = new Scan(Bytes.toBytes("19998"));<a name="line.5823"></a>
-<span class="sourceLineNo">5824</span>      scan.setReversed(true);<a name="line.5824"></a>
-<span class="sourceLineNo">5825</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5825"></a>
-<span class="sourceLineNo">5826</span><a name="line.5826"></a>
-<span class="sourceLineNo">5827</span>      // create one storefile contains many rows will be skipped<a name="line.5827"></a>
-<span class="sourceLineNo">5828</span>      // to check StoreFileScanner.seekToPreviousRow<a name="line.5828"></a>
-<span class="sourceLineNo">5829</span>      for (int i = 10000; i &lt; 20000; i++) {<a name="line.5829"></a>
-<span class="sourceLineNo">5830</span>        Put p = new Put(Bytes.toBytes(""+i));<a name="line.5830"></a>
-<span class="sourceLineNo">5831</span>        p.addColumn(cf1, col, Bytes.toBytes("" + i));<a name="line.5831"></a>
-<span class="sourceLineNo">5832</span>        region.put(p);<a name="line.5832"></a>
-<span class="sourceLineNo">5833</span>      }<a name="line.5833"></a>
-<span class="sourceLineNo">5834</span>      region.flushcache(true, true);<a name="line.5834"></a>
-<span class="sourceLineNo">5835</span><a name="line.5835"></a>
-<span class="sourceLineNo">5836</span>      // create one memstore contains many rows will be skipped<a name="line.5836"></a>
-<span class="sourceLineNo">5837</span>      // to check MemStoreScanner.seekToPreviousRow<a name="line.5837"></a>
-<span class="sourceLineNo">5838</span>      for (int i = 10000; i &lt; 20000; i++) {<a name="line.5838"></a>
-<span class="sourceLineNo">5839</span>        Put p = new Put(Bytes.toBytes(""+i));<a name="line.5839"></a>
-<span class="sourceLineNo">5840</span>        p.addColumn(cf1, col, Bytes.toBytes("" + i));<a name="line.5840"></a>
-<span class="sourceLineNo">5841</span>        region.put(p);<a name="line.5841"></a>
-<span class="sourceLineNo">5842</span>      }<a name="line.5842"></a>
-<span class="sourceLineNo">5843</span><a name="line.5843"></a>
-<span class="sourceLineNo">5844</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;&gt;();<a name="line.5844"></a>
-<span class="sourceLineNo">5845</span>      boolean hasNext;<a name="line.5845"></a>
-<span class="sourceLineNo">5846</span>      do {<a name="line.5846"></a>
-<span class="sourceLineNo">5847</span>        hasNext = scanner.next(currRow);<a name="line.5847"></a>
-<span class="sourceLineNo">5848</span>      } while (hasNext);<a name="line.5848"></a>
-<span class="sourceLineNo">5849</span>      assertEquals(2, currRow.size());<a name="line.5849"></a>
-<span class="sourceLineNo">5850</span>      assertEquals("19998", Bytes.toString(currRow.get(0).getRowArray(),<a name="line.5850"></a>
-<span class="sourceLineNo">5851</span>        currRow.get(0).getRowOffset(), currRow.get(0).getRowLength()));<a name="line.5851"></a>
-<span class="sourceLineNo">5852</span>      assertEquals("19997", Bytes.toString(currRow.get(1).getRowArray(),<a name="line.5852"></a>
-<span class="sourceLineNo">5853</span>        currRow.get(1).getRowOffset(), currRow.get(1).getRowLength()));<a name="line.5853"></a>
-<span class="sourceLineNo">5854</span>    } finally {<a name="line.5854"></a>
-<span class="sourceLineNo">5855</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5855"></a>
-<span class="sourceLineNo">5856</span>      this.region = null;<a name="line.5856"></a>
-<span class="sourceLineNo">5857</span>    }<a name="line.5857"></a>
-<span class="sourceLineNo">5858</span>  }<a name="line.5858"></a>
-<span class="sourceLineNo">5859</span><a name="line.5859"></a>
-<span class="sourceLineNo">5860</span>  @Test (timeout=60000)<a name="line.5860"></a>
-<span class="sourceLineNo">5861</span>  public void testSplitRegionWithReverseScan() throws IOException {<a name="line.5861"></a>
-<span class="sourceLineNo">5862</span>    TableName tableName = TableName.valueOf("testSplitRegionWithReverseScan");<a name="line.5862"></a>
-<span class="sourceLineNo">5863</span>    byte [] qualifier = Bytes.toBytes("qualifier");<a name="line.5863"></a>
-<span class="sourceLineNo">5864</span>    Configuration hc = initSplit();<a name="line.5864"></a>
-<span class="sourceLineNo">5865</span>    int numRows = 3;<a name="line.5865"></a>
-<span class="sourceLineNo">5866</span>    byte [][] families = {fam1};<a name="line.5866"></a>
-<span class="sourceLineNo">5867</span><a name="line.5867"></a>
-<span class="sourceLineNo">5868</span>    //Setting up region<a name="line.5868"></a>
-<span class="sourceLineNo">5869</span>    String method = this.getName();<a name="line.5869"></a>
-<span class="sourceLineNo">5870</span>    this.region = initHRegion(tableName, method, hc, families);<a name="line.5870"></a>
-<span class="sourceLineNo">5871</span><a name="line.5871"></a>
-<span class="sourceLineNo">5872</span>    //Put data in region<a name="line.5872"></a>
-<span class="sourceLineNo">5873</span>    int startRow = 100;<a name="line.5873"></a>
-<span class="sourceLineNo">5874</span>    putData(startRow, numRows, qualifier, families);<a name="line.5874"></a>
-<span class="sourceLineNo">5875</span>    int splitRow = startRow + numRows;<a name="line.5875"></a>
-<span class="sourceLineNo">5876</span>    putData(splitRow, numRows, qualifier, families);<a name="line.5876"></a>
-<span class="sourceLineNo">5877</span>    region.flush(true);<a name="line.5877"></a>
-<span class="sourceLineNo">5878</span><a name="line.5878"></a>
-<span class="sourceLineNo">5879</span>    HRegion [] regions = null;<a name="line.5879"></a>
-<span class="sourceLineNo">5880</span>    try {<a name="line.5880"></a>
-<span class="sourceLineNo">5881</span>      regions = splitRegion(region, Bytes.toBytes("" + splitRow));<a name="line.5881"></a>
-<span class="sourceLineNo">5882</span>      //Opening the regions returned.<a name="line.5882"></a>
-<span class="sourceLineNo">5883</span>      for (int i = 0; i &lt; regions.length; i++) {<a name="line.5883"></a>
-<span class="sourceLineNo">5884</span>        regions[i] = HRegion.openHRegion(regions[i], null);<a name="line.5884"></a>
-<span class="sourceLineNo">5885</span>      }<a name="line.5885"></a>
-<span class="sourceLineNo">5886</span>      //Verifying tha

<TRUNCATED>

[23/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html
index 00d5ddd..120db76 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html
@@ -95,7 +95,7 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.102">TestHRegionReplayEvents</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.108">TestHRegionReplayEvents</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Tests of HRegion methods for replaying flush, compaction, region open, etc events for secondary
  region replicas</div>
@@ -134,82 +134,78 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#families">families</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private static org.apache.hadoop.fs.FileSystem</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#FILESYSTEM">FILESYSTEM</a></strong></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.HTableDescriptor</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#htd">htd</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#LOG">LOG</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#method">method</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>org.junit.rules.TestName</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#name">name</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.HRegionInfo</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#primaryHri">primaryHri</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.HRegion</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#primaryRegion">primaryRegion</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.wal.WAL.Reader</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#reader">reader</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#rootDir">rootDir</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#row">row</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#row2">row2</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.RegionServerServices</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#rss">rss</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.HRegionInfo</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#secondaryHri">secondaryHri</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.HRegion</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#secondaryRegion">secondaryRegion</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#tableName">tableName</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#time">time</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.wal.WAL</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#walPrimary">walPrimary</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.wal.WALFactory</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#wals">wals</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.wal.WAL</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#walSecondary">walSecondary</a></strong></code>&nbsp;</td>
 </tr>
@@ -511,7 +507,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.104">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.110">LOG</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -520,7 +516,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.105">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.111">name</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -529,7 +525,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.107">TEST_UTIL</a></pre>
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.113">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="CONF">
@@ -538,7 +534,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>CONF</h4>
-<pre>public static&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.109">CONF</a></pre>
+<pre>public static&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.115">CONF</a></pre>
 </li>
 </ul>
 <a name="dir">
@@ -547,16 +543,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>dir</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.110">dir</a></pre>
-</li>
-</ul>
-<a name="FILESYSTEM">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>FILESYSTEM</h4>
-<pre>private static&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.111">FILESYSTEM</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.116">dir</a></pre>
 </li>
 </ul>
 <a name="families">
@@ -565,7 +552,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>families</h4>
-<pre>private&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.113">families</a></pre>
+<pre>private&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.118">families</a></pre>
 </li>
 </ul>
 <a name="tableName">
@@ -574,7 +561,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>tableName</h4>
-<pre>protected&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.117">tableName</a></pre>
+<pre>protected&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.122">tableName</a></pre>
 </li>
 </ul>
 <a name="method">
@@ -583,7 +570,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>method</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.118">method</a></pre>
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.123">method</a></pre>
 </li>
 </ul>
 <a name="row">
@@ -592,7 +579,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>row</h4>
-<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.119">row</a></pre>
+<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.124">row</a></pre>
 </li>
 </ul>
 <a name="row2">
@@ -601,7 +588,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>row2</h4>
-<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.120">row2</a></pre>
+<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.125">row2</a></pre>
 </li>
 </ul>
 <a name="cq">
@@ -610,7 +597,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>cq</h4>
-<pre>protected&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.121">cq</a></pre>
+<pre>protected&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.126">cq</a></pre>
 </li>
 </ul>
 <a name="rootDir">
@@ -619,7 +606,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>rootDir</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.124">rootDir</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.129">rootDir</a></pre>
 </li>
 </ul>
 <a name="htd">
@@ -628,7 +615,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>htd</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.125">htd</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.130">htd</a></pre>
 </li>
 </ul>
 <a name="time">
@@ -637,7 +624,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>time</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.126">time</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.131">time</a></pre>
 </li>
 </ul>
 <a name="rss">
@@ -646,7 +633,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>rss</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.RegionServerServices <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.127">rss</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.RegionServerServices <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.132">rss</a></pre>
 </li>
 </ul>
 <a name="primaryHri">
@@ -655,7 +642,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>primaryHri</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.HRegionInfo <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.128">primaryHri</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.HRegionInfo <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.133">primaryHri</a></pre>
 </li>
 </ul>
 <a name="secondaryHri">
@@ -664,7 +651,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>secondaryHri</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.HRegionInfo <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.128">secondaryHri</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.HRegionInfo <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.133">secondaryHri</a></pre>
 </li>
 </ul>
 <a name="primaryRegion">
@@ -673,7 +660,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>primaryRegion</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.129">primaryRegion</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.134">primaryRegion</a></pre>
 </li>
 </ul>
 <a name="secondaryRegion">
@@ -682,7 +669,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>secondaryRegion</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.129">secondaryRegion</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.134">secondaryRegion</a></pre>
 </li>
 </ul>
 <a name="wals">
@@ -691,7 +678,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>wals</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.wal.WALFactory <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.130">wals</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.wal.WALFactory <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.135">wals</a></pre>
 </li>
 </ul>
 <a name="walPrimary">
@@ -700,7 +687,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>walPrimary</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.wal.WAL <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.131">walPrimary</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.wal.WAL <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.136">walPrimary</a></pre>
 </li>
 </ul>
 <a name="walSecondary">
@@ -709,7 +696,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>walSecondary</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.wal.WAL <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.131">walSecondary</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.wal.WAL <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.136">walSecondary</a></pre>
 </li>
 </ul>
 <a name="reader">
@@ -718,7 +705,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>reader</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.wal.WAL.Reader <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.132">reader</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.wal.WAL.Reader <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.137">reader</a></pre>
 </li>
 </ul>
 </li>
@@ -735,7 +722,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestHRegionReplayEvents</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.102">TestHRegionReplayEvents</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.108">TestHRegionReplayEvents</a>()</pre>
 </li>
 </ul>
 </li>
@@ -752,7 +739,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.135">setup</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.140">setup</a>()
            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -764,7 +751,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.189">tearDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.193">tearDown</a>()
               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -776,7 +763,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getName</h4>
-<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.206">getName</a>()</pre>
+<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.210">getName</a>()</pre>
 </li>
 </ul>
 <a name="testRegionReplicaSecondaryCannotFlush()">
@@ -785,7 +772,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRegionReplicaSecondaryCannotFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.222">testRegionReplicaSecondaryCannotFlush</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.226">testRegionReplicaSecondaryCannotFlush</a>()
                                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -797,7 +784,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testOnlyReplayingFlushStartDoesNotHoldUpRegionClose</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.249">testOnlyReplayingFlushStartDoesNotHoldUpRegionClose</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.253">testOnlyReplayingFlushStartDoesNotHoldUpRegionClose</a>()
                                                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests a case where we replay only a flush start marker, then the region is closed. This region
  should not block indefinitely</div>
@@ -811,7 +798,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>replayEdit</h4>
-<pre>static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.288">replayEdit</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.292">replayEdit</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
              org.apache.hadoop.hbase.wal.WAL.Entry&nbsp;entry)
                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -824,7 +811,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createWALReaderForPrimary</h4>
-<pre>org.apache.hadoop.hbase.wal.WAL.Reader&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.301">createWALReaderForPrimary</a>()
+<pre>org.apache.hadoop.hbase.wal.WAL.Reader&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.305">createWALReaderForPrimary</a>()
                                                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/FileNotFoundException.html?is-external=true" title="class or interface in java.io">FileNotFoundException</a>,
                                                                   <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -838,7 +825,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayFlushesAndCompactions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.308">testReplayFlushesAndCompactions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.312">testReplayFlushesAndCompactions</a>()
                                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -850,7 +837,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayFlushStartMarkers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.414">testReplayFlushStartMarkers</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.418">testReplayFlushStartMarkers</a>()
                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests cases where we prepare a flush with some seqId and we receive other flush start markers
  equal to, greater or less than the previous flush start marker.</div>
@@ -864,7 +851,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayFlushCommitMarkerSmallerThanFlushStartMarker</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.519">testReplayFlushCommitMarkerSmallerThanFlushStartMarker</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.523">testReplayFlushCommitMarkerSmallerThanFlushStartMarker</a>()
                                                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests the case where we prepare a flush with some seqId and we receive a flush commit marker
  less than the previous flush start marker.</div>
@@ -878,7 +865,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayFlushCommitMarkerLargerThanFlushStartMarker</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.610">testReplayFlushCommitMarkerLargerThanFlushStartMarker</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.614">testReplayFlushCommitMarkerLargerThanFlushStartMarker</a>()
                                                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests the case where we prepare a flush with some seqId and we receive a flush commit marker
  larger than the previous flush start marker.</div>
@@ -892,7 +879,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayFlushCommitMarkerWithoutFlushStartMarkerDroppableMemstore</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.702">testReplayFlushCommitMarkerWithoutFlushStartMarkerDroppableMemstore</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.706">testReplayFlushCommitMarkerWithoutFlushStartMarkerDroppableMemstore</a>()
                                                                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests the case where we receive a flush commit before receiving any flush prepare markers.
  The memstore edits should be dropped after the flush commit replay since they should be in
@@ -907,7 +894,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayFlushCommitMarkerWithoutFlushStartMarkerNonDroppableMemstore</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.713">testReplayFlushCommitMarkerWithoutFlushStartMarkerNonDroppableMemstore</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.717">testReplayFlushCommitMarkerWithoutFlushStartMarkerNonDroppableMemstore</a>()
                                                                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests the case where we receive a flush commit before receiving any flush prepare markers.
  The memstore edits should be not dropped after the flush commit replay since not every edit
@@ -922,7 +909,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayFlushCommitMarkerWithoutFlushStartMarker</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.721">testReplayFlushCommitMarkerWithoutFlushStartMarker</a>(boolean&nbsp;droppableMemstore)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.725">testReplayFlushCommitMarkerWithoutFlushStartMarker</a>(boolean&nbsp;droppableMemstore)
                                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests the case where we receive a flush commit before receiving any flush prepare markers</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -935,7 +922,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>clone</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.protobuf.generated.WALProtos.FlushDescriptor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.806">clone</a>(org.apache.hadoop.hbase.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush,
+<pre>private&nbsp;org.apache.hadoop.hbase.protobuf.generated.WALProtos.FlushDescriptor&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.810">clone</a>(org.apache.hadoop.hbase.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush,
                                                                          long&nbsp;flushSeqId)</pre>
 </li>
 </ul>
@@ -945,7 +932,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayRegionOpenEvent</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.816">testReplayRegionOpenEvent</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.820">testReplayRegionOpenEvent</a>()
                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests replaying region open markers from primary region. Checks whether the files are picked up</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -958,7 +945,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayRegionOpenEventAfterFlushStart</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.896">testReplayRegionOpenEventAfterFlushStart</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.900">testReplayRegionOpenEventAfterFlushStart</a>()
                                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests the case where we replay a region open event after a flush start but before receiving
  flush commit</div>
@@ -972,7 +959,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSkippingEditsWithSmallerSeqIdAfterRegionOpenEvent</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.975">testSkippingEditsWithSmallerSeqIdAfterRegionOpenEvent</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.979">testSkippingEditsWithSmallerSeqIdAfterRegionOpenEvent</a>()
                                                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests whether edits coming in for replay are skipped which have smaller seq id than the seqId
  of the last replayed region open event.</div>
@@ -986,7 +973,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayFlushSeqIds</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1033">testReplayFlushSeqIds</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1037">testReplayFlushSeqIds</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -998,7 +985,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSeqIdsFromReplay</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1077">testSeqIdsFromReplay</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1081">testSeqIdsFromReplay</a>()
                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -1010,7 +997,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSecondaryRegionDoesNotWriteRegionEventsToWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1120">testSecondaryRegionDoesNotWriteRegionEventsToWAL</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1123">testSecondaryRegionDoesNotWriteRegionEventsToWAL</a>()
                                                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests that a region opened in secondary mode would not write region open / close
  events to its WAL.</div>
@@ -1024,7 +1011,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRegionReadsEnabledFlag</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1152">testRegionReadsEnabledFlag</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1155">testRegionReadsEnabledFlag</a>()
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests the reads enabled flag for the region. When unset all reads should be rejected</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -1037,7 +1024,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testWriteFlushRequestMarker</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1180">testWriteFlushRequestMarker</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1183">testWriteFlushRequestMarker</a>()
                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests the case where a request for flush cache is sent to the region, but region cannot flush.
  It should write the flush request marker instead.</div>
@@ -1051,7 +1038,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayingFlushRequestRestoresReadsEnabledState</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1218">testReplayingFlushRequestRestoresReadsEnabledState</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1221">testReplayingFlushRequestRestoresReadsEnabledState</a>()
                                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test the case where the secondary region replica is not in reads enabled state because it is
  waiting for a flush or region open marker from primary region. Replaying CANNOT_FLUSH
@@ -1067,7 +1054,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayingFlushRestoresReadsEnabledState</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1247">testReplayingFlushRestoresReadsEnabledState</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1250">testReplayingFlushRestoresReadsEnabledState</a>()
                                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test the case where the secondary region replica is not in reads enabled state because it is
  waiting for a flush or region open marker from primary region. Replaying flush start and commit
@@ -1083,7 +1070,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayingFlushWithEmptyMemstoreRestoresReadsEnabledState</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1281">testReplayingFlushWithEmptyMemstoreRestoresReadsEnabledState</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1292">testReplayingFlushWithEmptyMemstoreRestoresReadsEnabledState</a>()
                                                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test the case where the secondary region replica is not in reads enabled state because it is
  waiting for a flush or region open marker from primary region. Replaying flush start and commit
@@ -1099,7 +1086,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayingRegionOpenEventRestoresReadsEnabledState</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1313">testReplayingRegionOpenEventRestoresReadsEnabledState</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1324">testReplayingRegionOpenEventRestoresReadsEnabledState</a>()
                                                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test the case where the secondary region replica is not in reads enabled state because it is
  waiting for a flush or region open marker from primary region. Replaying region open event
@@ -1115,7 +1102,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRefreshStoreFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1340">testRefreshStoreFiles</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1351">testRefreshStoreFiles</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -1127,7 +1114,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>assertPathListsEqual</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1430">assertPathListsEqual</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;list1,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1441">assertPathListsEqual</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;list1,
                         <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;list2)</pre>
 <div class="block">Paths can be qualified or not. This does the assertion using String->Path conversion.</div>
 </li>
@@ -1138,7 +1125,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>disableReads</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1442">disableReads</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1453">disableReads</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region)</pre>
 </li>
 </ul>
 <a name="replay(org.apache.hadoop.hbase.regionserver.HRegion, org.apache.hadoop.hbase.client.Put, long)">
@@ -1147,7 +1134,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>replay</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1452">replay</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1463">replay</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
           org.apache.hadoop.hbase.client.Put&nbsp;put,
           long&nbsp;replaySeqId)
              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1161,7 +1148,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayBulkLoadEvent</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1462">testReplayBulkLoadEvent</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1473">testReplayBulkLoadEvent</a>()
                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests replaying region open markers from primary region. Checks whether the files are picked up</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -1174,7 +1161,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayingFlushCommitWithFileAlreadyDeleted</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1528">testReplayingFlushCommitWithFileAlreadyDeleted</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1539">testReplayingFlushCommitWithFileAlreadyDeleted</a>()
                                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -1186,7 +1173,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayingCompactionWithFileAlreadyDeleted</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1547">testReplayingCompactionWithFileAlreadyDeleted</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1558">testReplayingCompactionWithFileAlreadyDeleted</a>()
                                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -1198,7 +1185,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayingRegionOpenEventWithFileAlreadyDeleted</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1564">testReplayingRegionOpenEventWithFileAlreadyDeleted</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1575">testReplayingRegionOpenEventWithFileAlreadyDeleted</a>()
                                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -1210,7 +1197,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReplayingBulkLoadEventWithFileAlreadyDeleted</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1584">testReplayingBulkLoadEventWithFileAlreadyDeleted</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1595">testReplayingBulkLoadEventWithFileAlreadyDeleted</a>()
                                                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -1222,7 +1209,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createHFileForFamilies</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1600">createHFileForFamilies</a>(org.apache.hadoop.fs.Path&nbsp;testPath,
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1611">createHFileForFamilies</a>(org.apache.hadoop.fs.Path&nbsp;testPath,
                             byte[]&nbsp;family,
                             byte[]&nbsp;valueBytes)
                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1236,7 +1223,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>putDataWithFlushes</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1626">putDataWithFlushes</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1637">putDataWithFlushes</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                       int&nbsp;flushInterval,
                       int&nbsp;numRows,
                       int&nbsp;numRowsAfterFlush)
@@ -1254,7 +1241,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>putDataByReplay</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1639">putDataByReplay</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1650">putDataByReplay</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                    int&nbsp;startRow,
                    int&nbsp;numRows,
                    byte[]&nbsp;qf,
@@ -1270,7 +1257,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1651">initHRegion</a>(byte[]&nbsp;tableName,
+<pre>private static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1662">initHRegion</a>(byte[]&nbsp;tableName,
                                                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
                                                        byte[]...&nbsp;families)
                                                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1284,7 +1271,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1657">initHRegion</a>(byte[]&nbsp;tableName,
+<pre>private static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#line.1668">initHRegion</a>(byte[]&nbsp;tableName,
                                                        byte[]&nbsp;startKey,
                                                        byte[]&nbsp;stopKey,
                                                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html
index 3accf25..87fca13 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html
@@ -36,7 +36,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" target="_top">Frames</a></li>
@@ -377,7 +377,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" target="_top">Frames</a></li>


[12/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html
index 9cddc0a..1240e3e 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.CheckAndPutThread.html
@@ -27,8 +27,8 @@
 <span class="sourceLineNo">019</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam1;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam2;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertTrue;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertNull;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import static org.junit.Assert.fail;<a name="line.24"></a>
 <span class="sourceLineNo">025</span><a name="line.25"></a>
 <span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
@@ -61,19 +61,19 @@
 <span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.Get;<a name="line.54"></a>
 <span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Put;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Result;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.68"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Put;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.Result;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
 <span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>import org.junit.After;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import org.junit.Before;<a name="line.71"></a>
@@ -191,535 +191,539 @@
 <span class="sourceLineNo">183</span>   */<a name="line.183"></a>
 <span class="sourceLineNo">184</span>  @Test<a name="line.184"></a>
 <span class="sourceLineNo">185</span>  public void testIncrementMultiThreads() throws IOException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // run a with mixed column families (1 and 3 versions)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // create 25 threads, each will increment by its own quantity<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    int numThreads = 25;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    int incrementsPerThread = 1000;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    int expectedTotal = 0;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // create all threads<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      expectedTotal += (i * incrementsPerThread);<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>    // run all threads<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        all[i].join();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      } catch (InterruptedException e) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    assertICV(row, fam1, qual2, expectedTotal*2);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    assertICV(row, fam2, qual3, expectedTotal*3);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private void assertICV(byte [] row,<a name="line.221"></a>
-<span class="sourceLineNo">222</span>                         byte [] familiy,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>                         byte[] qualifier,<a name="line.223"></a>
-<span class="sourceLineNo">224</span>                         long amount) throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // run a get and see?<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    Get get = new Get(row);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    get.addColumn(familiy, qualifier);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    Result result = region.get(get);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    assertEquals(1, result.size());<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Cell kv = result.rawCells()[0];<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    assertEquals(amount, r);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      byte[] ... families)<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    byte[] ... families)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  throws IOException {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    int i=0;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    for(byte [] family : families) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      htd.addFamily(hcd);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * A thread that makes a few increment calls<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static class Incrementer extends Thread {<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final Region region;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final int numIncrements;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final int amount;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">186</span>    boolean fast = true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // run a with mixed column families (1 and 3 versions)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // Create 100 threads, each will increment by its own quantity. All 100 threads update the<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // same row over two column families.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    int numThreads = 100;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    int incrementsPerThread = 1000;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    int expectedTotal = 0;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // create all threads<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      expectedTotal += (i * incrementsPerThread);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    // run all threads<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      try {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        all[i].join();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      } catch (InterruptedException e) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal, fast);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    assertICV(row, fam1, qual2, expectedTotal*2, fast);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    assertICV(row, fam2, qual3, expectedTotal*3, fast);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private void assertICV(byte [] row,<a name="line.223"></a>
+<span class="sourceLineNo">224</span>                         byte [] familiy,<a name="line.224"></a>
+<span class="sourceLineNo">225</span>                         byte[] qualifier,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>                         long amount,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>                         boolean fast) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    // run a get and see?<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    Get get = new Get(row);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    if (fast) get.setIsolationLevel(IsolationLevel.READ_UNCOMMITTED);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    get.addColumn(familiy, qualifier);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Result result = region.get(get);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    assertEquals(1, result.size());<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    Cell kv = result.rawCells()[0];<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    assertEquals(amount, r);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      byte[] ... families)<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    throws IOException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    byte[] ... families)<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    int i=0;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    for(byte [] family : families) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      htd.addFamily(hcd);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<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 thread that makes increment calls always on the same row, this.row against two column<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * families on this row.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public static class Incrementer extends Thread {<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public Incrementer(Region region,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        int threadNumber, int amount, int numIncrements) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      super("incrementer." + threadNumber);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.region = region;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      this.numIncrements = numIncrements;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.amount = amount;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      setDaemon(true);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    public void run() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        try {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          Increment inc = new Increment(row);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          inc.addColumn(fam1, qual1, amount);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>          // verify: Make sure we only see completed increments<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          Get g = new Get(row);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          Result result = region.get(g);<a name="line.288"></a>
+<span class="sourceLineNo">266</span>    private final Region region;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    private final int numIncrements;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final int amount;<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>    public Incrementer(Region region, int threadNumber, int amount, int numIncrements) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      super("Incrementer." + threadNumber);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      this.region = region;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this.numIncrements = numIncrements;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this.amount = amount;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      setDaemon(true);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public void run() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        try {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          Increment inc = new Increment(row);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          inc.addColumn(fam1, qual1, amount);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          Result result = region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.288"></a>
 <span class="sourceLineNo">289</span>          if (result != null) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            assertTrue(result.getValue(fam1, qual1) != null);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            assertTrue(result.getValue(fam1, qual2) != null);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.293"></a>
-<span class="sourceLineNo">294</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } catch (IOException e) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          e.printStackTrace();<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>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  @Test<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  public void testAppendMultiThreads() throws IOException {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    // run a with mixed column families (1 and 3 versions)<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    int numThreads = 100;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int opsPerThread = 100;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    final byte[] val = new byte[]{1};<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    // create all threads<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        public void run() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            try {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>              Append a = new Append(row);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>              a.add(fam1, qual1, val);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              a.add(fam1, qual2, val);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>              a.add(fam2, qual3, val);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>              Get g = new Get(row);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              Result result = region.get(g);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.333"></a>
-<span class="sourceLineNo">334</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.334"></a>
-<span class="sourceLineNo">335</span>            } catch (IOException e) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>              e.printStackTrace();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              failures.incrementAndGet();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>              fail();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>            }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      };<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // run all threads<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      try {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        all[i].join();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Get g = new Get(row);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    Result result = region.get(g);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // create 10 threads, each will alternate between adding and<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // removing a column<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    int numThreads = 10;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    int opsPerThread = 250;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    // create all threads<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        @Override<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        public void run() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>          boolean op = true;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            try {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>              // throw in some flushes<a name="line.388"></a>
-<span class="sourceLineNo">389</span>              if (i%10==0) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>                synchronized(region) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>                  LOG.debug("flushing");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>                  region.flush(true);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>                  if (i%100==0) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>                    region.compact(false);<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>              }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>              long ts = timeStamps.incrementAndGet();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>              RowMutations rm = new RowMutations(row);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>              if (op) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>                Put p = new Put(row, ts);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>                p.addColumn(fam1, qual1, value1);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>                rm.add(p);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>                Delete d = new Delete(row);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>                d.addColumns(fam1, qual2, ts);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>                rm.add(d);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              } else {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                Delete d = new Delete(row);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                d.addColumns(fam1, qual1, ts);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>                rm.add(d);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>                Put p = new Put(row, ts);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>                p.addColumn(fam1, qual2, value2);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>                rm.add(p);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>              }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>              region.mutateRow(rm);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>              op ^= true;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>              // check: should always see exactly one column<a name="line.421"></a>
-<span class="sourceLineNo">422</span>              Get g = new Get(row);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>              Result r = region.get(g);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>              if (r.size() != 1) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                LOG.debug(r);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>                failures.incrementAndGet();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>                fail();<a name="line.427"></a>
-<span class="sourceLineNo">428</span>              }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>            } catch (IOException e) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>              e.printStackTrace();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>              failures.incrementAndGet();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>              fail();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>            }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      };<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // run all threads<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      all[i].start();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // wait for all threads to finish<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      try {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        all[i].join();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>  /**<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * Test multi-threaded region mutations.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  @Test<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // create 10 threads, each will alternate between adding and<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // removing a column<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    int numThreads = 10;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    int opsPerThread = 250;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // create all threads<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        public void run() {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          boolean op = true;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            try {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>              // throw in some flushes<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              if (i%10==0) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>                synchronized(region) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>                  LOG.debug("flushing");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>                  region.flush(true);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>                  if (i%100==0) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>                    region.compact(false);<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>              long ts = timeStamps.incrementAndGet();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              if (op) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>                Put p = new Put(row2, ts);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>                p.addColumn(fam1, qual1, value1);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>                mrm.add(p);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>                Delete d = new Delete(row);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>                d.addColumns(fam1, qual1, ts);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>                mrm.add(d);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>              } else {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>                Delete d = new Delete(row2);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>                d.addColumns(fam1, qual1, ts);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>                mrm.add(d);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>                Put p = new Put(row, ts);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                p.addColumn(fam1, qual1, value2);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>                mrm.add(p);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>              }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>              op ^= true;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>              // check: should always see exactly one column<a name="line.514"></a>
-<span class="sourceLineNo">515</span>              Scan s = new Scan(row);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>              RegionScanner rs = region.getScanner(s);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>              while (rs.next(r))<a name="line.518"></a>
-<span class="sourceLineNo">519</span>                ;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              rs.close();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              if (r.size() != 1) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>                LOG.debug(r);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>                failures.incrementAndGet();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>                fail();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>            } catch (IOException e) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>              e.printStackTrace();<a name="line.527"></a>
-<span class="sourceLineNo">528</span>              failures.incrementAndGet();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>              fail();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>            }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>          }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      };<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // run all threads<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      all[i].start();<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    // wait for all threads to finish<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      try {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        all[i].join();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public static class AtomicOperation extends Thread {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    protected final Region region;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    protected final int numOps;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    protected final AtomicLong timeStamps;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    protected final AtomicInteger failures;<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    protected final Random r = new Random();<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        AtomicInteger failures) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      this.region = region;<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.numOps = numOps;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      this.timeStamps = timeStamps;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      this.failures = failures;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  }<a name="line.565"></a>
-<span class="sourceLineNo">566</span>  <a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private enum TestStep {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    PUT_COMPLETED,         // put complete (released RowLock, but may not have advanced MVCC).<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    CHECKANDPUT_STARTED,   // began checkAndPut: if 10 -&gt; 11<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    CHECKANDPUT_COMPLETED  // completed checkAndPut<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    // NOTE: at the end of these steps, the value of the cell should be 50, not 11!<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  private static volatile TestStep testStep = TestStep.INIT;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>  private final String family = "f1";<a name="line.577"></a>
-<span class="sourceLineNo">578</span>     <a name="line.578"></a>
-<span class="sourceLineNo">579</span>  /**<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Test written as a verifier for HBASE-7051, CheckAndPut should properly read<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * MVCC. <a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * <a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * Moved into TestAtomicOperation from its original location, TestHBase7051<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testPutAndCheckAndPutInParallel() throws Exception {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    final String tableName = "testPutAndCheckAndPut";<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    conf.setClass(HConstants.REGION_IMPL, MockHRegion.class, HeapSize.class);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName))<a name="line.590"></a>
-<span class="sourceLineNo">591</span>        .addFamily(new HColumnDescriptor(family));<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    this.region = TEST_UTIL.createLocalHRegion(htd, null, null);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Put[] puts = new Put[1];<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    Put put = new Put(Bytes.toBytes("r1"));<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("10"));<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    puts[0] = put;<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    <a name="line.597"></a>
-<span class="sourceLineNo">598</span>    region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    MultithreadedTestUtil.TestContext ctx =<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      new MultithreadedTestUtil.TestContext(conf);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    ctx.addThread(new PutThread(ctx, region));<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    ctx.addThread(new CheckAndPutThread(ctx, region));<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    ctx.startThreads();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    while (testStep != TestStep.CHECKANDPUT_COMPLETED) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      Thread.sleep(100);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    ctx.stop();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    Scan s = new Scan();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    RegionScanner scanner = region.getScanner(s);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    List&lt;Cell&gt; results = new ArrayList&lt;Cell&gt;();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    ScannerContext scannerContext = ScannerContext.newBuilder().setBatchLimit(2).build();<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    scanner.next(results, scannerContext);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    for (Cell keyValue : results) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      assertEquals("50",Bytes.toString(CellUtil.cloneValue(keyValue)));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  private class PutThread extends TestThread {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    private Region region;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    PutThread(TestContext ctx, Region region) {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      super(ctx);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      this.region = region;<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    }<a name="line.623"></a>
-<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span>    public void doWork() throws Exception {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      Put[] puts = new Put[1];<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("50"));<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      puts[0] = put;<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      testStep = TestStep.PUT_STARTED;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    }<a name="line.632"></a>
-<span class="sourceLineNo">633</span>  }<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>  private class CheckAndPutThread extends TestThread {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    private Region region;<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    CheckAndPutThread(TestContext ctx, Region region) {<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      super(ctx);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      this.region = region;<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   }<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>    public void doWork() throws Exception {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      Put[] puts = new Put[1];<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("11"));<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      puts[0] = put;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      while (testStep != TestStep.PUT_COMPLETED) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        Thread.sleep(100);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      testStep = TestStep.CHECKANDPUT_STARTED;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      region.checkAndMutate(Bytes.toBytes("r1"), Bytes.toBytes(family), Bytes.toBytes("q1"),<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("10")), put, true);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      testStep = TestStep.CHECKANDPUT_COMPLETED;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>  public static class MockHRegion extends HRegion {<a name="line.657"></a>
-<span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    public MockHRegion(Path tableDir, WAL log, FileSystem fs, Configuration conf,<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        final HRegionInfo regionInfo, final HTableDescriptor htd, RegionServerServices rsServices) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      super(tableDir, log, fs, conf, regionInfo, htd, rsServices);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    @Override<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    public RowLock getRowLock(final byte[] row, boolean readLock) throws IOException {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      if (testStep == TestStep.CHECKANDPUT_STARTED) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        latch.countDown();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      return new WrappedRowLock(super.getRowLock(row, readLock));<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    <a name="line.671"></a>
-<span class="sourceLineNo">672</span>    public class WrappedRowLock implements RowLock {<a name="line.672"></a>
-<span class="sourceLineNo">673</span><a name="line.673"></a>
-<span class="sourceLineNo">674</span>      private final RowLock rowLock;<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>      private WrappedRowLock(RowLock rowLock) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>        this.rowLock = rowLock;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      }<a name="line.678"></a>
+<span class="sourceLineNo">290</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.291"></a>
+<span class="sourceLineNo">292</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.295"></a>
+<span class="sourceLineNo">296</span>               Bytes.toLong(result.getValue(fam1, qual2)));<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            long fam1Increment = Bytes.toLong(result.getValue(fam1, qual1))*3;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>            long fam2Increment = Bytes.toLong(result.getValue(fam2, qual3));<a name="line.298"></a>
+<span class="sourceLineNo">299</span>            assertEquals("fam1=" + fam1Increment + ", fam2=" + fam2Increment,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              fam1Increment, fam2Increment);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        } catch (IOException e) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          e.printStackTrace();<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>    }<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>  @Test<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public void testAppendMultiThreads() throws IOException {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // run a with mixed column families (1 and 3 versions)<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    int numThreads = 100;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    int opsPerThread = 100;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    final byte[] val = new byte[]{1};<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    // create all threads<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        @Override<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        public void run() {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>            try {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>              Append a = new Append(row);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>              a.add(fam1, qual1, val);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>              a.add(fam1, qual2, val);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>              a.add(fam2, qual3, val);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>              Get g = new Get(row);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>              Result result = region.get(g);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.337"></a>
+<span class="sourceLineNo">338</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.338"></a>
+<span class="sourceLineNo">339</span>            } catch (IOException e) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>              e.printStackTrace();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              failures.incrementAndGet();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>              fail();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>            }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      };<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    // run all threads<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      all[i].start();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    // wait for all threads to finish<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      try {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        all[i].join();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    Get g = new Get(row);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    Result result = region.get(g);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  @Test<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    // create 10 threads, each will alternate between adding and<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // removing a column<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    int numThreads = 10;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    int opsPerThread = 250;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // create all threads<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        @Override<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        public void run() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          boolean op = true;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            try {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              // throw in some flushes<a name="line.392"></a>
+<span class="sourceLineNo">393</span>              if (i%10==0) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>                synchronized(region) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>                  LOG.debug("flushing");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>                  region.flush(true);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>                  if (i%100==0) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>                    region.compact(false);<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>              }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>              long ts = timeStamps.incrementAndGet();<a name="line.402"></a>
+<span class="sourceLineNo">403</span>              RowMutations rm = new RowMutations(row);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              if (op) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                Put p = new Put(row, ts);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                p.addColumn(fam1, qual1, value1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>                rm.add(p);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>                Delete d = new Delete(row);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>                d.addColumns(fam1, qual2, ts);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>                rm.add(d);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>              } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>                Delete d = new Delete(row);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>                d.addColumns(fam1, qual1, ts);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>                rm.add(d);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>                Put p = new Put(row, ts);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>                p.addColumn(fam1, qual2, value2);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                rm.add(p);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>              }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>              region.mutateRow(rm);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>              op ^= true;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>              // check: should always see exactly one column<a name="line.425"></a>
+<span class="sourceLineNo">426</span>              Get g = new Get(row);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>              Result r = region.get(g);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>              if (r.size() != 1) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>                LOG.debug(r);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>                failures.incrementAndGet();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>                fail();<a name="line.431"></a>
+<span class="sourceLineNo">432</span>              }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>            } catch (IOException e) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>              e.printStackTrace();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>              failures.incrementAndGet();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>              fail();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>            }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      };<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // run all threads<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      try {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        all[i].join();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } catch (InterruptedException e) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(0, failures.get());<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><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * Test multi-threaded region mutations.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  @Test<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    // create 10 threads, each will alternate between adding and<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    // removing a column<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    int numThreads = 10;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    int opsPerThread = 250;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // create all threads<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        @Override<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        public void run() {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          boolean op = true;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>            try {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>              // throw in some flushes<a name="line.485"></a>
+<span class="sourceLineNo">486</span>              if (i%10==0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>                synchronized(region) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>                  LOG.debug("flushing");<a name="line.488"></a>
+<span class="sourceLineNo">489</span>                  region.flush(true);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>                  if (i%100==0) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>                    region.compact(false);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>                  }<a name="line.492"></a>
+<span class="sourceLineNo">493</span>                }<a name="line.493"></a>
+<span class="sourceLineNo">494</span>              }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>              long ts = timeStamps.incrementAndGet();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>              if (op) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>                Put p = new Put(row2, ts);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>                p.addColumn(fam1, qual1, value1);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>                mrm.add(p);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>                Delete d = new Delete(row);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>                d.addColumns(fam1, qual1, ts);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>                mrm.add(d);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>              } else {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>                Delete d = new Delete(row2);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>                d.addColumns(fam1, qual1, ts);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>                mrm.add(d);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>                Put p = new Put(row, ts);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>                p.addColumn(fam1, qual1, value2);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>                mrm.add(p);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>              }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>              op ^= true;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>              // check: should always see exactly one column<a name="line.518"></a>
+<span class="sourceLineNo">519</span>              Scan s = new Scan(row);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>              RegionScanner rs = region.getScanner(s);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>              while (rs.next(r))<a name="line.522"></a>
+<span class="sourceLineNo">523</span>                ;<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              rs.close();<a name="line.524"></a>
+<span class="sourceLineNo">525</span>              if (r.size() != 1) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>                LOG.debug(r);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>                failures.incrementAndGet();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>                fail();<a name="line.528"></a>
+<span class="sourceLineNo">529</span>              }<a name="line.529"></a>
+<span class="sourceLineNo">530</span>            } catch (IOException e) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>              e.printStackTrace();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>              failures.incrementAndGet();<a name="line.532"></a>
+<span class="sourceLineNo">533</span>              fail();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>          }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        }<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      };<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span>    // run all threads<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      all[i].start();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>    // wait for all threads to finish<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      try {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>        all[i].join();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      } catch (InterruptedException e) {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    assertEquals(0, failures.get());<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  public static class AtomicOperation extends Thread {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    protected final Region region;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    protected final int numOps;<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    protected final AtomicLong timeStamps;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    protected final AtomicInteger failures;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    protected final Random r = new Random();<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>        AtomicInteger failures) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      this.region = region;<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      this.numOps = numOps;<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.timeStamps = timeStamps;<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      this.failures = failures;<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>  <a name="line.570"></a>
+<span class="sourceLineNo">571</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private enum TestStep {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    PUT_COMPLETED,         // put compl

<TRUNCATED>

[27/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide.html
index d07d685..f20a6fd 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide.html
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.121">TestFromClientSide</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.120">TestFromClientSide</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Run tests that use the HBase clients; <code>Table</code>.
  Sets up the HBase mini cluster once at start and runs through all client tests.
@@ -219,7 +219,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#assertEmptyResult(org.apache.hadoop.hbase.client.Result)">assertEmptyResult</a></strong>(org.apache.hadoop.hbase.client.Result&nbsp;result)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private void</code></td>
+<td class="colFirst"><code>(package private) static void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#assertIncrementKey(org.apache.hadoop.hbase.Cell,%20byte[],%20byte[],%20byte[],%20long)">assertIncrementKey</a></strong>(org.apache.hadoop.hbase.Cell&nbsp;key,
                                     byte[]&nbsp;row,
                                     byte[]&nbsp;family,
@@ -321,7 +321,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
                           <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keyPrefix)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private boolean</code></td>
+<td class="colFirst"><code>(package private) static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#equals(byte[],%20byte[])">equals</a></strong>(byte[]&nbsp;left,
             byte[]&nbsp;right)</code>&nbsp;</td>
 </tr>
@@ -711,30 +711,6 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrement()">testIncrement</a></strong>()</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementingInvalidValue()">testIncrementingInvalidValue</a></strong>()</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementInvalidArguments()">testIncrementInvalidArguments</a></strong>()</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementOnSameColumn()">testIncrementOnSameColumn</a></strong>()</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementOutOfOrder()">testIncrementOutOfOrder</a></strong>()</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementWithDeletes()">testIncrementWithDeletes</a></strong>()</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJira6912()">testJira6912</a></strong>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -1085,7 +1061,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestFromClientSide</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.121">TestFromClientSide</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.120">TestFromClientSide</a>()</pre>
 </li>
 </ul>
 </li>
@@ -1996,12 +1972,12 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>assertIncrementKey</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.3049">assertIncrementKey</a>(org.apache.hadoop.hbase.Cell&nbsp;key,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.3049">assertIncrementKey</a>(org.apache.hadoop.hbase.Cell&nbsp;key,
                       byte[]&nbsp;row,
                       byte[]&nbsp;family,
                       byte[]&nbsp;qualifier,
                       long&nbsp;value)
-                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
 </li>
@@ -2191,7 +2167,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.3273">equals</a>(byte[]&nbsp;left,
+<pre>static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.3273">equals</a>(byte[]&nbsp;left,
              byte[]&nbsp;right)</pre>
 </li>
 </ul>
@@ -2495,85 +2471,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
 </li>
 </ul>
-<a name="testIncrementWithDeletes()">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testIncrementWithDeletes</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4402">testIncrementWithDeletes</a>()
-                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
-<dl><dt><span class="strong">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
-</li>
-</ul>
-<a name="testIncrementingInvalidValue()">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testIncrementingInvalidValue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4424">testIncrementingInvalidValue</a>()
-                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
-<dl><dt><span class="strong">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
-</li>
-</ul>
-<a name="testIncrementInvalidArguments()">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testIncrementInvalidArguments</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4450">testIncrementInvalidArguments</a>()
-                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
-<dl><dt><span class="strong">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
-</li>
-</ul>
-<a name="testIncrementOutOfOrder()">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testIncrementOutOfOrder</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4505">testIncrementOutOfOrder</a>()
-                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
-<dl><dt><span class="strong">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
-</li>
-</ul>
-<a name="testIncrementOnSameColumn()">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testIncrementOnSameColumn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4545">testIncrementOnSameColumn</a>()
-                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
-<dl><dt><span class="strong">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
-</li>
-</ul>
-<a name="testIncrement()">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>testIncrement</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4588">testIncrement</a>()
-                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
-<dl><dt><span class="strong">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
-</li>
-</ul>
 <a name="testClientPoolRoundRobin()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>testClientPoolRoundRobin</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4660">testClientPoolRoundRobin</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4402">testClientPoolRoundRobin</a>()
                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2585,7 +2489,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testClientPoolThreadLocal</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4696">testClientPoolThreadLocal</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4438">testClientPoolThreadLocal</a>()
                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2597,7 +2501,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndPut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4778">testCheckAndPut</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4520">testCheckAndPut</a>()
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2609,7 +2513,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndPutWithCompareOp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4817">testCheckAndPutWithCompareOp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4559">testCheckAndPutWithCompareOp</a>()
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2621,7 +2525,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckAndDeleteWithCompareOp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4882">testCheckAndDeleteWithCompareOp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4624">testCheckAndDeleteWithCompareOp</a>()
                                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2633,7 +2537,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanMetrics</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4961">testScanMetrics</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4703">testScanMetrics</a>()
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test ScanMetrics</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -2646,7 +2550,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanMetrics</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.client.metrics.ScanMetrics&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5081">getScanMetrics</a>(org.apache.hadoop.hbase.client.Scan&nbsp;scan)
+<pre>private&nbsp;org.apache.hadoop.hbase.client.metrics.ScanMetrics&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4823">getScanMetrics</a>(org.apache.hadoop.hbase.client.Scan&nbsp;scan)
                                                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2658,7 +2562,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCacheOnWriteEvictOnClose</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5099">testCacheOnWriteEvictOnClose</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4841">testCacheOnWriteEvictOnClose</a>()
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests that cache on write works all the way up from the client-side.
 
@@ -2674,7 +2578,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForStoreFileCount</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5200">waitForStoreFileCount</a>(org.apache.hadoop.hbase.regionserver.Store&nbsp;store,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4942">waitForStoreFileCount</a>(org.apache.hadoop.hbase.regionserver.Store&nbsp;store,
                          int&nbsp;count,
                          int&nbsp;timeout)
                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -2688,7 +2592,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testNonCachedGetRegionLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5216">testNonCachedGetRegionLocation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.4958">testNonCachedGetRegionLocation</a>()
                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2700,7 +2604,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetRegionsInRange</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5264">testGetRegionsInRange</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5006">testGetRegionsInRange</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2712,7 +2616,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionsInRange</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.HRegionLocation&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5324">getRegionsInRange</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.HRegionLocation&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5066">getRegionsInRange</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                               byte[]&nbsp;startKey,
                                                               byte[]&nbsp;endKey)
                                                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -2726,7 +2630,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testJira6912</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5341">testJira6912</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5083">testJira6912</a>()
                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2738,7 +2642,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testScan_NullQualifier</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5368">testScan_NullQualifier</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5110">testScan_NullQualifier</a>()
                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2750,7 +2654,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testNegativeTimestamp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5397">testNegativeTimestamp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5139">testNegativeTimestamp</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2762,7 +2666,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testIllegalTableDescriptor</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5457">testIllegalTableDescriptor</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5199">testIllegalTableDescriptor</a>()
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2774,7 +2678,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>checkTableIsLegal</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5582">checkTableIsLegal</a>(org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5324">checkTableIsLegal</a>(org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd)
                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2786,7 +2690,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>checkTableIsIllegal</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5590">checkTableIsIllegal</a>(org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5332">checkTableIsIllegal</a>(org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd)
                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2798,7 +2702,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRawScanRespectsVersions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5602">testRawScanRespectsVersions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5344">testRawScanRespectsVersions</a>()
                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2810,7 +2714,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSmallScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5672">testSmallScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5414">testSmallScan</a>()
                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2822,7 +2726,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSuperSimpleWithReverseScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5709">testSuperSimpleWithReverseScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5451">testSuperSimpleWithReverseScan</a>()
                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2834,7 +2738,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testFiltersWithReverseScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5754">testFiltersWithReverseScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5496">testFiltersWithReverseScan</a>()
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2846,7 +2750,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testKeyOnlyFilterWithReverseScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5796">testKeyOnlyFilterWithReverseScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5538">testKeyOnlyFilterWithReverseScan</a>()
                                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2858,7 +2762,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSimpleMissingWithReverseScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5837">testSimpleMissingWithReverseScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5579">testSimpleMissingWithReverseScan</a>()
                                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test simple table and non-existent row cases.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -2871,7 +2775,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testNullWithReverseScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5902">testNullWithReverseScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5644">testNullWithReverseScan</a>()
                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2883,7 +2787,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeletesWithReverseScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5939">testDeletesWithReverseScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5681">testDeletesWithReverseScan</a>()
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2895,7 +2799,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReversedScanUnderMultiRegions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.6124">testReversedScanUnderMultiRegions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5866">testReversedScanUnderMultiRegions</a>()
                                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests reversed scan under multi regions</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -2908,7 +2812,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSmallReversedScanUnderMultiRegions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.6183">testSmallReversedScanUnderMultiRegions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5925">testSmallReversedScanUnderMultiRegions</a>()
                                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests reversed scan under multi regions</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -2921,7 +2825,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>reverseScanTest</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.6223">reverseScanTest</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5965">reverseScanTest</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                    boolean&nbsp;small)
                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -2934,7 +2838,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetStartEndKeysWithRegionReplicas</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.6347">testGetStartEndKeysWithRegionReplicas</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.6089">testGetStartEndKeysWithRegionReplicas</a>()
                                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2946,7 +2850,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testFilterAllRecords</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.6384">testFilterAllRecords</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.6126">testFilterAllRecords</a>()
                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.html
index 1e84dc7..c2b79b0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.html
@@ -95,7 +95,7 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.54">TestFromClientSide3</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.53">TestFromClientSide3</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -291,7 +291,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.55">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.54">LOG</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -300,7 +300,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.56">TEST_UTIL</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.55">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="FAMILY">
@@ -309,7 +309,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILY</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.58">FAMILY</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.57">FAMILY</a></pre>
 </li>
 </ul>
 <a name="random">
@@ -318,7 +318,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>random</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.59">random</a></pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.58">random</a></pre>
 </li>
 </ul>
 <a name="SLAVES">
@@ -327,7 +327,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>SLAVES</h4>
-<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.60">SLAVES</a></pre>
+<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.59">SLAVES</a></pre>
 </li>
 </ul>
 <a name="ROW">
@@ -336,7 +336,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ROW</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.61">ROW</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.60">ROW</a></pre>
 </li>
 </ul>
 <a name="ANOTHERROW">
@@ -345,7 +345,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ANOTHERROW</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.62">ANOTHERROW</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.61">ANOTHERROW</a></pre>
 </li>
 </ul>
 <a name="QUALIFIER">
@@ -354,7 +354,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>QUALIFIER</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.63">QUALIFIER</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.62">QUALIFIER</a></pre>
 </li>
 </ul>
 <a name="VALUE">
@@ -363,7 +363,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>VALUE</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.64">VALUE</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.63">VALUE</a></pre>
 </li>
 </ul>
 <a name="COL_QUAL">
@@ -372,7 +372,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>COL_QUAL</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.65">COL_QUAL</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.64">COL_QUAL</a></pre>
 </li>
 </ul>
 <a name="VAL_BYTES">
@@ -381,7 +381,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>VAL_BYTES</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.66">VAL_BYTES</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.65">VAL_BYTES</a></pre>
 </li>
 </ul>
 <a name="ROW_BYTES">
@@ -390,7 +390,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ROW_BYTES</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.67">ROW_BYTES</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.66">ROW_BYTES</a></pre>
 </li>
 </ul>
 </li>
@@ -407,7 +407,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestFromClientSide3</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.54">TestFromClientSide3</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.53">TestFromClientSide3</a>()</pre>
 </li>
 </ul>
 </li>
@@ -424,7 +424,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpBeforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.73">setUpBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.72">setUpBeforeClass</a>()
                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -436,7 +436,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDownAfterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.83">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.82">tearDownAfterClass</a>()
                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -448,7 +448,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.91">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.90">setUp</a>()
            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -460,7 +460,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.99">tearDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.98">tearDown</a>()
               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -472,7 +472,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>randomCFPuts</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.106">randomCFPuts</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.105">randomCFPuts</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                 byte[]&nbsp;row,
                 byte[]&nbsp;family,
                 int&nbsp;nPuts)
@@ -487,7 +487,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>performMultiplePutAndFlush</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.117">performMultiplePutAndFlush</a>(org.apache.hadoop.hbase.client.HBaseAdmin&nbsp;admin,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.116">performMultiplePutAndFlush</a>(org.apache.hadoop.hbase.client.HBaseAdmin&nbsp;admin,
                               org.apache.hadoop.hbase.client.Table&nbsp;table,
                               byte[]&nbsp;row,
                               byte[]&nbsp;family,
@@ -504,7 +504,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAdvancedConfigOverride</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.140">testAdvancedConfigOverride</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.139">testAdvancedConfigOverride</a>()
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -516,7 +516,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testHTableBatchWithEmptyPut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.265">testHTableBatchWithEmptyPut</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.264">testHTableBatchWithEmptyPut</a>()
                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -528,7 +528,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testHTableExistsMethodSingleRegionSingleGet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.289">testHTableExistsMethodSingleRegionSingleGet</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.288">testHTableExistsMethodSingleRegionSingleGet</a>()
                                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -540,7 +540,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testHTableExistsMethodSingleRegionMultipleGets</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.309">testHTableExistsMethodSingleRegionMultipleGets</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.308">testHTableExistsMethodSingleRegionMultipleGets</a>()
                                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -552,7 +552,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testHTableExistsBeforeGet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.329">testHTableExistsBeforeGet</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.328">testHTableExistsBeforeGet</a>()
                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -564,7 +564,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testHTableExistsAllBeforeGet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.351">testHTableExistsAllBeforeGet</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.350">testHTableExistsAllBeforeGet</a>()
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -576,7 +576,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testHTableExistsMethodMultipleRegionsSingleGet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.384">testHTableExistsMethodMultipleRegionsSingleGet</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.383">testHTableExistsMethodMultipleRegionsSingleGet</a>()
                                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -588,7 +588,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testHTableExistsMethodMultipleRegionsMultipleGets</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.403">testHTableExistsMethodMultipleRegionsMultipleGets</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.402">testHTableExistsMethodMultipleRegionsMultipleGets</a>()
                                                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -600,7 +600,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testGetEmptyRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.452">testGetEmptyRow</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.451">testGetEmptyRow</a>()
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html
index 7fd3e35..e7f73d7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html
@@ -103,7 +103,7 @@
 <pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#line.34">TestFromClientSideWithCoprocessor</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></pre>
 <div class="block">Test all client operations with a coprocessor that
- just implements the default flush/compact/scan policy</div>
+ just implements the default flush/compact/scan policy.</div>
 </li>
 </ul>
 </div>
@@ -164,7 +164,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSid
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#setUp()">setUp</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#tearDown()">tearDown</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#tearDownAfterClass()">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testAddKeyValue()">testAddKeyValue</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testAppend()">testAppend</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testCacheOnWriteEvictOnClose()">testCacheOnWriteEvictOnClose</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testCheckAndDeleteWithCompareOp()">testCheckAndDeleteWithCompareOp</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testCheckAndPut()">testCheckAndPut</a>, <a href="../../../.
 ./../org/apache/hadoop/hbase/client/TestFromClientSide.html#testCheckAndPutWithCompareOp()">testCheckAndPutWithCompareOp</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testClientPoolRoundRobin()">testClientPoolRoundRobin</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testClientPoolThreadLocal()">testClientPoolThreadLocal</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testDeleteFamilyVersion()">testDeleteFamilyVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testDeleteFamilyVersionWithOtherDeletes()">testDeleteFamilyVersionWithOtherDeletes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testDeletes()">testDeletes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testDeletesWithReverseScan()">testDeletesWithReverseScan</a>, <a href="../../../../../org/apache/hadoop
 /hbase/client/TestFromClientSide.html#testDuplicateVersions()">testDuplicateVersions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testFilterAcrossMultipleRegions()">testFilterAcrossMultipleRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testFilterAllRecords()">testFilterAllRecords</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testFilters()">testFilters</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testFiltersWithReverseScan()">testFiltersWithReverseScan</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testFilterWithLongCompartor()">testFilterWithLongCompartor</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGet_EmptyTable()">testGet_EmptyTable</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGet_NonExistentRow()">te
 stGet_NonExistentRow</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGet_NullQualifier()">testGet_NullQualifier</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGetClosestRowBefore()">testGetClosestRowBefore</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGetConfiguration()">testGetConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGetRegionsInRange()">testGetRegionsInRange</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGetStartEndKeysWithRegionReplicas()">testGetStartEndKeysWithRegionReplicas</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testHBase737()">testHBase737</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIllegalTableDescriptor()">testIllegalTableDescriptor</a>, <a href="../../../../../org/
 apache/hadoop/hbase/client/TestFromClientSide.html#testIncrement()">testIncrement</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementingInvalidValue()">testIncrementingInvalidValue</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementInvalidArguments()">testIncrementInvalidArguments</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementOnSameColumn()">testIncrementOnSameColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementOutOfOrder()">testIncrementOutOfOrder</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementWithDeletes()">testIncrementWithDeletes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJira6912()">testJira6912</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJiraTest101
 4()">testJiraTest1014</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJiraTest1182()">testJiraTest1182</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJiraTest33()">testJiraTest33</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJiraTest52()">testJiraTest52</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJiraTest861()">testJiraTest861</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJiraTest867()">testJiraTest867</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testKeepDeletedCells()">testKeepDeletedCells</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testKeyOnlyFilter()">testKeyOnlyFilter</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testKeyOnlyFilterWithReverseScan()">testKeyOnl
 yFilterWithReverseScan</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testListTables()">testListTables</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testMajorCompactionBetweenTwoUpdates()">testMajorCompactionBetweenTwoUpdates</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testMaxKeyValueSize()">testMaxKeyValueSize</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testMillions()">testMillions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testMiscHTableStuff()">testMiscHTableStuff</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testMultipleRegionsAndBatchPuts()">testMultipleRegionsAndBatchPuts</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testMultipleRowMultipleFamily()">testMultipleRowMultipleFamily</a>, <a href="../../../../../or
 g/apache/hadoop/hbase/client/TestFromClientSide.html#testMultiRowMutation()">testMultiRowMutation</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testNegativeTimestamp()">testNegativeTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testNonCachedGetRegionLocation()">testNonCachedGetRegionLocation</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testNull()">testNull</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testNullWithReverseScan()">testNullWithReverseScan</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testPurgeFutureDeletes()">testPurgeFutureDeletes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testPut()">testPut</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testPutNoCF()">testPutNoCF</a>, <a href="../../../../../org
 /apache/hadoop/hbase/client/TestFromClientSide.html#testRawScanRespectsVersions()">testRawScanRespectsVersions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testReversedScanUnderMultiRegions()">testReversedScanUnderMultiRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testRowMutation()">testRowMutation</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testRowsPut()">testRowsPut</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testRowsPutBufferedManyManyFlushes()">testRowsPutBufferedManyManyFlushes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testRowsPutBufferedOneFlush()">testRowsPutBufferedOneFlush</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testScan_NullQualifier()">testScan_NullQualifier</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFrom
 ClientSide.html#testScanMetrics()">testScanMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testScanVariableReuse()">testScanVariableReuse</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSimpleMissing()">testSimpleMissing</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSimpleMissingWithReverseScan()">testSimpleMissingWithReverseScan</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSingleRowMultipleFamily()">testSingleRowMultipleFamily</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSmallReversedScanUnderMultiRegions()">testSmallReversedScanUnderMultiRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSmallScan()">testSmallScan</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSuperSimple()">testSuperSimp
 le</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSuperSimpleWithReverseScan()">testSuperSimpleWithReverseScan</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testUnmanagedHConnection()">testUnmanagedHConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testUnmanagedHConnectionReconnect()">testUnmanagedHConnectionReconnect</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testUpdates()">testUpdates</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testUpdatesWithMajorCompaction()">testUpdatesWithMajorCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testVersionLimits()">testVersionLimits</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testVersions()">testVersions</a>, <a href="../../../../../org/apache/hadoop/hbase/clie
 nt/TestFromClientSide.html#testWeirdCacheBehaviour()">testWeirdCacheBehaviour</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#assertIncrementKey(org.apache.hadoop.hbase.Cell,%20byte[],%20byte[],%20byte[],%20long)">assertIncrementKey</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#equals(byte[],%20byte[])">equals</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#setUp()">setUp</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#tearDown()">tearDown</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#tearDownAfterClass()">tearDownAfterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testAddKeyValue()">testAddKeyValue</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testAppend()">testAppend</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testCacheOnWriteEvictOnClose()">testCacheOnWrit
 eEvictOnClose</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testCheckAndDeleteWithCompareOp()">testCheckAndDeleteWithCompareOp</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testCheckAndPut()">testCheckAndPut</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testCheckAndPutWithCompareOp()">testCheckAndPutWithCompareOp</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testClientPoolRoundRobin()">testClientPoolRoundRobin</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testClientPoolThreadLocal()">testClientPoolThreadLocal</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testDeleteFamilyVersion()">testDeleteFamilyVersion</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testDeleteFamilyVersionWithOtherDeletes()">testDeleteFamilyVersionWithOth
 erDeletes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testDeletes()">testDeletes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testDeletesWithReverseScan()">testDeletesWithReverseScan</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testDuplicateVersions()">testDuplicateVersions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testFilterAcrossMultipleRegions()">testFilterAcrossMultipleRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testFilterAllRecords()">testFilterAllRecords</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testFilters()">testFilters</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testFiltersWithReverseScan()">testFiltersWithReverseScan</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClie
 ntSide.html#testFilterWithLongCompartor()">testFilterWithLongCompartor</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGet_EmptyTable()">testGet_EmptyTable</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGet_NonExistentRow()">testGet_NonExistentRow</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGet_NullQualifier()">testGet_NullQualifier</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGetClosestRowBefore()">testGetClosestRowBefore</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGetConfiguration()">testGetConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGetRegionsInRange()">testGetRegionsInRange</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testGetStartEndKeysWithRegionReplicas()">testGetStartEndKe
 ysWithRegionReplicas</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testHBase737()">testHBase737</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testIllegalTableDescriptor()">testIllegalTableDescriptor</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJira6912()">testJira6912</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJiraTest1014()">testJiraTest1014</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJiraTest1182()">testJiraTest1182</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJiraTest33()">testJiraTest33</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJiraTest52()">testJiraTest52</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJiraTest861()">testJiraTest861</a>, <a href="
 ../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testJiraTest867()">testJiraTest867</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testKeepDeletedCells()">testKeepDeletedCells</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testKeyOnlyFilter()">testKeyOnlyFilter</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testKeyOnlyFilterWithReverseScan()">testKeyOnlyFilterWithReverseScan</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testListTables()">testListTables</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testMajorCompactionBetweenTwoUpdates()">testMajorCompactionBetweenTwoUpdates</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testMaxKeyValueSize()">testMaxKeyValueSize</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.htm
 l#testMillions()">testMillions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testMiscHTableStuff()">testMiscHTableStuff</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testMultipleRegionsAndBatchPuts()">testMultipleRegionsAndBatchPuts</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testMultipleRowMultipleFamily()">testMultipleRowMultipleFamily</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testMultiRowMutation()">testMultiRowMutation</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testNegativeTimestamp()">testNegativeTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testNonCachedGetRegionLocation()">testNonCachedGetRegionLocation</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testNull()">testNull</a>, <a href="../../../../.
 ./org/apache/hadoop/hbase/client/TestFromClientSide.html#testNullWithReverseScan()">testNullWithReverseScan</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testPurgeFutureDeletes()">testPurgeFutureDeletes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testPut()">testPut</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testPutNoCF()">testPutNoCF</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testRawScanRespectsVersions()">testRawScanRespectsVersions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testReversedScanUnderMultiRegions()">testReversedScanUnderMultiRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testRowMutation()">testRowMutation</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testRowsPut()">testRowsPut</a>, <a href="
 ../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testRowsPutBufferedManyManyFlushes()">testRowsPutBufferedManyManyFlushes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testRowsPutBufferedOneFlush()">testRowsPutBufferedOneFlush</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testScan_NullQualifier()">testScan_NullQualifier</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testScanMetrics()">testScanMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testScanVariableReuse()">testScanVariableReuse</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSimpleMissing()">testSimpleMissing</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSimpleMissingWithReverseScan()">testSimpleMissingWithReverseScan</a>, <a href="../../../../../org/apache/hadoop/hbase
 /client/TestFromClientSide.html#testSingleRowMultipleFamily()">testSingleRowMultipleFamily</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSmallReversedScanUnderMultiRegions()">testSmallReversedScanUnderMultiRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSmallScan()">testSmallScan</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSuperSimple()">testSuperSimple</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testSuperSimpleWithReverseScan()">testSuperSimpleWithReverseScan</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testUnmanagedHConnection()">testUnmanagedHConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testUnmanagedHConnectionReconnect()">testUnmanagedHConnectionReconnect</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFr
 omClientSide.html#testUpdates()">testUpdates</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testUpdatesWithMajorCompaction()">testUpdatesWithMajorCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testVersionLimits()">testVersionLimits</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testVersions()">testVersions</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#testWeirdCacheBehaviour()">testWeirdCacheBehaviour</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrement.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrement.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrement.html
index b8310ed..bc332ee 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrement.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrement.html
@@ -36,7 +36,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestIncrement.html" target="_top">Frames</a></li>
@@ -134,7 +134,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrement.html#test()">test</a></strong>()</code>&nbsp;</td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrement.html#testIncrementInstance()">testIncrementInstance</a></strong>()</code>&nbsp;</td>
 </tr>
 </table>
 <ul class="blockList">
@@ -175,13 +175,13 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="test()">
+<a name="testIncrementInstance()">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>test</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrement.html#line.33">test</a>()</pre>
+<h4>testIncrementInstance</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrement.html#line.33">testIncrementInstance</a>()</pre>
 </li>
 </ul>
 </li>
@@ -211,7 +211,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Prev Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Next Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestIncrement.html" target="_top">Frames</a></li>


[21/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html
index 2beedba..0fc7c25 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html
@@ -113,7 +113,7 @@
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.517">TestRegionMergeTransactionOnCluster.MyMasterRpcServices</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.522">TestRegionMergeTransactionOnCluster.MyMasterRpcServices</a>
 extends org.apache.hadoop.hbase.master.MasterRpcServices</pre>
 </li>
 </ul>
@@ -242,7 +242,7 @@ extends org.apache.hadoop.hbase.master.MasterRpcServices</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>enabled</h4>
-<pre>static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.518">enabled</a></pre>
+<pre>static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.523">enabled</a></pre>
 </li>
 </ul>
 <a name="myMaster">
@@ -251,7 +251,7 @@ extends org.apache.hadoop.hbase.master.MasterRpcServices</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>myMaster</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.master.HMaster <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.520">myMaster</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.master.HMaster <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.525">myMaster</a></pre>
 </li>
 </ul>
 </li>
@@ -268,7 +268,7 @@ extends org.apache.hadoop.hbase.master.MasterRpcServices</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestRegionMergeTransactionOnCluster.MyMasterRpcServices</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.521">TestRegionMergeTransactionOnCluster.MyMasterRpcServices</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master)
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.526">TestRegionMergeTransactionOnCluster.MyMasterRpcServices</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master)
                                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -288,7 +288,7 @@ extends org.apache.hadoop.hbase.master.MasterRpcServices</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>reportRegionStateTransition</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.527">reportRegionStateTransition</a>(com.google.protobuf.RpcController&nbsp;c,
+<pre>public&nbsp;org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionResponse&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#line.532">reportRegionStateTransition</a>(com.google.protobuf.RpcController&nbsp;c,
                                                                                                                                   org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.ReportRegionStateTransitionRequest&nbsp;req)
                                                                                                                                     throws com.google.protobuf.ServiceException</pre>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
index 1560970..fcbd194 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html
@@ -528,7 +528,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMerge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.307">testMerge</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.312">testMerge</a>()
                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This test tests 1, merging region not online;
  2, merging same two regions; 3, merging unknown regions.
@@ -544,7 +544,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMergeWithReplicas</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.354">testMergeWithReplicas</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.359">testMergeWithReplicas</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -556,7 +556,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>mergeRegionsAndVerifyRegionNum</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.util.PairOfSameType&lt;org.apache.hadoop.hbase.HRegionInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.392">mergeRegionsAndVerifyRegionNum</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>private&nbsp;org.apache.hadoop.hbase.util.PairOfSameType&lt;org.apache.hadoop.hbase.HRegionInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.397">mergeRegionsAndVerifyRegionNum</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                                                                               org.apache.hadoop.hbase.TableName&nbsp;tablename,
                                                                                                               int&nbsp;regionAnum,
                                                                                                               int&nbsp;regionBnum,
@@ -572,7 +572,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>requestMergeRegion</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.util.PairOfSameType&lt;org.apache.hadoop.hbase.HRegionInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.401">requestMergeRegion</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>private&nbsp;org.apache.hadoop.hbase.util.PairOfSameType&lt;org.apache.hadoop.hbase.HRegionInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.406">requestMergeRegion</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                                                                   org.apache.hadoop.hbase.TableName&nbsp;tablename,
                                                                                                   int&nbsp;regionAnum,
                                                                                                   int&nbsp;regionBnum)
@@ -587,7 +587,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitAndVerifyRegionNum</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.415">waitAndVerifyRegionNum</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.420">waitAndVerifyRegionNum</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                           org.apache.hadoop.hbase.TableName&nbsp;tablename,
                           int&nbsp;expectedRegionNum)
                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -601,7 +601,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createTableAndLoadData</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.438">createTableAndLoadData</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>private&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.443">createTableAndLoadData</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                           org.apache.hadoop.hbase.TableName&nbsp;tablename)
                                                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -614,7 +614,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createTableAndLoadData</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.443">createTableAndLoadData</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
+<pre>private&nbsp;org.apache.hadoop.hbase.client.Table&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.448">createTableAndLoadData</a>(org.apache.hadoop.hbase.master.HMaster&nbsp;master,
                                                           org.apache.hadoop.hbase.TableName&nbsp;tablename,
                                                           int&nbsp;numRegions,
                                                           int&nbsp;replication)
@@ -629,7 +629,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>makeN</h4>
-<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.476">makeN</a>(byte[]&nbsp;base,
+<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.481">makeN</a>(byte[]&nbsp;base,
              int&nbsp;n)</pre>
 </li>
 </ul>
@@ -639,7 +639,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>loadData</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.484">loadData</a>(org.apache.hadoop.hbase.client.Table&nbsp;table)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.489">loadData</a>(org.apache.hadoop.hbase.client.Table&nbsp;table)
                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -651,7 +651,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>verifyRowCount</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.492">verifyRowCount</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.497">verifyRowCount</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                   int&nbsp;expectedRegionNum)
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html
index 1d4a3ff..a8d97df 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html
@@ -95,7 +95,7 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.68">TestRegionReplicaFailover</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.69">TestRegionReplicaFailover</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Tests failover of secondary region replicas.</div>
 </li>
@@ -287,7 +287,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.70">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.71">LOG</a></pre>
 </li>
 </ul>
 <a name="HTU">
@@ -296,7 +296,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>HTU</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.76">HTU</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.77">HTU</a></pre>
 </li>
 </ul>
 <a name="NB_SERVERS">
@@ -305,7 +305,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>NB_SERVERS</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.78">NB_SERVERS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.79">NB_SERVERS</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRegionReplicaFailover.NB_SERVERS">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -315,7 +315,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>families</h4>
-<pre>protected final&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.80">families</a></pre>
+<pre>protected final&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.81">families</a></pre>
 </li>
 </ul>
 <a name="fam">
@@ -324,7 +324,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>fam</h4>
-<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.82">fam</a></pre>
+<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.83">fam</a></pre>
 </li>
 </ul>
 <a name="qual1">
@@ -333,7 +333,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>qual1</h4>
-<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.83">qual1</a></pre>
+<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.84">qual1</a></pre>
 </li>
 </ul>
 <a name="value1">
@@ -342,7 +342,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>value1</h4>
-<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.84">value1</a></pre>
+<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.85">value1</a></pre>
 </li>
 </ul>
 <a name="row">
@@ -351,7 +351,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>row</h4>
-<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.85">row</a></pre>
+<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.86">row</a></pre>
 </li>
 </ul>
 <a name="row2">
@@ -360,7 +360,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>row2</h4>
-<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.86">row2</a></pre>
+<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.87">row2</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -369,7 +369,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.88">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.89">name</a></pre>
 </li>
 </ul>
 <a name="htd">
@@ -378,7 +378,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>htd</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.90">htd</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.91">htd</a></pre>
 </li>
 </ul>
 <a name="distributedLogReplay">
@@ -387,7 +387,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>distributedLogReplay</h4>
-<pre>public&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.103">distributedLogReplay</a></pre>
+<pre>public&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.104">distributedLogReplay</a></pre>
 </li>
 </ul>
 </li>
@@ -404,7 +404,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestRegionReplicaFailover</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.68">TestRegionReplicaFailover</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.69">TestRegionReplicaFailover</a>()</pre>
 </li>
 </ul>
 </li>
@@ -421,7 +421,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getParameters</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.96">getParameters</a>()</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.97">getParameters</a>()</pre>
 </li>
 </ul>
 <a name="before()">
@@ -430,7 +430,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>before</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.106">before</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.107">before</a>()
             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -442,7 +442,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>after</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.125">after</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.126">after</a>()
            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -454,7 +454,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSecondaryRegionWithEmptyRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.135">testSecondaryRegionWithEmptyRegion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.136">testSecondaryRegionWithEmptyRegion</a>()
                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests the case where a newly created table with region replicas and no data, the secondary
  region replicas are available to read immediately.</div>
@@ -468,7 +468,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSecondaryRegionWithNonEmptyRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.154">testSecondaryRegionWithNonEmptyRegion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.155">testSecondaryRegionWithNonEmptyRegion</a>()
                                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests the case where if there is some data in the primary region, reopening the region replicas
  (enable/disable table, etc) makes the region replicas readable.</div>
@@ -482,7 +482,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testPrimaryRegionKill</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.173">testPrimaryRegionKill</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.174">testPrimaryRegionKill</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests the case where killing a primary region with unflushed data recovers</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -495,7 +495,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyNumericRowsWithTimeout</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.210">verifyNumericRowsWithTimeout</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.211">verifyNumericRowsWithTimeout</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                                 byte[]&nbsp;f,
                                 int&nbsp;startRow,
                                 int&nbsp;endRow,
@@ -513,7 +513,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSecondaryRegionKill</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.235">testSecondaryRegionKill</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.236">testSecondaryRegionKill</a>()
                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests the case where killing a secondary region with unflushed data recovers, and the replica
  becomes available to read again shortly.</div>
@@ -527,7 +527,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSecondaryRegionKillWhilePrimaryIsAcceptingWrites</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.275">testSecondaryRegionKillWhilePrimaryIsAcceptingWrites</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.276">testSecondaryRegionKillWhilePrimaryIsAcceptingWrites</a>()
                                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests the case where there are 3 region replicas and the primary is continuously accepting
  new writes while one of the secondaries is killed. Verification is done for both of the
@@ -542,7 +542,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testLotsOfRegionReplicas</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.347">testLotsOfRegionReplicas</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#line.348">testLotsOfRegionReplicas</a>()
                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests the case where we are creating a table with a lot of regions and replicas. Opening region
  replicas should not block handlers on RS indefinitely.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html
index f65452b..2be0791 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html
@@ -261,7 +261,7 @@ extends org.apache.hadoop.hbase.coprocessor.BaseRegionObserver</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>checkTagPresence</h4>
-<pre>public static&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html#line.554">checkTagPresence</a></pre>
+<pre>public static volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html#line.554">checkTagPresence</a></pre>
 </li>
 </ul>
 <a name="tags">

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
index d4a8b2a..cc521c9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-frame.html
@@ -119,6 +119,9 @@
 <li><a href="TestQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestQueryMatcher</a></li>
 <li><a href="TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRecoveredEdits</a></li>
 <li><a href="TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionFavoredNodes</a></li>
+<li><a href="TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionIncrement</a></li>
+<li><a href="TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionIncrement.CrossRowCellIncrementer</a></li>
+<li><a href="TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionIncrement.SingleCellIncrementer</a></li>
 <li><a href="TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionMergeTransaction</a></li>
 <li><a href="TestRegionMergeTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionMergeTransactionOnCluster</a></li>
 <li><a href="TestRegionMergeTransactionOnCluster.MyMaster.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionMergeTransactionOnCluster.MyMaster</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
index f50794f..494ee7d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-summary.html
@@ -160,7 +160,8 @@
 <tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.Incrementer</a></td>
 <td class="colLast">
-<div class="block">A thread that makes a few increment calls</div>
+<div class="block">A thread that makes increment calls always on the same row, this.row against two column
+ families on this row.</div>
 </td>
 </tr>
 <tr class="rowColor">
@@ -629,13 +630,31 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></td>
+<td class="colLast">
+<div class="block">Increments with some concurrency against a region to ensure we get the right answer.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.CrossRowCellIncrementer</a></td>
+<td class="colLast">
+<div class="block">Increments a random row's Cell <code>count</code> times.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.SingleCellIncrementer</a></td>
+<td class="colLast">
+<div class="block">Increments a single cell a bunch of times.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransaction</a></td>
 <td class="colLast">
 <div class="block">Test the <code>RegionMergeTransactionImpl</code> class against two HRegions (as
  opposed to running cluster).</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster</a></td>
 <td class="colLast">
 <div class="block">Like <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver"><code>TestRegionMergeTransaction</code></a> in that we're testing
@@ -644,228 +663,228 @@
  <code>HRegion</code>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster.MyMaster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster.MyMasterRpcServices</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicaFailover</a></td>
 <td class="colLast">
 <div class="block">Tests failover of secondary region replicas.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicas.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicas</a></td>
 <td class="colLast">
 <div class="block">Tests for region replicas.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerHostname.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerHostname</a></td>
 <td class="colLast">
 <div class="block">Tests for the hostname specification by region server</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerMetrics</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerNoMaster</a></td>
 <td class="colLast">
 <div class="block">Tests on the region server, without the master.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerOnlineConfigChange</a></td>
 <td class="colLast">
 <div class="block">Verify that the Online config Changes on the HRegionServer side are actually
  happening.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReportForDuty</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.MyRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerReportForDuty.MyRegionServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionSplitPolicy</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRemoveRegionMetrics</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestResettingCounters.html" title="class in org.apache.hadoop.hbase.regionserver">TestResettingCounters</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver">TestReversibleScanners</a></td>
 <td class="colLast">
 <div class="block">Test cases against ReversibleKeyValueScanner</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRowTooBig.html" title="class in org.apache.hadoop.hbase.regionserver">TestRowTooBig</a></td>
 <td class="colLast">
 <div class="block">Test case to check HRS throws <code>RowTooBigException</code>
  when row size exceeds configured limits.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSKilledWhenInitializing</a></td>
 <td class="colLast">
 <div class="block">Tests region server termination during startup.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.MockedRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSKilledWhenInitializing.MockedRegionServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRSStatusServlet.html" title="class in org.apache.hadoop.hbase.regionserver">TestRSStatusServlet</a></td>
 <td class="colLast">
 <div class="block">Tests for the region server status page and its template.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanDeleteTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanDeleteTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanner</a></td>
 <td class="colLast">
 <div class="block">Test of a long-lived scanner validating as we go.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages</a></td>
 <td class="colLast">
 <div class="block">Here we test to make sure that scans return the expected Results when the server is sending the
  Client heartbeat messages.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatHRegion</a></td>
 <td class="colLast">
 <div class="block">Custom HRegion class that instantiates <code>RegionScanner</code>s with configurable sleep times
  between fetches of row Results and/or column family cells.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatHRegionServer</a></td>
 <td class="colLast">
 <div class="block">Custom HRegionServer instance that instantiates <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatRPCServices.html" title="class in org.apache.hadoop.hbase.regionserver"><code>TestScannerHeartbeatMessages.HeartbeatRPCServices</code></a> in place of
  <code>RSRpcServices</code> to allow us to toggle support for heartbeat messages</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatKVHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatKVHeap</a></td>
 <td class="colLast">
 <div class="block">Custom KV Heap that can be configured to sleep/wait in between retrievals of column family
  cells.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatRegionScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatRegionScanner</a></td>
 <td class="colLast">
 <div class="block">Custom RegionScanner that can be configured to sleep between retrievals of row Results and/or
  column family cells</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatReversedKVHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatReversedKVHeap</a></td>
 <td class="colLast">
 <div class="block">Custom reversed KV Heap that can be configured to sleep in between retrievals of column family
  cells.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatReversedRegionScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatReversedRegionScanner</a></td>
 <td class="colLast">
 <div class="block">Custom ReversedRegionScanner that can be configured to sleep between retrievals of row Results
  and/or column family cells</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatRPCServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerHeartbeatMessages.HeartbeatRPCServices</a></td>
 <td class="colLast">
 <div class="block">Custom RSRpcServices instance that allows heartbeat support to be toggled</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerRetriableFailure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.FaultyScannerObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerRetriableFailure.FaultyScannerObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html" title="class in org.apache.hadoop.hbase.regionserver">TestScannerWithBulkload</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWildcardColumnTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanWildcardColumnTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanWithBloomError</a></td>
 <td class="colLast">
 <div class="block">Test a multi-column scanner when there is a Bloom filter false-positive.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSCVFWithMiniCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSCVFWithMiniCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html" title="class in org.apache.hadoop.hbase.regionserver">TestSeekOptimizations</a></td>
 <td class="colLast">
 <div class="block">Test various seek optimizations for correctness and check if they are
  actually saving I/O operations.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerCustomProtocol</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.PingHandler.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerCustomProtocol.PingHandler</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerNonceManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerNonceManager.TestRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerNonceManager.TestRunnable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitLogWorker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransaction</a></td>
 <td class="colLast">
 <div class="block">Test the <code>SplitTransactionImpl</code> class against an HRegion (as opposed to
  running cluster).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransaction.CustomObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransaction.CustomObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster</a></td>
 <td class="colLast">
 <div class="block">Like TestSplitTransaction in that we're testing <code>SplitTransactionImpl</code>
@@ -873,148 +892,148 @@
  is tests against a bare <code>HRegion</code>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.CustomSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.CustomSplitPolicy</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.FailingSplitRegionObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.FailingSplitRegionObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MockedCoordinatedStateManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MockedCoordinatedStateManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MockedRegionObserver.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MockedRegionObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MockedSplitTransaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MockedSplitTransaction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MyMaster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMasterRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MyMasterRpcServices</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.UselessTestAbortable.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.UselessTestAbortable</a></td>
 <td class="colLast">
 <div class="block">Noop Abortable implementation used below in tests.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitWalDataLoss.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitWalDataLoss</a></td>
 <td class="colLast">
 <div class="block">Testcase for https://issues.apache.org/jira/browse/HBASE-13811</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore</a></td>
 <td class="colLast">
 <div class="block">Test class for the Store</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.DummyStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.DummyStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.FaultyFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.FaultyFileSystem</a></td>
 <td class="colLast">
 <div class="block">Faulty file system that will fail if you write past its fault position the FIRST TIME
  only; thereafter it will succeed.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.FaultyOutputStream.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore.FaultyOutputStream</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFile</a></td>
 <td class="colLast">
 <div class="block">Test HStoreFile</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileInfo</a></td>
 <td class="colLast">
 <div class="block">Test HStoreFile</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.FailingHRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore.FailingHRegionFileSystem</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.StaleStorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileRefresherChore.StaleStorefileRefresherChore</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreFileScannerWithTagCompression</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeCompactor.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeCompactor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeCompactor.Scanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeCompactor.Scanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeCompactor.StoreFileWritersCapture.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeCompactor.StoreFileWritersCapture</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeCompactor.StoreFileWritersCapture.Writer.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeCompactor.StoreFileWritersCapture.Writer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreEngine.TestStoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreEngine.TestStoreEngine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestStripeStoreFileManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTags.html" title="class in org.apache.hadoop.hbase.regionserver">TestTags</a></td>
 <td class="colLast">
 <div class="block">Class that test tags</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html" title="class in org.apache.hadoop.hbase.regionserver">TestTags.TestCoprocessorForTags</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimeRangeTracker.html" title="class in org.apache.hadoop.hbase.regionserver">TestTimeRangeTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup</a></td>
 <td class="colLast">
 <div class="block">Testing for lock up of WAL subsystem.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWideScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestWideScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/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 07724ef..300903a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -430,6 +430,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestPriorityRpc.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestPriorityRpc</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRecoveredEdits</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionFavoredNodes</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionIncrement</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionMergeTransaction</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionMergeTransactionOnCluster</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionReplicaFailover</span></a></li>
@@ -499,6 +500,8 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestHRegion.GetTillDoneOrException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegion.PutThread.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestHRegion.PutThread</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestParallelPut.Putter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionIncrement.CrossRowCellIncrementer</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionIncrement.SingleCellIncrementer</span></a></li>
 </ul>
 </li>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang"><span class="strong">Throwable</span></a> (implements java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
@@ -542,8 +545,8 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">DataBlockEncodingTool.Manipulation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">TestAtomicOperation.TestStep</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="strong">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 </ul>
 </li>
 </ul>


[13/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html
index 9cddc0a..1240e3e 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html
@@ -27,8 +27,8 @@
 <span class="sourceLineNo">019</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam1;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam2;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertTrue;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertNull;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import static org.junit.Assert.fail;<a name="line.24"></a>
 <span class="sourceLineNo">025</span><a name="line.25"></a>
 <span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
@@ -61,19 +61,19 @@
 <span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.Get;<a name="line.54"></a>
 <span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Put;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Result;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.68"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Put;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.Result;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
 <span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>import org.junit.After;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import org.junit.Before;<a name="line.71"></a>
@@ -191,535 +191,539 @@
 <span class="sourceLineNo">183</span>   */<a name="line.183"></a>
 <span class="sourceLineNo">184</span>  @Test<a name="line.184"></a>
 <span class="sourceLineNo">185</span>  public void testIncrementMultiThreads() throws IOException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // run a with mixed column families (1 and 3 versions)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // create 25 threads, each will increment by its own quantity<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    int numThreads = 25;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    int incrementsPerThread = 1000;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    int expectedTotal = 0;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // create all threads<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      expectedTotal += (i * incrementsPerThread);<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>    // run all threads<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        all[i].join();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      } catch (InterruptedException e) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    assertICV(row, fam1, qual2, expectedTotal*2);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    assertICV(row, fam2, qual3, expectedTotal*3);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private void assertICV(byte [] row,<a name="line.221"></a>
-<span class="sourceLineNo">222</span>                         byte [] familiy,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>                         byte[] qualifier,<a name="line.223"></a>
-<span class="sourceLineNo">224</span>                         long amount) throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // run a get and see?<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    Get get = new Get(row);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    get.addColumn(familiy, qualifier);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    Result result = region.get(get);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    assertEquals(1, result.size());<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Cell kv = result.rawCells()[0];<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    assertEquals(amount, r);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      byte[] ... families)<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    byte[] ... families)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  throws IOException {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    int i=0;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    for(byte [] family : families) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      htd.addFamily(hcd);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * A thread that makes a few increment calls<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static class Incrementer extends Thread {<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final Region region;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final int numIncrements;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final int amount;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">186</span>    boolean fast = true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // run a with mixed column families (1 and 3 versions)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // Create 100 threads, each will increment by its own quantity. All 100 threads update the<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // same row over two column families.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    int numThreads = 100;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    int incrementsPerThread = 1000;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    int expectedTotal = 0;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // create all threads<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      expectedTotal += (i * incrementsPerThread);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    // run all threads<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      try {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        all[i].join();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      } catch (InterruptedException e) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal, fast);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    assertICV(row, fam1, qual2, expectedTotal*2, fast);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    assertICV(row, fam2, qual3, expectedTotal*3, fast);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private void assertICV(byte [] row,<a name="line.223"></a>
+<span class="sourceLineNo">224</span>                         byte [] familiy,<a name="line.224"></a>
+<span class="sourceLineNo">225</span>                         byte[] qualifier,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>                         long amount,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>                         boolean fast) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    // run a get and see?<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    Get get = new Get(row);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    if (fast) get.setIsolationLevel(IsolationLevel.READ_UNCOMMITTED);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    get.addColumn(familiy, qualifier);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Result result = region.get(get);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    assertEquals(1, result.size());<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    Cell kv = result.rawCells()[0];<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    assertEquals(amount, r);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      byte[] ... families)<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    throws IOException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    byte[] ... families)<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    int i=0;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    for(byte [] family : families) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      htd.addFamily(hcd);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<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 thread that makes increment calls always on the same row, this.row against two column<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * families on this row.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public static class Incrementer extends Thread {<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public Incrementer(Region region,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        int threadNumber, int amount, int numIncrements) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      super("incrementer." + threadNumber);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.region = region;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      this.numIncrements = numIncrements;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.amount = amount;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      setDaemon(true);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    public void run() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        try {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          Increment inc = new Increment(row);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          inc.addColumn(fam1, qual1, amount);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>          // verify: Make sure we only see completed increments<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          Get g = new Get(row);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          Result result = region.get(g);<a name="line.288"></a>
+<span class="sourceLineNo">266</span>    private final Region region;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    private final int numIncrements;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final int amount;<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>    public Incrementer(Region region, int threadNumber, int amount, int numIncrements) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      super("Incrementer." + threadNumber);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      this.region = region;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this.numIncrements = numIncrements;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this.amount = amount;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      setDaemon(true);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public void run() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        try {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          Increment inc = new Increment(row);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          inc.addColumn(fam1, qual1, amount);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          Result result = region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.288"></a>
 <span class="sourceLineNo">289</span>          if (result != null) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            assertTrue(result.getValue(fam1, qual1) != null);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            assertTrue(result.getValue(fam1, qual2) != null);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.293"></a>
-<span class="sourceLineNo">294</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } catch (IOException e) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          e.printStackTrace();<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>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  @Test<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  public void testAppendMultiThreads() throws IOException {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    // run a with mixed column families (1 and 3 versions)<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    int numThreads = 100;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int opsPerThread = 100;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    final byte[] val = new byte[]{1};<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    // create all threads<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        public void run() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            try {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>              Append a = new Append(row);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>              a.add(fam1, qual1, val);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              a.add(fam1, qual2, val);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>              a.add(fam2, qual3, val);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>              Get g = new Get(row);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              Result result = region.get(g);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.333"></a>
-<span class="sourceLineNo">334</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.334"></a>
-<span class="sourceLineNo">335</span>            } catch (IOException e) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>              e.printStackTrace();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              failures.incrementAndGet();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>              fail();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>            }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      };<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // run all threads<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      try {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        all[i].join();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Get g = new Get(row);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    Result result = region.get(g);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // create 10 threads, each will alternate between adding and<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // removing a column<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    int numThreads = 10;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    int opsPerThread = 250;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    // create all threads<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        @Override<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        public void run() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>          boolean op = true;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            try {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>              // throw in some flushes<a name="line.388"></a>
-<span class="sourceLineNo">389</span>              if (i%10==0) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>                synchronized(region) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>                  LOG.debug("flushing");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>                  region.flush(true);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>                  if (i%100==0) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>                    region.compact(false);<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>              }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>              long ts = timeStamps.incrementAndGet();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>              RowMutations rm = new RowMutations(row);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>              if (op) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>                Put p = new Put(row, ts);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>                p.addColumn(fam1, qual1, value1);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>                rm.add(p);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>                Delete d = new Delete(row);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>                d.addColumns(fam1, qual2, ts);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>                rm.add(d);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              } else {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                Delete d = new Delete(row);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                d.addColumns(fam1, qual1, ts);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>                rm.add(d);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>                Put p = new Put(row, ts);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>                p.addColumn(fam1, qual2, value2);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>                rm.add(p);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>              }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>              region.mutateRow(rm);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>              op ^= true;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>              // check: should always see exactly one column<a name="line.421"></a>
-<span class="sourceLineNo">422</span>              Get g = new Get(row);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>              Result r = region.get(g);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>              if (r.size() != 1) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                LOG.debug(r);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>                failures.incrementAndGet();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>                fail();<a name="line.427"></a>
-<span class="sourceLineNo">428</span>              }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>            } catch (IOException e) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>              e.printStackTrace();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>              failures.incrementAndGet();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>              fail();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>            }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      };<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // run all threads<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      all[i].start();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // wait for all threads to finish<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      try {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        all[i].join();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>  /**<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * Test multi-threaded region mutations.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  @Test<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // create 10 threads, each will alternate between adding and<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // removing a column<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    int numThreads = 10;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    int opsPerThread = 250;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // create all threads<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        public void run() {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          boolean op = true;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            try {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>              // throw in some flushes<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              if (i%10==0) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>                synchronized(region) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>                  LOG.debug("flushing");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>                  region.flush(true);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>                  if (i%100==0) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>                    region.compact(false);<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>              long ts = timeStamps.incrementAndGet();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              if (op) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>                Put p = new Put(row2, ts);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>                p.addColumn(fam1, qual1, value1);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>                mrm.add(p);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>                Delete d = new Delete(row);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>                d.addColumns(fam1, qual1, ts);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>                mrm.add(d);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>              } else {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>                Delete d = new Delete(row2);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>                d.addColumns(fam1, qual1, ts);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>                mrm.add(d);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>                Put p = new Put(row, ts);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                p.addColumn(fam1, qual1, value2);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>                mrm.add(p);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>              }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>              op ^= true;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>              // check: should always see exactly one column<a name="line.514"></a>
-<span class="sourceLineNo">515</span>              Scan s = new Scan(row);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>              RegionScanner rs = region.getScanner(s);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>              while (rs.next(r))<a name="line.518"></a>
-<span class="sourceLineNo">519</span>                ;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              rs.close();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              if (r.size() != 1) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>                LOG.debug(r);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>                failures.incrementAndGet();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>                fail();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>            } catch (IOException e) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>              e.printStackTrace();<a name="line.527"></a>
-<span class="sourceLineNo">528</span>              failures.incrementAndGet();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>              fail();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>            }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>          }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      };<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // run all threads<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      all[i].start();<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    // wait for all threads to finish<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      try {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        all[i].join();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public static class AtomicOperation extends Thread {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    protected final Region region;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    protected final int numOps;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    protected final AtomicLong timeStamps;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    protected final AtomicInteger failures;<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    protected final Random r = new Random();<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        AtomicInteger failures) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      this.region = region;<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.numOps = numOps;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      this.timeStamps = timeStamps;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      this.failures = failures;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  }<a name="line.565"></a>
-<span class="sourceLineNo">566</span>  <a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private enum TestStep {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    PUT_COMPLETED,         // put complete (released RowLock, but may not have advanced MVCC).<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    CHECKANDPUT_STARTED,   // began checkAndPut: if 10 -&gt; 11<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    CHECKANDPUT_COMPLETED  // completed checkAndPut<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    // NOTE: at the end of these steps, the value of the cell should be 50, not 11!<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  private static volatile TestStep testStep = TestStep.INIT;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>  private final String family = "f1";<a name="line.577"></a>
-<span class="sourceLineNo">578</span>     <a name="line.578"></a>
-<span class="sourceLineNo">579</span>  /**<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Test written as a verifier for HBASE-7051, CheckAndPut should properly read<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * MVCC. <a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * <a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * Moved into TestAtomicOperation from its original location, TestHBase7051<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testPutAndCheckAndPutInParallel() throws Exception {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    final String tableName = "testPutAndCheckAndPut";<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    conf.setClass(HConstants.REGION_IMPL, MockHRegion.class, HeapSize.class);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName))<a name="line.590"></a>
-<span class="sourceLineNo">591</span>        .addFamily(new HColumnDescriptor(family));<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    this.region = TEST_UTIL.createLocalHRegion(htd, null, null);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Put[] puts = new Put[1];<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    Put put = new Put(Bytes.toBytes("r1"));<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("10"));<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    puts[0] = put;<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    <a name="line.597"></a>
-<span class="sourceLineNo">598</span>    region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    MultithreadedTestUtil.TestContext ctx =<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      new MultithreadedTestUtil.TestContext(conf);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    ctx.addThread(new PutThread(ctx, region));<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    ctx.addThread(new CheckAndPutThread(ctx, region));<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    ctx.startThreads();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    while (testStep != TestStep.CHECKANDPUT_COMPLETED) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      Thread.sleep(100);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    ctx.stop();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    Scan s = new Scan();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    RegionScanner scanner = region.getScanner(s);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    List&lt;Cell&gt; results = new ArrayList&lt;Cell&gt;();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    ScannerContext scannerContext = ScannerContext.newBuilder().setBatchLimit(2).build();<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    scanner.next(results, scannerContext);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    for (Cell keyValue : results) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      assertEquals("50",Bytes.toString(CellUtil.cloneValue(keyValue)));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  private class PutThread extends TestThread {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    private Region region;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    PutThread(TestContext ctx, Region region) {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      super(ctx);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      this.region = region;<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    }<a name="line.623"></a>
-<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span>    public void doWork() throws Exception {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      Put[] puts = new Put[1];<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("50"));<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      puts[0] = put;<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      testStep = TestStep.PUT_STARTED;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    }<a name="line.632"></a>
-<span class="sourceLineNo">633</span>  }<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>  private class CheckAndPutThread extends TestThread {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    private Region region;<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    CheckAndPutThread(TestContext ctx, Region region) {<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      super(ctx);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      this.region = region;<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   }<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>    public void doWork() throws Exception {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      Put[] puts = new Put[1];<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("11"));<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      puts[0] = put;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      while (testStep != TestStep.PUT_COMPLETED) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        Thread.sleep(100);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      testStep = TestStep.CHECKANDPUT_STARTED;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      region.checkAndMutate(Bytes.toBytes("r1"), Bytes.toBytes(family), Bytes.toBytes("q1"),<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("10")), put, true);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      testStep = TestStep.CHECKANDPUT_COMPLETED;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>  public static class MockHRegion extends HRegion {<a name="line.657"></a>
-<span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    public MockHRegion(Path tableDir, WAL log, FileSystem fs, Configuration conf,<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        final HRegionInfo regionInfo, final HTableDescriptor htd, RegionServerServices rsServices) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      super(tableDir, log, fs, conf, regionInfo, htd, rsServices);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    @Override<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    public RowLock getRowLock(final byte[] row, boolean readLock) throws IOException {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      if (testStep == TestStep.CHECKANDPUT_STARTED) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        latch.countDown();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      return new WrappedRowLock(super.getRowLock(row, readLock));<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    <a name="line.671"></a>
-<span class="sourceLineNo">672</span>    public class WrappedRowLock implements RowLock {<a name="line.672"></a>
-<span class="sourceLineNo">673</span><a name="line.673"></a>
-<span class="sourceLineNo">674</span>      private final RowLock rowLock;<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>      private WrappedRowLock(RowLock rowLock) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>        this.rowLock = rowLock;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      }<a name="line.678"></a>
+<span class="sourceLineNo">290</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.291"></a>
+<span class="sourceLineNo">292</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.295"></a>
+<span class="sourceLineNo">296</span>               Bytes.toLong(result.getValue(fam1, qual2)));<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            long fam1Increment = Bytes.toLong(result.getValue(fam1, qual1))*3;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>            long fam2Increment = Bytes.toLong(result.getValue(fam2, qual3));<a name="line.298"></a>
+<span class="sourceLineNo">299</span>            assertEquals("fam1=" + fam1Increment + ", fam2=" + fam2Increment,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              fam1Increment, fam2Increment);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        } catch (IOException e) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          e.printStackTrace();<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>    }<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>  @Test<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public void testAppendMultiThreads() throws IOException {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // run a with mixed column families (1 and 3 versions)<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    int numThreads = 100;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    int opsPerThread = 100;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    final byte[] val = new byte[]{1};<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    // create all threads<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        @Override<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        public void run() {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>            try {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>              Append a = new Append(row);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>              a.add(fam1, qual1, val);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>              a.add(fam1, qual2, val);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>              a.add(fam2, qual3, val);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>              Get g = new Get(row);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>              Result result = region.get(g);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.337"></a>
+<span class="sourceLineNo">338</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.338"></a>
+<span class="sourceLineNo">339</span>            } catch (IOException e) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>              e.printStackTrace();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              failures.incrementAndGet();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>              fail();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>            }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      };<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    // run all threads<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      all[i].start();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    // wait for all threads to finish<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      try {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        all[i].join();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    Get g = new Get(row);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    Result result = region.get(g);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  @Test<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    // create 10 threads, each will alternate between adding and<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // removing a column<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    int numThreads = 10;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    int opsPerThread = 250;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // create all threads<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        @Override<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        public void run() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          boolean op = true;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            try {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              // throw in some flushes<a name="line.392"></a>
+<span class="sourceLineNo">393</span>              if (i%10==0) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>                synchronized(region) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>                  LOG.debug("flushing");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>                  region.flush(true);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>                  if (i%100==0) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>                    region.compact(false);<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>              }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>              long ts = timeStamps.incrementAndGet();<a name="line.402"></a>
+<span class="sourceLineNo">403</span>              RowMutations rm = new RowMutations(row);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              if (op) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                Put p = new Put(row, ts);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                p.addColumn(fam1, qual1, value1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>                rm.add(p);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>                Delete d = new Delete(row);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>                d.addColumns(fam1, qual2, ts);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>                rm.add(d);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>              } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>                Delete d = new Delete(row);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>                d.addColumns(fam1, qual1, ts);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>                rm.add(d);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>                Put p = new Put(row, ts);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>                p.addColumn(fam1, qual2, value2);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                rm.add(p);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>              }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>              region.mutateRow(rm);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>              op ^= true;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>              // check: should always see exactly one column<a name="line.425"></a>
+<span class="sourceLineNo">426</span>              Get g = new Get(row);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>              Result r = region.get(g);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>              if (r.size() != 1) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>                LOG.debug(r);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>                failures.incrementAndGet();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>                fail();<a name="line.431"></a>
+<span class="sourceLineNo">432</span>              }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>            } catch (IOException e) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>              e.printStackTrace();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>              failures.incrementAndGet();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>              fail();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>            }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      };<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // run all threads<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      try {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        all[i].join();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } catch (InterruptedException e) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(0, failures.get());<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><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * Test multi-threaded region mutations.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  @Test<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    // create 10 threads, each will alternate between adding and<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    // removing a column<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    int numThreads = 10;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    int opsPerThread = 250;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // create all threads<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        @Override<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        public void run() {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          boolean op = true;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>            try {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>              // throw in some flushes<a name="line.485"></a>
+<span class="sourceLineNo">486</span>              if (i%10==0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>                synchronized(region) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>                  LOG.debug("flushing");<a name="line.488"></a>
+<span class="sourceLineNo">489</span>                  region.flush(true);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>                  if (i%100==0) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>                    region.compact(false);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>                  }<a name="line.492"></a>
+<span class="sourceLineNo">493</span>                }<a name="line.493"></a>
+<span class="sourceLineNo">494</span>              }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>              long ts = timeStamps.incrementAndGet();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>              if (op) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>                Put p = new Put(row2, ts);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>                p.addColumn(fam1, qual1, value1);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>                mrm.add(p);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>                Delete d = new Delete(row);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>                d.addColumns(fam1, qual1, ts);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>                mrm.add(d);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>              } else {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>                Delete d = new Delete(row2);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>                d.addColumns(fam1, qual1, ts);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>                mrm.add(d);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>                Put p = new Put(row, ts);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>                p.addColumn(fam1, qual1, value2);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>                mrm.add(p);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>              }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>              op ^= true;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>              // check: should always see exactly one column<a name="line.518"></a>
+<span class="sourceLineNo">519</span>              Scan s = new Scan(row);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>              RegionScanner rs = region.getScanner(s);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>              while (rs.next(r))<a name="line.522"></a>
+<span class="sourceLineNo">523</span>                ;<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              rs.close();<a name="line.524"></a>
+<span class="sourceLineNo">525</span>              if (r.size() != 1) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>                LOG.debug(r);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>                failures.incrementAndGet();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>                fail();<a name="line.528"></a>
+<span class="sourceLineNo">529</span>              }<a name="line.529"></a>
+<span class="sourceLineNo">530</span>            } catch (IOException e) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>              e.printStackTrace();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>              failures.incrementAndGet();<a name="line.532"></a>
+<span class="sourceLineNo">533</span>              fail();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>          }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        }<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      };<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span>    // run all threads<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      all[i].start();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>    // wait for all threads to finish<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      try {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>        all[i].join();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      } catch (InterruptedException e) {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    assertEquals(0, failures.get());<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  public static class AtomicOperation extends Thread {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    protected final Region region;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    protected final int numOps;<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    protected final AtomicLong timeStamps;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    protected final AtomicInteger failures;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    protected final Random r = new Random();<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>        AtomicInteger failures) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      this.region = region;<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      this.numOps = numOps;<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.timeStamps = timeStamps;<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      this.failures = failures;<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>  <a name="line.570"></a>
+<span class="sourceLineNo">571</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private enum TestStep {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    PUT_COMPLETED,         // put complete (relea

<TRUNCATED>

[35/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html
index c5c052a..036de4d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html
@@ -7,1999 +7,1998 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span><a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver.wal;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.wal.DefaultWALProvider.WAL_FILE_NAME_DELIMITER;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.FileNotFoundException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.io.InterruptedIOException;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.io.OutputStream;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.lang.management.ManagementFactory;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.lang.management.MemoryUsage;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.lang.reflect.InvocationTargetException;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.net.URLEncoder;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.ArrayList;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Arrays;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Comparator;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.List;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Map;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.NavigableMap;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.BlockingQueue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.CountDownLatch;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.ExecutionException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.commons.logging.Log;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.commons.logging.LogFactory;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.conf.Configuration;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileStatus;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FileSystem;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.Path;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.PathFilter;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.Cell;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HConstants;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.io.util.HeapMemorySizeUtil;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.DrainBarrier;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.wal.DefaultWALProvider;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.wal.WALPrettyPrinter;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.wal.WALProvider.Writer;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hdfs.DFSOutputStream;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hdfs.client.HdfsDataOutputStream;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.util.StringUtils;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.htrace.NullScope;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.htrace.Span;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.htrace.Trace;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.htrace.TraceScope;<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>import com.google.common.annotations.VisibleForTesting;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import com.lmax.disruptor.BlockingWaitStrategy;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import com.lmax.disruptor.EventHandler;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import com.lmax.disruptor.ExceptionHandler;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.lmax.disruptor.LifecycleAware;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.lmax.disruptor.TimeoutException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.lmax.disruptor.dsl.Disruptor;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import com.lmax.disruptor.dsl.ProducerType;<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> * Implementation of {@link WAL} to go against {@link FileSystem}; i.e. keep WALs in HDFS.<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * Only one WAL is ever being written at a time.  When a WAL hits a configured maximum size,<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * it is rolled.  This is done internal to the implementation.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * &lt;p&gt;As data is flushed from the MemStore to other on-disk structures (files sorted by<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * key, hfiles), a WAL becomes obsolete. We can let go of all the log edits/entries for a given<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * HRegion-sequence id.  A bunch of work in the below is done keeping account of these region<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * sequence ids -- what is flushed out to hfiles, and what is yet in WAL and in memory only.<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * &lt;p&gt;It is only practical to delete entire files. Thus, we delete an entire on-disk file<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * &lt;code&gt;F&lt;/code&gt; when all of the edits in &lt;code&gt;F&lt;/code&gt; have a log-sequence-id that's older<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * (smaller) than the most-recent flush.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * &lt;p&gt;To read an WAL, call {@link WALFactory#createReader(org.apache.hadoop.fs.FileSystem,<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * org.apache.hadoop.fs.Path)}.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * &lt;h2&gt;Failure Semantic&lt;/h2&gt;<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * If an exception on append or sync, roll the WAL because the current WAL is now a lame duck;<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * any more appends or syncs will fail also with the same original exception. If we have made<a name="line.120"></a>
-<span class="sourceLineNo">121</span> * successful appends to the WAL and we then are unable to sync them, our current semantic is to<a name="line.121"></a>
-<span class="sourceLineNo">122</span> * return error to the client that the appends failed but also to abort the current context,<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * usually the hosting server. We need to replay the WALs. TODO: Change this semantic. A roll of<a name="line.123"></a>
-<span class="sourceLineNo">124</span> * WAL may be sufficient as long as we have flagged client that the append failed. TODO:<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * replication may pick up these last edits though they have been marked as failed append (Need to<a name="line.125"></a>
-<span class="sourceLineNo">126</span> * keep our own file lengths, not rely on HDFS).<a name="line.126"></a>
-<span class="sourceLineNo">127</span> */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>@InterfaceAudience.Private<a name="line.128"></a>
-<span class="sourceLineNo">129</span>public class FSHLog implements WAL {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  // IMPLEMENTATION NOTES:<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  //<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  // At the core is a ring buffer.  Our ring buffer is the LMAX Disruptor.  It tries to<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  // minimize synchronizations and volatile writes when multiple contending threads as is the case<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // here appending and syncing on a single WAL.  The Disruptor is configured to handle multiple<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  // producers but it has one consumer only (the producers in HBase are IPC Handlers calling append<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  // and then sync).  The single consumer/writer pulls the appends and syncs off the ring buffer.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  // When a handler calls sync, it is given back a future. The producer 'blocks' on the future so<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  // it does not return until the sync completes.  The future is passed over the ring buffer from<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  // the producer/handler to the consumer thread where it does its best to batch up the producer<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  // syncs so one WAL sync actually spans multiple producer sync invocations.  How well the<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  // batching works depends on the write rate; i.e. we tend to batch more in times of<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  // high writes/syncs.<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  //<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  // Calls to append now also wait until the append has been done on the consumer side of the<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  // disruptor.  We used to not wait but it makes the implemenation easier to grok if we have<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  // the region edit/sequence id after the append returns.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  //<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  // TODO: Handlers need to coordinate appending AND syncing.  Can we have the threads contend<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  // once only?  Probably hard given syncs take way longer than an append.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  //<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  // The consumer threads pass the syncs off to multiple syncing threads in a round robin fashion<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  // to ensure we keep up back-to-back FS sync calls (FS sync calls are the long poll writing the<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  // WAL).  The consumer thread passes the futures to the sync threads for it to complete<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  // the futures when done.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  //<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  // The 'sequence' in the below is the sequence of the append/sync on the ringbuffer.  It<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  // acts as a sort-of transaction id.  It is always incrementing.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  //<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  // The RingBufferEventHandler class hosts the ring buffer consuming code.  The threads that<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  // do the actual FS sync are implementations of SyncRunner.  SafePointZigZagLatch is a<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  // synchronization class used to halt the consumer at a safe point --  just after all outstanding<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  // syncs and appends have completed -- so the log roller can swap the WAL out under it.<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private static final Log LOG = LogFactory.getLog(FSHLog.class);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  private static final int DEFAULT_SLOW_SYNC_TIME_MS = 100; // in ms<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>   * The nexus at which all incoming handlers meet.  Does appends and sync with an ordering.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * Appends and syncs are each put on the ring which means handlers need to<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * smash up against the ring twice (can we make it once only? ... maybe not since time to append<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * is so different from time to sync and sometimes we don't want to sync or we want to async<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * the sync).  The ring is where we make sure of our ordering and it is also where we do<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * batching up of handler sync calls.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private final Disruptor&lt;RingBufferTruck&gt; disruptor;<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>   * An executorservice that runs the disruptor AppendEventHandler append executor.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  private final ExecutorService appendExecutor;<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * This fellow is run by the above appendExecutor service but it is all about batching up appends<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * and syncs; it may shutdown without cleaning out the last few appends or syncs.  To guard<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * against this, keep a reference to this handler and do explicit close on way out to make sure<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * all flushed out before we exit.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   */<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  private final RingBufferEventHandler ringBufferEventHandler;<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>   * Map of {@link SyncFuture}s keyed by Handler objects.  Used so we reuse SyncFutures.<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * TODO: Reus FSWALEntry's rather than create them anew each time as we do SyncFutures here.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * TODO: Add a FSWalEntry and SyncFuture as thread locals on handlers rather than have them<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * get them from this Map?<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private final Map&lt;Thread, SyncFuture&gt; syncFuturesByHandler;<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * The highest known outstanding unsync'd WALEdit sequence number where sequence number is the<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * ring buffer sequence.  Maintained by the ring buffer consumer.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   */<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  private volatile long highestUnsyncedSequence = -1;<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>   * Updated to the ring buffer sequence of the last successful sync call.  This can be less than<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * {@link #highestUnsyncedSequence} for case where we have an append where a sync has not yet<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * come in for it.  Maintained by the syncing threads.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  private final AtomicLong highestSyncedSequence = new AtomicLong(0);<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>   * file system instance<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  protected final FileSystem fs;<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>   * WAL directory, where all WAL files would be placed.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   */<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private final Path fullPathLogDir;<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * dir path where old logs are kept.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private final Path fullPathArchiveDir;<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * Matches just those wal files that belong to this wal instance.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   */<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  private final PathFilter ourFiles;<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>   * Prefix of a WAL file, usually the region server name it is hosted on.<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  private final String logFilePrefix;<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>   * Suffix included on generated wal file names<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   */<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  private final String logFileSuffix;<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * Prefix used when checking for wal membership.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  private final String prefixPathStr;<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  private final WALCoprocessorHost coprocessorHost;<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>   * conf object<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  protected final Configuration conf;<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  /** Listeners that are called on WAL events. */<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  private final List&lt;WALActionsListener&gt; listeners =<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    new CopyOnWriteArrayList&lt;WALActionsListener&gt;();<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  @Override<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public void registerWALActionsListener(final WALActionsListener listener) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    this.listeners.add(listener);<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>  @Override<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  public boolean unregisterWALActionsListener(final WALActionsListener listener) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    return this.listeners.remove(listener);<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>  @Override<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public WALCoprocessorHost getCoprocessorHost() {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    return coprocessorHost;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  /**<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * FSDataOutputStream associated with the current SequenceFile.writer<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   */<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  private FSDataOutputStream hdfs_out;<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span>  // All about log rolling if not enough replicas outstanding.<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  // Minimum tolerable replicas, if the actual value is lower than it, rollWriter will be triggered<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  private final int minTolerableReplication;<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  private final int slowSyncNs;<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  // If live datanode count is lower than the default replicas value,<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  // RollWriter will be triggered in each sync(So the RollWriter will be<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // triggered one by one in a short time). Using it as a workaround to slow<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  // down the roll frequency triggered by checkLowReplication().<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  private final AtomicInteger consecutiveLogRolls = new AtomicInteger(0);<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>  private final int lowReplicationRollLimit;<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  // If consecutiveLogRolls is larger than lowReplicationRollLimit,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  // then disable the rolling in checkLowReplication().<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // Enable it if the replications recover.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private volatile boolean lowReplicationRollEnabled = true;<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>   * Class that does accounting of sequenceids in WAL subsystem. Holds oldest outstanding<a name="line.299"></a>
-<span class="sourceLineNo">300</span>   * sequence id as yet not flushed as well as the most recent edit sequence id appended to the<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   * WAL. Has facility for answering questions such as "Is it safe to GC a WAL?".<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   */<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  private SequenceIdAccounting sequenceIdAccounting = new SequenceIdAccounting();<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>   * Current log file.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   */<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  volatile Writer writer;<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>  /** The barrier used to ensure that close() waits for all log rolls and flushes to finish. */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  private final DrainBarrier closeBarrier = new DrainBarrier();<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  /**<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * This lock makes sure only one log roll runs at a time. Should not be taken while any other<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * lock is held. We don't just use synchronized because that results in bogus and tedious<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * findbugs warning when it thinks synchronized controls writer thread safety.  It is held when<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * we are actually rolling the log.  It is checked when we are looking to see if we should roll<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * the log or not.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private final ReentrantLock rollWriterLock = new ReentrantLock(true);<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  private volatile boolean closed = false;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private final AtomicBoolean shutdown = new AtomicBoolean(false);<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // The timestamp (in ms) when the log file was created.<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private final AtomicLong filenum = new AtomicLong(-1);<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // Number of transactions in the current Wal.<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private final AtomicInteger numEntries = new AtomicInteger(0);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // If &gt; than this size, roll the log.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private final long logrollsize;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  /**<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * The total size of wal<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  private AtomicLong totalLogSize = new AtomicLong(0);<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  /*<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * If more than this many logs, force flush of oldest region to oldest edit<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * goes to disk.  If too many and we crash, then will take forever replaying.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * Keep the number of logs tidy.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private final int maxLogs;<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /** Number of log close errors tolerated before we abort */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private final int closeErrorsTolerated;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  private final AtomicInteger closeErrorCount = new AtomicInteger();<a name="line.349"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.regionserver.wal;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.wal.DefaultWALProvider.WAL_FILE_NAME_DELIMITER;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.FileNotFoundException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.InterruptedIOException;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.OutputStream;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.management.ManagementFactory;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.management.MemoryUsage;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.InvocationTargetException;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.URLEncoder;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.ArrayList;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.Arrays;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.Comparator;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.List;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Map;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.NavigableMap;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Set;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.concurrent.BlockingQueue;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.concurrent.CountDownLatch;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.concurrent.ExecutionException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ExecutorService;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.Executors;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.PathFilter;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HConstants;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.io.util.HeapMemorySizeUtil;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.DrainBarrier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.wal.DefaultWALProvider;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.wal.WALPrettyPrinter;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.wal.WALProvider.Writer;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hdfs.DFSOutputStream;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hdfs.client.HdfsDataOutputStream;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.util.StringUtils;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.htrace.NullScope;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.htrace.Span;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.htrace.Trace;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.htrace.TraceScope;<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>import com.google.common.annotations.VisibleForTesting;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import com.lmax.disruptor.BlockingWaitStrategy;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import com.lmax.disruptor.EventHandler;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import com.lmax.disruptor.ExceptionHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import com.lmax.disruptor.LifecycleAware;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import com.lmax.disruptor.TimeoutException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.lmax.disruptor.dsl.Disruptor;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.lmax.disruptor.dsl.ProducerType;<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> * Implementation of {@link WAL} to go against {@link FileSystem}; i.e. keep WALs in HDFS.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * Only one WAL is ever being written at a time.  When a WAL hits a configured maximum size,<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * it is rolled.  This is done internal to the implementation.<a name="line.103"></a>
+<span class="sourceLineNo">104</span> *<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * &lt;p&gt;As data is flushed from the MemStore to other on-disk structures (files sorted by<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * key, hfiles), a WAL becomes obsolete. We can let go of all the log edits/entries for a given<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * HRegion-sequence id.  A bunch of work in the below is done keeping account of these region<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * sequence ids -- what is flushed out to hfiles, and what is yet in WAL and in memory only.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> *<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * &lt;p&gt;It is only practical to delete entire files. Thus, we delete an entire on-disk file<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * &lt;code&gt;F&lt;/code&gt; when all of the edits in &lt;code&gt;F&lt;/code&gt; have a log-sequence-id that's older<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * (smaller) than the most-recent flush.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * &lt;p&gt;To read an WAL, call {@link WALFactory#createReader(org.apache.hadoop.fs.FileSystem,<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * org.apache.hadoop.fs.Path)}.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * &lt;h2&gt;Failure Semantic&lt;/h2&gt;<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * If an exception on append or sync, roll the WAL because the current WAL is now a lame duck;<a name="line.118"></a>
+<span class="sourceLineNo">119</span> * any more appends or syncs will fail also with the same original exception. If we have made<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * successful appends to the WAL and we then are unable to sync them, our current semantic is to<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * return error to the client that the appends failed but also to abort the current context,<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * usually the hosting server. We need to replay the WALs. TODO: Change this semantic. A roll of<a name="line.122"></a>
+<span class="sourceLineNo">123</span> * WAL may be sufficient as long as we have flagged client that the append failed. TODO:<a name="line.123"></a>
+<span class="sourceLineNo">124</span> * replication may pick up these last edits though they have been marked as failed append (Need to<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * keep our own file lengths, not rely on HDFS).<a name="line.125"></a>
+<span class="sourceLineNo">126</span> */<a name="line.126"></a>
+<span class="sourceLineNo">127</span>@InterfaceAudience.Private<a name="line.127"></a>
+<span class="sourceLineNo">128</span>public class FSHLog implements WAL {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  // IMPLEMENTATION NOTES:<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  //<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // At the core is a ring buffer.  Our ring buffer is the LMAX Disruptor.  It tries to<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  // minimize synchronizations and volatile writes when multiple contending threads as is the case<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  // here appending and syncing on a single WAL.  The Disruptor is configured to handle multiple<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  // producers but it has one consumer only (the producers in HBase are IPC Handlers calling append<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  // and then sync).  The single consumer/writer pulls the appends and syncs off the ring buffer.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  // When a handler calls sync, it is given back a future. The producer 'blocks' on the future so<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  // it does not return until the sync completes.  The future is passed over the ring buffer from<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  // the producer/handler to the consumer thread where it does its best to batch up the producer<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  // syncs so one WAL sync actually spans multiple producer sync invocations.  How well the<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  // batching works depends on the write rate; i.e. we tend to batch more in times of<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  // high writes/syncs.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  //<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  // Calls to append now also wait until the append has been done on the consumer side of the<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  // disruptor.  We used to not wait but it makes the implemenation easier to grok if we have<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  // the region edit/sequence id after the append returns.<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  //<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  // TODO: Handlers need to coordinate appending AND syncing.  Can we have the threads contend<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  // once only?  Probably hard given syncs take way longer than an append.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  //<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  // The consumer threads pass the syncs off to multiple syncing threads in a round robin fashion<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  // to ensure we keep up back-to-back FS sync calls (FS sync calls are the long poll writing the<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  // WAL).  The consumer thread passes the futures to the sync threads for it to complete<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  // the futures when done.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  //<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  // The 'sequence' in the below is the sequence of the append/sync on the ringbuffer.  It<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  // acts as a sort-of transaction id.  It is always incrementing.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  //<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  // The RingBufferEventHandler class hosts the ring buffer consuming code.  The threads that<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  // do the actual FS sync are implementations of SyncRunner.  SafePointZigZagLatch is a<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  // synchronization class used to halt the consumer at a safe point --  just after all outstanding<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  // syncs and appends have completed -- so the log roller can swap the WAL out under it.<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  private static final Log LOG = LogFactory.getLog(FSHLog.class);<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private static final int DEFAULT_SLOW_SYNC_TIME_MS = 100; // in ms<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>   * The nexus at which all incoming handlers meet.  Does appends and sync with an ordering.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * Appends and syncs are each put on the ring which means handlers need to<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * smash up against the ring twice (can we make it once only? ... maybe not since time to append<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * is so different from time to sync and sometimes we don't want to sync or we want to async<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * the sync).  The ring is where we make sure of our ordering and it is also where we do<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * batching up of handler sync calls.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   */<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private final Disruptor&lt;RingBufferTruck&gt; disruptor;<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  /**<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * An executorservice that runs the disruptor AppendEventHandler append executor.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   */<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  private final ExecutorService appendExecutor;<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>   * This fellow is run by the above appendExecutor service but it is all about batching up appends<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * and syncs; it may shutdown without cleaning out the last few appends or syncs.  To guard<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * against this, keep a reference to this handler and do explicit close on way out to make sure<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * all flushed out before we exit.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  private final RingBufferEventHandler ringBufferEventHandler;<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * Map of {@link SyncFuture}s keyed by Handler objects.  Used so we reuse SyncFutures.<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * TODO: Reus FSWALEntry's rather than create them anew each time as we do SyncFutures here.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * TODO: Add a FSWalEntry and SyncFuture as thread locals on handlers rather than have them<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * get them from this Map?<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  private final Map&lt;Thread, SyncFuture&gt; syncFuturesByHandler;<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>  /**<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * The highest known outstanding unsync'd WALEdit sequence number where sequence number is the<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * ring buffer sequence.  Maintained by the ring buffer consumer.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   */<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  private volatile long highestUnsyncedSequence = -1;<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Updated to the ring buffer sequence of the last successful sync call.  This can be less than<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * {@link #highestUnsyncedSequence} for case where we have an append where a sync has not yet<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * come in for it.  Maintained by the syncing threads.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   */<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  private final AtomicLong highestSyncedSequence = new AtomicLong(0);<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>   * file system instance<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  protected final FileSystem fs;<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>   * WAL directory, where all WAL files would be placed.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private final Path fullPathLogDir;<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>   * dir path where old logs are kept.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   */<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private final Path fullPathArchiveDir;<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  /**<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   * Matches just those wal files that belong to this wal instance.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private final PathFilter ourFiles;<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>   * Prefix of a WAL file, usually the region server name it is hosted on.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  private final String logFilePrefix;<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /**<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * Suffix included on generated wal file names<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   */<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  private final String logFileSuffix;<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  /**<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Prefix used when checking for wal membership.<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   */<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  private final String prefixPathStr;<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private final WALCoprocessorHost coprocessorHost;<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>   * conf object<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  protected final Configuration conf;<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /** Listeners that are called on WAL events. */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private final List&lt;WALActionsListener&gt; listeners =<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    new CopyOnWriteArrayList&lt;WALActionsListener&gt;();<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>  @Override<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public void registerWALActionsListener(final WALActionsListener listener) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    this.listeners.add(listener);<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>  @Override<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  public boolean unregisterWALActionsListener(final WALActionsListener listener) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    return this.listeners.remove(listener);<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>  @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public WALCoprocessorHost getCoprocessorHost() {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    return coprocessorHost;<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>  /**<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   * FSDataOutputStream associated with the current SequenceFile.writer<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  private FSDataOutputStream hdfs_out;<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  // All about log rolling if not enough replicas outstanding.<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>  // Minimum tolerable replicas, if the actual value is lower than it, rollWriter will be triggered<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  private final int minTolerableReplication;<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  private final int slowSyncNs;<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  // If live datanode count is lower than the default replicas value,<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  // RollWriter will be triggered in each sync(So the RollWriter will be<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  // triggered one by one in a short time). Using it as a workaround to slow<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // down the roll frequency triggered by checkLowReplication().<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private final AtomicInteger consecutiveLogRolls = new AtomicInteger(0);<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>  private final int lowReplicationRollLimit;<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  // If consecutiveLogRolls is larger than lowReplicationRollLimit,<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  // then disable the rolling in checkLowReplication().<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  // Enable it if the replications recover.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  private volatile boolean lowReplicationRollEnabled = true;<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  /**<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * Class that does accounting of sequenceids in WAL subsystem. Holds oldest outstanding<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * sequence id as yet not flushed as well as the most recent edit sequence id appended to the<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * WAL. Has facility for answering questions such as "Is it safe to GC a WAL?".<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private SequenceIdAccounting sequenceIdAccounting = new SequenceIdAccounting();<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Current log file.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  volatile Writer writer;<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>  /** The barrier used to ensure that close() waits for all log rolls and flushes to finish. */<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  private final DrainBarrier closeBarrier = new DrainBarrier();<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>  /**<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * This lock makes sure only one log roll runs at a time. Should not be taken while any other<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * lock is held. We don't just use synchronized because that results in bogus and tedious<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * findbugs warning when it thinks synchronized controls writer thread safety.  It is held when<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * we are actually rolling the log.  It is checked when we are looking to see if we should roll<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * the log or not.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   */<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private final ReentrantLock rollWriterLock = new ReentrantLock(true);<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  private volatile boolean closed = false;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private final AtomicBoolean shutdown = new AtomicBoolean(false);<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // The timestamp (in ms) when the log file was created.<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  private final AtomicLong filenum = new AtomicLong(-1);<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // Number of transactions in the current Wal.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private final AtomicInteger numEntries = new AtomicInteger(0);<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // If &gt; than this size, roll the log.<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  private final long logrollsize;<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   * The total size of wal<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   */<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  private AtomicLong totalLogSize = new AtomicLong(0);<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>   * If more than this many logs, force flush of oldest region to oldest edit<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * goes to disk.  If too many and we crash, then will take forever replaying.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * Keep the number of logs tidy.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  private final int maxLogs;<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>  /** Number of log close errors tolerated before we abort */<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private final int closeErrorsTolerated;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private final AtomicInteger closeErrorCount = new AtomicInteger();<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
 <span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  /**<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   * WAL Comparator; it compares the timestamp (log filenum), present in the log file name.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Throws an IllegalArgumentException if used to compare paths from different wals.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   */<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  final Comparator&lt;Path&gt; LOG_NAME_COMPARATOR = new Comparator&lt;Path&gt;() {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    @Override<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    public int compare(Path o1, Path o2) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      long t1 = getFileNumFromFileName(o1);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      long t2 = getFileNumFromFileName(o2);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      if (t1 == t2) return 0;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      return (t1 &gt; t2) ? 1 : -1;<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><a name="line.365"></a>
-<span class="sourceLineNo">366</span>  /**<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * Map of WAL log file to the latest sequence ids of all regions it has entries of.<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * The map is sorted by the log file creation timestamp (contained in the log file name).<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private NavigableMap&lt;Path, Map&lt;byte[], Long&gt;&gt; byWalRegionSequenceIds =<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    new ConcurrentSkipListMap&lt;Path, Map&lt;byte[], Long&gt;&gt;(LOG_NAME_COMPARATOR);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  /**<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * Exception handler to pass the disruptor ringbuffer.  Same as native implementation only it<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * logs using our logger instead of java native logger.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  static class RingBufferExceptionHandler implements ExceptionHandler {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    @Override<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    public void handleEventException(Throwable ex, long sequence, Object event) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      LOG.error("Sequence=" + sequence + ", event=" + event, ex);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      throw new RuntimeException(ex);<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 void handleOnStartException(Throwable ex) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      LOG.error(ex);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw new RuntimeException(ex);<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>    @Override<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    public void handleOnShutdownException(Throwable ex) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      LOG.error(ex);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      throw new RuntimeException(ex);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    }<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>  /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * Constructor.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   *<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @param fs filesystem handle<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param root path for stored and archived wals<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param logDir dir where wals are stored<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param conf configuration to use<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @throws IOException<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public FSHLog(final FileSystem fs, final Path root, final String logDir, final Configuration conf)<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      throws IOException {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    this(fs, root, logDir, HConstants.HREGION_OLDLOGDIR_NAME, conf, null, true, null, null);<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>  /**<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * Create an edit log at the given &lt;code&gt;dir&lt;/code&gt; location.<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   *<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * You should never have to load an existing log. If there is a log at<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * startup, it should have already been processed and deleted by the time the<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * WAL object is started up.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   *<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param fs filesystem handle<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @param rootDir path to where logs and oldlogs<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @param logDir dir where wals are stored<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * @param archiveDir dir where wals are archived<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * @param conf configuration to use<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param listeners Listeners on WAL events. Listeners passed here will<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * be registered before we do anything else; e.g. the<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * Constructor {@link #rollWriter()}.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * @param failIfWALExists If true IOException will be thrown if files related to this wal<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   *        already exist.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param prefix should always be hostname and port in distributed env and<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   *        it will be URL encoded before being used.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   *        If prefix is null, "wal" will be used<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @param suffix will be url encoded. null is treated as empty. non-empty must start with<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   *        {@link DefaultWALProvider#WAL_FILE_NAME_DELIMITER}<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @throws IOException<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  public FSHLog(final FileSystem fs, final Path rootDir, final String logDir,<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      final String archiveDir, final Configuration conf,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      final List&lt;WALActionsListener&gt; listeners,<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      final boolean failIfWALExists, final String prefix, final String suffix)<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      throws IOException {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    this.fs = fs;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    this.fullPathLogDir = new Path(rootDir, logDir);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    this.fullPathArchiveDir = new Path(rootDir, archiveDir);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    this.conf = conf;<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    if (!fs.exists(fullPathLogDir) &amp;&amp; !fs.mkdirs(fullPathLogDir)) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      throw new IOException("Unable to mkdir " + fullPathLogDir);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    if (!fs.exists(this.fullPathArchiveDir)) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      if (!fs.mkdirs(this.fullPathArchiveDir)) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        throw new IOException("Unable to mkdir " + this.fullPathArchiveDir);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // If prefix is null||empty then just name it wal<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    this.logFilePrefix =<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      prefix == null || prefix.isEmpty() ? "wal" : URLEncoder.encode(prefix, "UTF8");<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    // we only correctly differentiate suffices when numeric ones start with '.'<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    if (suffix != null &amp;&amp; !(suffix.isEmpty()) &amp;&amp; !(suffix.startsWith(WAL_FILE_NAME_DELIMITER))) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      throw new IllegalArgumentException("WAL suffix must start with '" + WAL_FILE_NAME_DELIMITER +<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          "' but instead was '" + suffix + "'");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    // Now that it exists, set the storage policy for the entire directory of wal files related to<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // this FSHLog instance<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    FSUtils.setStoragePolicy(fs, conf, this.fullPathLogDir, HConstants.WAL_STORAGE_POLICY,<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      HConstants.DEFAULT_WAL_STORAGE_POLICY);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    this.logFileSuffix = (suffix == null) ? "" : URLEncoder.encode(suffix, "UTF8");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.prefixPathStr = new Path(fullPathLogDir,<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        logFilePrefix + WAL_FILE_NAME_DELIMITER).toString();<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>    this.ourFiles = new PathFilter() {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      public boolean accept(final Path fileName) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        // The path should start with dir/&lt;prefix&gt; and end with our suffix<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        final String fileNameString = fileName.toString();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        if (!fileNameString.startsWith(prefixPathStr)) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          return false;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>        }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        if (logFileSuffix.isEmpty()) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          // in the case of the null suffix, we need to ensure the filename ends with a timestamp.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          return org.apache.commons.lang.StringUtils.isNumeric(<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              fileNameString.substring(prefixPathStr.length()));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        } else if (!fileNameString.endsWith(logFileSuffix)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>          return false;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        }<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        return true;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      }<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    };<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    if (failIfWALExists) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      final FileStatus[] walFiles = FSUtils.listStatus(fs, fullPathLogDir, ourFiles);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      if (null != walFiles &amp;&amp; 0 != walFiles.length) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        throw new IOException("Target WAL already exists within directory " + fullPathLogDir);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>    // Register listeners.  TODO: Should this exist anymore?  We have CPs?<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (listeners != null) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      for (WALActionsListener i: listeners) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        registerWALActionsListener(i);<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>    this.coprocessorHost = new WALCoprocessorHost(this, conf);<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>    // Get size to roll log at. Roll at 95% of HDFS block size so we avoid crossing HDFS blocks<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    // (it costs a little x'ing bocks)<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    final long blocksize = this.conf.getLong("hbase.regionserver.hlog.blocksize",<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        FSUtils.getDefaultBlockSize(this.fs, this.fullPathLogDir));<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    this.logrollsize =<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      (long)(blocksize * conf.getFloat("hbase.regionserver.logroll.multiplier", 0.95f));<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    <a name="line.511"></a>
-<span class="sourceLineNo">512</span>    float memstoreRatio = conf.getFloat(HeapMemorySizeUtil.MEMSTORE_SIZE_KEY,<a name="line.512"></a>
-<span class="sourceLineNo">513</spa

<TRUNCATED>

[03/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
index f538aaa..99eccfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.GetTillDoneOrException.html
@@ -5018,1055 +5018,1055 @@
 <span class="sourceLineNo">5010</span>        put.addColumn(family, qf, null);<a name="line.5010"></a>
 <span class="sourceLineNo">5011</span>      }<a name="line.5011"></a>
 <span class="sourceLineNo">5012</span>      region.put(put);<a name="line.5012"></a>
-<span class="sourceLineNo">5013</span>    }<a name="line.5013"></a>
-<span class="sourceLineNo">5014</span>  }<a name="line.5014"></a>
-<span class="sourceLineNo">5015</span><a name="line.5015"></a>
-<span class="sourceLineNo">5016</span>  static void verifyData(HRegion newReg, int startRow, int numRows, byte[] qf, byte[]... families)<a name="line.5016"></a>
-<span class="sourceLineNo">5017</span>      throws IOException {<a name="line.5017"></a>
-<span class="sourceLineNo">5018</span>    for (int i = startRow; i &lt; startRow + numRows; i++) {<a name="line.5018"></a>
-<span class="sourceLineNo">5019</span>      byte[] row = Bytes.toBytes("" + i);<a name="line.5019"></a>
-<span class="sourceLineNo">5020</span>      Get get = new Get(row);<a name="line.5020"></a>
-<span class="sourceLineNo">5021</span>      for (byte[] family : families) {<a name="line.5021"></a>
-<span class="sourceLineNo">5022</span>        get.addColumn(family, qf);<a name="line.5022"></a>
-<span class="sourceLineNo">5023</span>      }<a name="line.5023"></a>
-<span class="sourceLineNo">5024</span>      Result result = newReg.get(get);<a name="line.5024"></a>
-<span class="sourceLineNo">5025</span>      Cell[] raw = result.rawCells();<a name="line.5025"></a>
-<span class="sourceLineNo">5026</span>      assertEquals(families.length, result.size());<a name="line.5026"></a>
-<span class="sourceLineNo">5027</span>      for (int j = 0; j &lt; families.length; j++) {<a name="line.5027"></a>
-<span class="sourceLineNo">5028</span>        assertTrue(CellUtil.matchingRow(raw[j], row));<a name="line.5028"></a>
-<span class="sourceLineNo">5029</span>        assertTrue(CellUtil.matchingFamily(raw[j], families[j]));<a name="line.5029"></a>
-<span class="sourceLineNo">5030</span>        assertTrue(CellUtil.matchingQualifier(raw[j], qf));<a name="line.5030"></a>
-<span class="sourceLineNo">5031</span>      }<a name="line.5031"></a>
-<span class="sourceLineNo">5032</span>    }<a name="line.5032"></a>
-<span class="sourceLineNo">5033</span>  }<a name="line.5033"></a>
-<span class="sourceLineNo">5034</span><a name="line.5034"></a>
-<span class="sourceLineNo">5035</span>  static void assertGet(final HRegion r, final byte[] family, final byte[] k) throws IOException {<a name="line.5035"></a>
-<span class="sourceLineNo">5036</span>    // Now I have k, get values out and assert they are as expected.<a name="line.5036"></a>
-<span class="sourceLineNo">5037</span>    Get get = new Get(k).addFamily(family).setMaxVersions();<a name="line.5037"></a>
-<span class="sourceLineNo">5038</span>    Cell[] results = r.get(get).rawCells();<a name="line.5038"></a>
-<span class="sourceLineNo">5039</span>    for (int j = 0; j &lt; results.length; j++) {<a name="line.5039"></a>
-<span class="sourceLineNo">5040</span>      byte[] tmp = CellUtil.cloneValue(results[j]);<a name="line.5040"></a>
-<span class="sourceLineNo">5041</span>      // Row should be equal to value every time.<a name="line.5041"></a>
-<span class="sourceLineNo">5042</span>      assertTrue(Bytes.equals(k, tmp));<a name="line.5042"></a>
-<span class="sourceLineNo">5043</span>    }<a name="line.5043"></a>
-<span class="sourceLineNo">5044</span>  }<a name="line.5044"></a>
-<span class="sourceLineNo">5045</span><a name="line.5045"></a>
-<span class="sourceLineNo">5046</span>  /*<a name="line.5046"></a>
-<span class="sourceLineNo">5047</span>   * Assert first value in the passed region is &lt;code&gt;firstValue&lt;/code&gt;.<a name="line.5047"></a>
-<span class="sourceLineNo">5048</span>   *<a name="line.5048"></a>
-<span class="sourceLineNo">5049</span>   * @param r<a name="line.5049"></a>
-<span class="sourceLineNo">5050</span>   *<a name="line.5050"></a>
-<span class="sourceLineNo">5051</span>   * @param fs<a name="line.5051"></a>
-<span class="sourceLineNo">5052</span>   *<a name="line.5052"></a>
-<span class="sourceLineNo">5053</span>   * @param firstValue<a name="line.5053"></a>
-<span class="sourceLineNo">5054</span>   *<a name="line.5054"></a>
-<span class="sourceLineNo">5055</span>   * @throws IOException<a name="line.5055"></a>
-<span class="sourceLineNo">5056</span>   */<a name="line.5056"></a>
-<span class="sourceLineNo">5057</span>  private void assertScan(final HRegion r, final byte[] fs, final byte[] firstValue)<a name="line.5057"></a>
-<span class="sourceLineNo">5058</span>      throws IOException {<a name="line.5058"></a>
-<span class="sourceLineNo">5059</span>    byte[][] families = { fs };<a name="line.5059"></a>
-<span class="sourceLineNo">5060</span>    Scan scan = new Scan();<a name="line.5060"></a>
-<span class="sourceLineNo">5061</span>    for (int i = 0; i &lt; families.length; i++)<a name="line.5061"></a>
-<span class="sourceLineNo">5062</span>      scan.addFamily(families[i]);<a name="line.5062"></a>
-<span class="sourceLineNo">5063</span>    InternalScanner s = r.getScanner(scan);<a name="line.5063"></a>
-<span class="sourceLineNo">5064</span>    try {<a name="line.5064"></a>
-<span class="sourceLineNo">5065</span>      List&lt;Cell&gt; curVals = new ArrayList&lt;Cell&gt;();<a name="line.5065"></a>
-<span class="sourceLineNo">5066</span>      boolean first = true;<a name="line.5066"></a>
-<span class="sourceLineNo">5067</span>      OUTER_LOOP: while (s.next(curVals)) {<a name="line.5067"></a>
-<span class="sourceLineNo">5068</span>        for (Cell kv : curVals) {<a name="line.5068"></a>
-<span class="sourceLineNo">5069</span>          byte[] val = CellUtil.cloneValue(kv);<a name="line.5069"></a>
-<span class="sourceLineNo">5070</span>          byte[] curval = val;<a name="line.5070"></a>
-<span class="sourceLineNo">5071</span>          if (first) {<a name="line.5071"></a>
-<span class="sourceLineNo">5072</span>            first = false;<a name="line.5072"></a>
-<span class="sourceLineNo">5073</span>            assertTrue(Bytes.compareTo(curval, firstValue) == 0);<a name="line.5073"></a>
-<span class="sourceLineNo">5074</span>          } else {<a name="line.5074"></a>
-<span class="sourceLineNo">5075</span>            // Not asserting anything. Might as well break.<a name="line.5075"></a>
-<span class="sourceLineNo">5076</span>            break OUTER_LOOP;<a name="line.5076"></a>
-<span class="sourceLineNo">5077</span>          }<a name="line.5077"></a>
-<span class="sourceLineNo">5078</span>        }<a name="line.5078"></a>
-<span class="sourceLineNo">5079</span>      }<a name="line.5079"></a>
-<span class="sourceLineNo">5080</span>    } finally {<a name="line.5080"></a>
-<span class="sourceLineNo">5081</span>      s.close();<a name="line.5081"></a>
-<span class="sourceLineNo">5082</span>    }<a name="line.5082"></a>
-<span class="sourceLineNo">5083</span>  }<a name="line.5083"></a>
-<span class="sourceLineNo">5084</span><a name="line.5084"></a>
-<span class="sourceLineNo">5085</span>  /**<a name="line.5085"></a>
-<span class="sourceLineNo">5086</span>   * Test that we get the expected flush results back<a name="line.5086"></a>
-<span class="sourceLineNo">5087</span>   * @throws IOException<a name="line.5087"></a>
-<span class="sourceLineNo">5088</span>   */<a name="line.5088"></a>
-<span class="sourceLineNo">5089</span>  @Test<a name="line.5089"></a>
-<span class="sourceLineNo">5090</span>  public void testFlushResult() throws IOException {<a name="line.5090"></a>
-<span class="sourceLineNo">5091</span>    String method = name.getMethodName();<a name="line.5091"></a>
-<span class="sourceLineNo">5092</span>    TableName tableName = TableName.valueOf(method);<a name="line.5092"></a>
-<span class="sourceLineNo">5093</span>    byte[] family = Bytes.toBytes("family");<a name="line.5093"></a>
-<span class="sourceLineNo">5094</span><a name="line.5094"></a>
-<span class="sourceLineNo">5095</span>    this.region = initHRegion(tableName, method, family);<a name="line.5095"></a>
-<span class="sourceLineNo">5096</span><a name="line.5096"></a>
-<span class="sourceLineNo">5097</span>    // empty memstore, flush doesn't run<a name="line.5097"></a>
-<span class="sourceLineNo">5098</span>    HRegion.FlushResult fr = region.flush(true);<a name="line.5098"></a>
-<span class="sourceLineNo">5099</span>    assertFalse(fr.isFlushSucceeded());<a name="line.5099"></a>
-<span class="sourceLineNo">5100</span>    assertFalse(fr.isCompactionNeeded());<a name="line.5100"></a>
-<span class="sourceLineNo">5101</span><a name="line.5101"></a>
-<span class="sourceLineNo">5102</span>    // Flush enough files to get up to the threshold, doesn't need compactions<a name="line.5102"></a>
-<span class="sourceLineNo">5103</span>    for (int i = 0; i &lt; 2; i++) {<a name="line.5103"></a>
-<span class="sourceLineNo">5104</span>      Put put = new Put(tableName.toBytes()).addColumn(family, family, tableName.toBytes());<a name="line.5104"></a>
-<span class="sourceLineNo">5105</span>      region.put(put);<a name="line.5105"></a>
-<span class="sourceLineNo">5106</span>      fr = region.flush(true);<a name="line.5106"></a>
-<span class="sourceLineNo">5107</span>      assertTrue(fr.isFlushSucceeded());<a name="line.5107"></a>
-<span class="sourceLineNo">5108</span>      assertFalse(fr.isCompactionNeeded());<a name="line.5108"></a>
-<span class="sourceLineNo">5109</span>    }<a name="line.5109"></a>
-<span class="sourceLineNo">5110</span><a name="line.5110"></a>
-<span class="sourceLineNo">5111</span>    // Two flushes after the threshold, compactions are needed<a name="line.5111"></a>
-<span class="sourceLineNo">5112</span>    for (int i = 0; i &lt; 2; i++) {<a name="line.5112"></a>
-<span class="sourceLineNo">5113</span>      Put put = new Put(tableName.toBytes()).addColumn(family, family, tableName.toBytes());<a name="line.5113"></a>
-<span class="sourceLineNo">5114</span>      region.put(put);<a name="line.5114"></a>
-<span class="sourceLineNo">5115</span>      fr = region.flush(true);<a name="line.5115"></a>
-<span class="sourceLineNo">5116</span>      assertTrue(fr.isFlushSucceeded());<a name="line.5116"></a>
-<span class="sourceLineNo">5117</span>      assertTrue(fr.isCompactionNeeded());<a name="line.5117"></a>
-<span class="sourceLineNo">5118</span>    }<a name="line.5118"></a>
-<span class="sourceLineNo">5119</span>  }<a name="line.5119"></a>
-<span class="sourceLineNo">5120</span><a name="line.5120"></a>
-<span class="sourceLineNo">5121</span>  private Configuration initSplit() {<a name="line.5121"></a>
-<span class="sourceLineNo">5122</span>    // Always compact if there is more than one store file.<a name="line.5122"></a>
-<span class="sourceLineNo">5123</span>    CONF.setInt("hbase.hstore.compactionThreshold", 2);<a name="line.5123"></a>
-<span class="sourceLineNo">5124</span><a name="line.5124"></a>
-<span class="sourceLineNo">5125</span>    // Make lease timeout longer, lease checks less frequent<a name="line.5125"></a>
-<span class="sourceLineNo">5126</span>    CONF.setInt("hbase.master.lease.thread.wakefrequency", 5 * 1000);<a name="line.5126"></a>
-<span class="sourceLineNo">5127</span><a name="line.5127"></a>
-<span class="sourceLineNo">5128</span>    CONF.setInt(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, 10 * 1000);<a name="line.5128"></a>
-<span class="sourceLineNo">5129</span><a name="line.5129"></a>
-<span class="sourceLineNo">5130</span>    // Increase the amount of time between client retries<a name="line.5130"></a>
-<span class="sourceLineNo">5131</span>    CONF.setLong("hbase.client.pause", 15 * 1000);<a name="line.5131"></a>
-<span class="sourceLineNo">5132</span><a name="line.5132"></a>
-<span class="sourceLineNo">5133</span>    // This size should make it so we always split using the addContent<a name="line.5133"></a>
-<span class="sourceLineNo">5134</span>    // below. After adding all data, the first region is 1.3M<a name="line.5134"></a>
-<span class="sourceLineNo">5135</span>    CONF.setLong(HConstants.HREGION_MAX_FILESIZE, 1024 * 128);<a name="line.5135"></a>
-<span class="sourceLineNo">5136</span>    return CONF;<a name="line.5136"></a>
-<span class="sourceLineNo">5137</span>  }<a name="line.5137"></a>
-<span class="sourceLineNo">5138</span><a name="line.5138"></a>
-<span class="sourceLineNo">5139</span>  /**<a name="line.5139"></a>
-<span class="sourceLineNo">5140</span>   * @param tableName<a name="line.5140"></a>
-<span class="sourceLineNo">5141</span>   * @param callingMethod<a name="line.5141"></a>
-<span class="sourceLineNo">5142</span>   * @param conf<a name="line.5142"></a>
-<span class="sourceLineNo">5143</span>   * @param families<a name="line.5143"></a>
-<span class="sourceLineNo">5144</span>   * @throws IOException<a name="line.5144"></a>
-<span class="sourceLineNo">5145</span>   * @return A region on which you must call<a name="line.5145"></a>
-<span class="sourceLineNo">5146</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5146"></a>
-<span class="sourceLineNo">5147</span>   */<a name="line.5147"></a>
-<span class="sourceLineNo">5148</span>  private static HRegion initHRegion(TableName tableName, String callingMethod, Configuration conf,<a name="line.5148"></a>
-<span class="sourceLineNo">5149</span>      byte[]... families) throws IOException {<a name="line.5149"></a>
-<span class="sourceLineNo">5150</span>    return initHRegion(tableName, null, null, callingMethod, conf, false, families);<a name="line.5150"></a>
-<span class="sourceLineNo">5151</span>  }<a name="line.5151"></a>
-<span class="sourceLineNo">5152</span><a name="line.5152"></a>
-<span class="sourceLineNo">5153</span>  /**<a name="line.5153"></a>
-<span class="sourceLineNo">5154</span>   * @param tableName<a name="line.5154"></a>
-<span class="sourceLineNo">5155</span>   * @param callingMethod<a name="line.5155"></a>
-<span class="sourceLineNo">5156</span>   * @param conf<a name="line.5156"></a>
-<span class="sourceLineNo">5157</span>   * @param isReadOnly<a name="line.5157"></a>
-<span class="sourceLineNo">5158</span>   * @param families<a name="line.5158"></a>
-<span class="sourceLineNo">5159</span>   * @throws IOException<a name="line.5159"></a>
-<span class="sourceLineNo">5160</span>   * @return A region on which you must call<a name="line.5160"></a>
-<span class="sourceLineNo">5161</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5161"></a>
-<span class="sourceLineNo">5162</span>   */<a name="line.5162"></a>
-<span class="sourceLineNo">5163</span>  private static HRegion initHRegion(TableName tableName, String callingMethod, Configuration conf,<a name="line.5163"></a>
-<span class="sourceLineNo">5164</span>      boolean isReadOnly, byte[]... families) throws IOException {<a name="line.5164"></a>
-<span class="sourceLineNo">5165</span>    return initHRegion(tableName, null, null, callingMethod, conf, isReadOnly, families);<a name="line.5165"></a>
-<span class="sourceLineNo">5166</span>  }<a name="line.5166"></a>
-<span class="sourceLineNo">5167</span><a name="line.5167"></a>
-<span class="sourceLineNo">5168</span>  public static HRegion initHRegion(TableName tableName, byte[] startKey, byte[] stopKey,<a name="line.5168"></a>
-<span class="sourceLineNo">5169</span>      String callingMethod, Configuration conf, boolean isReadOnly, byte[]... families)<a name="line.5169"></a>
-<span class="sourceLineNo">5170</span>      throws IOException {<a name="line.5170"></a>
-<span class="sourceLineNo">5171</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.5171"></a>
-<span class="sourceLineNo">5172</span>    HRegionInfo hri = new HRegionInfo(tableName, startKey, stopKey);<a name="line.5172"></a>
-<span class="sourceLineNo">5173</span>    final WAL wal = HBaseTestingUtility.createWal(conf, logDir, hri);<a name="line.5173"></a>
-<span class="sourceLineNo">5174</span>    return initHRegion(tableName, startKey, stopKey, callingMethod, conf, isReadOnly,<a name="line.5174"></a>
-<span class="sourceLineNo">5175</span>        Durability.SYNC_WAL, wal, families);<a name="line.5175"></a>
-<span class="sourceLineNo">5176</span>  }<a name="line.5176"></a>
-<span class="sourceLineNo">5177</span><a name="line.5177"></a>
-<span class="sourceLineNo">5178</span>  /**<a name="line.5178"></a>
-<span class="sourceLineNo">5179</span>   * @param tableName<a name="line.5179"></a>
-<span class="sourceLineNo">5180</span>   * @param startKey<a name="line.5180"></a>
-<span class="sourceLineNo">5181</span>   * @param stopKey<a name="line.5181"></a>
-<span class="sourceLineNo">5182</span>   * @param callingMethod<a name="line.5182"></a>
-<span class="sourceLineNo">5183</span>   * @param conf<a name="line.5183"></a>
-<span class="sourceLineNo">5184</span>   * @param isReadOnly<a name="line.5184"></a>
-<span class="sourceLineNo">5185</span>   * @param families<a name="line.5185"></a>
-<span class="sourceLineNo">5186</span>   * @throws IOException<a name="line.5186"></a>
-<span class="sourceLineNo">5187</span>   * @return A region on which you must call<a name="line.5187"></a>
-<span class="sourceLineNo">5188</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5188"></a>
-<span class="sourceLineNo">5189</span>   */<a name="line.5189"></a>
-<span class="sourceLineNo">5190</span>  public static HRegion initHRegion(TableName tableName, byte[] startKey, byte[] stopKey,<a name="line.5190"></a>
-<span class="sourceLineNo">5191</span>      String callingMethod, Configuration conf, boolean isReadOnly, Durability durability,<a name="line.5191"></a>
-<span class="sourceLineNo">5192</span>      WAL wal, byte[]... families) throws IOException {<a name="line.5192"></a>
-<span class="sourceLineNo">5193</span>    return TEST_UTIL.createLocalHRegion(tableName, startKey, stopKey,<a name="line.5193"></a>
-<span class="sourceLineNo">5194</span>        isReadOnly, durability, wal, families);<a name="line.5194"></a>
-<span class="sourceLineNo">5195</span>  }<a name="line.5195"></a>
-<span class="sourceLineNo">5196</span><a name="line.5196"></a>
-<span class="sourceLineNo">5197</span>  /**<a name="line.5197"></a>
-<span class="sourceLineNo">5198</span>   * Assert that the passed in Cell has expected contents for the specified row,<a name="line.5198"></a>
-<span class="sourceLineNo">5199</span>   * column &amp; timestamp.<a name="line.5199"></a>
-<span class="sourceLineNo">5200</span>   */<a name="line.5200"></a>
-<span class="sourceLineNo">5201</span>  private void checkOneCell(Cell kv, byte[] cf, int rowIdx, int colIdx, long ts) {<a name="line.5201"></a>
-<span class="sourceLineNo">5202</span>    String ctx = "rowIdx=" + rowIdx + "; colIdx=" + colIdx + "; ts=" + ts;<a name="line.5202"></a>
-<span class="sourceLineNo">5203</span>    assertEquals("Row mismatch which checking: " + ctx, "row:" + rowIdx,<a name="line.5203"></a>
-<span class="sourceLineNo">5204</span>        Bytes.toString(CellUtil.cloneRow(kv)));<a name="line.5204"></a>
-<span class="sourceLineNo">5205</span>    assertEquals("ColumnFamily mismatch while checking: " + ctx, Bytes.toString(cf),<a name="line.5205"></a>
-<span class="sourceLineNo">5206</span>        Bytes.toString(CellUtil.cloneFamily(kv)));<a name="line.5206"></a>
-<span class="sourceLineNo">5207</span>    assertEquals("Column qualifier mismatch while checking: " + ctx, "column:" + colIdx,<a name="line.5207"></a>
-<span class="sourceLineNo">5208</span>        Bytes.toString(CellUtil.cloneQualifier(kv)));<a name="line.5208"></a>
-<span class="sourceLineNo">5209</span>    assertEquals("Timestamp mismatch while checking: " + ctx, ts, kv.getTimestamp());<a name="line.5209"></a>
-<span class="sourceLineNo">5210</span>    assertEquals("Value mismatch while checking: " + ctx, "value-version-" + ts,<a name="line.5210"></a>
-<span class="sourceLineNo">5211</span>        Bytes.toString(CellUtil.cloneValue(kv)));<a name="line.5211"></a>
-<span class="sourceLineNo">5212</span>  }<a name="line.5212"></a>
-<span class="sourceLineNo">5213</span><a name="line.5213"></a>
-<span class="sourceLineNo">5214</span>  @Test (timeout=60000)<a name="line.5214"></a>
-<span class="sourceLineNo">5215</span>  public void testReverseScanner_FromMemStore_SingleCF_Normal()<a name="line.5215"></a>
-<span class="sourceLineNo">5216</span>      throws IOException {<a name="line.5216"></a>
-<span class="sourceLineNo">5217</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5217"></a>
-<span class="sourceLineNo">5218</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5218"></a>
-<span class="sourceLineNo">5219</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5219"></a>
-<span class="sourceLineNo">5220</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5220"></a>
-<span class="sourceLineNo">5221</span>    byte[][] families = { cf };<a name="line.5221"></a>
-<span class="sourceLineNo">5222</span>    byte[] col = Bytes.toBytes("C");<a name="line.5222"></a>
-<span class="sourceLineNo">5223</span>    long ts = 1;<a name="line.5223"></a>
-<span class="sourceLineNo">5224</span>    String method = this.getName();<a name="line.5224"></a>
-<span class="sourceLineNo">5225</span>    this.region = initHRegion(tableName, method, families);<a name="line.5225"></a>
-<span class="sourceLineNo">5226</span>    try {<a name="line.5226"></a>
-<span class="sourceLineNo">5227</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5227"></a>
-<span class="sourceLineNo">5228</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5228"></a>
-<span class="sourceLineNo">5229</span>          null);<a name="line.5229"></a>
-<span class="sourceLineNo">5230</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5230"></a>
-<span class="sourceLineNo">5231</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5231"></a>
-<span class="sourceLineNo">5232</span>      Put put = null;<a name="line.5232"></a>
-<span class="sourceLineNo">5233</span>      put = new Put(rowC);<a name="line.5233"></a>
-<span class="sourceLineNo">5234</span>      put.add(kv1);<a name="line.5234"></a>
-<span class="sourceLineNo">5235</span>      put.add(kv11);<a name="line.5235"></a>
-<span class="sourceLineNo">5236</span>      region.put(put);<a name="line.5236"></a>
-<span class="sourceLineNo">5237</span>      put = new Put(rowA);<a name="line.5237"></a>
-<span class="sourceLineNo">5238</span>      put.add(kv2);<a name="line.5238"></a>
-<span class="sourceLineNo">5239</span>      region.put(put);<a name="line.5239"></a>
-<span class="sourceLineNo">5240</span>      put = new Put(rowB);<a name="line.5240"></a>
-<span class="sourceLineNo">5241</span>      put.add(kv3);<a name="line.5241"></a>
-<span class="sourceLineNo">5242</span>      region.put(put);<a name="line.5242"></a>
-<span class="sourceLineNo">5243</span><a name="line.5243"></a>
-<span class="sourceLineNo">5244</span>      Scan scan = new Scan(rowC);<a name="line.5244"></a>
-<span class="sourceLineNo">5245</span>      scan.setMaxVersions(5);<a name="line.5245"></a>
-<span class="sourceLineNo">5246</span>      scan.setReversed(true);<a name="line.5246"></a>
-<span class="sourceLineNo">5247</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5247"></a>
-<span class="sourceLineNo">5248</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5248"></a>
-<span class="sourceLineNo">5249</span>      boolean hasNext = scanner.next(currRow);<a name="line.5249"></a>
-<span class="sourceLineNo">5250</span>      assertEquals(2, currRow.size());<a name="line.5250"></a>
-<span class="sourceLineNo">5251</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5251"></a>
-<span class="sourceLineNo">5252</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5252"></a>
-<span class="sourceLineNo">5253</span>      assertTrue(hasNext);<a name="line.5253"></a>
-<span class="sourceLineNo">5254</span>      currRow.clear();<a name="line.5254"></a>
-<span class="sourceLineNo">5255</span>      hasNext = scanner.next(currRow);<a name="line.5255"></a>
-<span class="sourceLineNo">5256</span>      assertEquals(1, currRow.size());<a name="line.5256"></a>
-<span class="sourceLineNo">5257</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5257"></a>
-<span class="sourceLineNo">5258</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5258"></a>
-<span class="sourceLineNo">5259</span>      assertTrue(hasNext);<a name="line.5259"></a>
-<span class="sourceLineNo">5260</span>      currRow.clear();<a name="line.5260"></a>
-<span class="sourceLineNo">5261</span>      hasNext = scanner.next(currRow);<a name="line.5261"></a>
-<span class="sourceLineNo">5262</span>      assertEquals(1, currRow.size());<a name="line.5262"></a>
-<span class="sourceLineNo">5263</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5263"></a>
-<span class="sourceLineNo">5264</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5264"></a>
-<span class="sourceLineNo">5265</span>      assertFalse(hasNext);<a name="line.5265"></a>
-<span class="sourceLineNo">5266</span>      scanner.close();<a name="line.5266"></a>
-<span class="sourceLineNo">5267</span>    } finally {<a name="line.5267"></a>
-<span class="sourceLineNo">5268</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5268"></a>
-<span class="sourceLineNo">5269</span>      this.region = null;<a name="line.5269"></a>
-<span class="sourceLineNo">5270</span>    }<a name="line.5270"></a>
-<span class="sourceLineNo">5271</span>  }<a name="line.5271"></a>
-<span class="sourceLineNo">5272</span><a name="line.5272"></a>
-<span class="sourceLineNo">5273</span>  @Test (timeout=60000)<a name="line.5273"></a>
-<span class="sourceLineNo">5274</span>  public void testReverseScanner_FromMemStore_SingleCF_LargerKey()<a name="line.5274"></a>
-<span class="sourceLineNo">5275</span>      throws IOException {<a name="line.5275"></a>
-<span class="sourceLineNo">5276</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5276"></a>
-<span class="sourceLineNo">5277</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5277"></a>
-<span class="sourceLineNo">5278</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5278"></a>
-<span class="sourceLineNo">5279</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5279"></a>
-<span class="sourceLineNo">5280</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5280"></a>
-<span class="sourceLineNo">5281</span>    byte[][] families = { cf };<a name="line.5281"></a>
-<span class="sourceLineNo">5282</span>    byte[] col = Bytes.toBytes("C");<a name="line.5282"></a>
-<span class="sourceLineNo">5283</span>    long ts = 1;<a name="line.5283"></a>
-<span class="sourceLineNo">5284</span>    String method = this.getName();<a name="line.5284"></a>
-<span class="sourceLineNo">5285</span>    this.region = initHRegion(tableName, method, families);<a name="line.5285"></a>
-<span class="sourceLineNo">5286</span>    try {<a name="line.5286"></a>
-<span class="sourceLineNo">5287</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5287"></a>
-<span class="sourceLineNo">5288</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5288"></a>
-<span class="sourceLineNo">5289</span>          null);<a name="line.5289"></a>
-<span class="sourceLineNo">5290</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5290"></a>
-<span class="sourceLineNo">5291</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5291"></a>
-<span class="sourceLineNo">5292</span>      Put put = null;<a name="line.5292"></a>
-<span class="sourceLineNo">5293</span>      put = new Put(rowC);<a name="line.5293"></a>
-<span class="sourceLineNo">5294</span>      put.add(kv1);<a name="line.5294"></a>
-<span class="sourceLineNo">5295</span>      put.add(kv11);<a name="line.5295"></a>
-<span class="sourceLineNo">5296</span>      region.put(put);<a name="line.5296"></a>
-<span class="sourceLineNo">5297</span>      put = new Put(rowA);<a name="line.5297"></a>
-<span class="sourceLineNo">5298</span>      put.add(kv2);<a name="line.5298"></a>
-<span class="sourceLineNo">5299</span>      region.put(put);<a name="line.5299"></a>
-<span class="sourceLineNo">5300</span>      put = new Put(rowB);<a name="line.5300"></a>
-<span class="sourceLineNo">5301</span>      put.add(kv3);<a name="line.5301"></a>
-<span class="sourceLineNo">5302</span>      region.put(put);<a name="line.5302"></a>
-<span class="sourceLineNo">5303</span><a name="line.5303"></a>
-<span class="sourceLineNo">5304</span>      Scan scan = new Scan(rowD);<a name="line.5304"></a>
-<span class="sourceLineNo">5305</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5305"></a>
-<span class="sourceLineNo">5306</span>      scan.setReversed(true);<a name="line.5306"></a>
-<span class="sourceLineNo">5307</span>      scan.setMaxVersions(5);<a name="line.5307"></a>
-<span class="sourceLineNo">5308</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5308"></a>
-<span class="sourceLineNo">5309</span>      boolean hasNext = scanner.next(currRow);<a name="line.5309"></a>
-<span class="sourceLineNo">5310</span>      assertEquals(2, currRow.size());<a name="line.5310"></a>
-<span class="sourceLineNo">5311</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5311"></a>
-<span class="sourceLineNo">5312</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5312"></a>
-<span class="sourceLineNo">5313</span>      assertTrue(hasNext);<a name="line.5313"></a>
-<span class="sourceLineNo">5314</span>      currRow.clear();<a name="line.5314"></a>
-<span class="sourceLineNo">5315</span>      hasNext = scanner.next(currRow);<a name="line.5315"></a>
-<span class="sourceLineNo">5316</span>      assertEquals(1, currRow.size());<a name="line.5316"></a>
-<span class="sourceLineNo">5317</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5317"></a>
-<span class="sourceLineNo">5318</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5318"></a>
-<span class="sourceLineNo">5319</span>      assertTrue(hasNext);<a name="line.5319"></a>
-<span class="sourceLineNo">5320</span>      currRow.clear();<a name="line.5320"></a>
-<span class="sourceLineNo">5321</span>      hasNext = scanner.next(currRow);<a name="line.5321"></a>
-<span class="sourceLineNo">5322</span>      assertEquals(1, currRow.size());<a name="line.5322"></a>
-<span class="sourceLineNo">5323</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5323"></a>
-<span class="sourceLineNo">5324</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5324"></a>
-<span class="sourceLineNo">5325</span>      assertFalse(hasNext);<a name="line.5325"></a>
-<span class="sourceLineNo">5326</span>      scanner.close();<a name="line.5326"></a>
-<span class="sourceLineNo">5327</span>    } finally {<a name="line.5327"></a>
-<span class="sourceLineNo">5328</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5328"></a>
-<span class="sourceLineNo">5329</span>      this.region = null;<a name="line.5329"></a>
-<span class="sourceLineNo">5330</span>    }<a name="line.5330"></a>
-<span class="sourceLineNo">5331</span>  }<a name="line.5331"></a>
-<span class="sourceLineNo">5332</span><a name="line.5332"></a>
-<span class="sourceLineNo">5333</span>  @Test (timeout=60000)<a name="line.5333"></a>
-<span class="sourceLineNo">5334</span>  public void testReverseScanner_FromMemStore_SingleCF_FullScan()<a name="line.5334"></a>
-<span class="sourceLineNo">5335</span>      throws IOException {<a name="line.5335"></a>
-<span class="sourceLineNo">5336</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5336"></a>
-<span class="sourceLineNo">5337</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5337"></a>
-<span class="sourceLineNo">5338</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5338"></a>
-<span class="sourceLineNo">5339</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5339"></a>
-<span class="sourceLineNo">5340</span>    byte[][] families = { cf };<a name="line.5340"></a>
-<span class="sourceLineNo">5341</span>    byte[] col = Bytes.toBytes("C");<a name="line.5341"></a>
-<span class="sourceLineNo">5342</span>    long ts = 1;<a name="line.5342"></a>
-<span class="sourceLineNo">5343</span>    String method = this.getName();<a name="line.5343"></a>
-<span class="sourceLineNo">5344</span>    this.region = initHRegion(tableName, method, families);<a name="line.5344"></a>
-<span class="sourceLineNo">5345</span>    try {<a name="line.5345"></a>
-<span class="sourceLineNo">5346</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5346"></a>
-<span class="sourceLineNo">5347</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5347"></a>
-<span class="sourceLineNo">5348</span>          null);<a name="line.5348"></a>
-<span class="sourceLineNo">5349</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5349"></a>
-<span class="sourceLineNo">5350</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5350"></a>
-<span class="sourceLineNo">5351</span>      Put put = null;<a name="line.5351"></a>
-<span class="sourceLineNo">5352</span>      put = new Put(rowC);<a name="line.5352"></a>
-<span class="sourceLineNo">5353</span>      put.add(kv1);<a name="line.5353"></a>
-<span class="sourceLineNo">5354</span>      put.add(kv11);<a name="line.5354"></a>
-<span class="sourceLineNo">5355</span>      region.put(put);<a name="line.5355"></a>
-<span class="sourceLineNo">5356</span>      put = new Put(rowA);<a name="line.5356"></a>
-<span class="sourceLineNo">5357</span>      put.add(kv2);<a name="line.5357"></a>
-<span class="sourceLineNo">5358</span>      region.put(put);<a name="line.5358"></a>
-<span class="sourceLineNo">5359</span>      put = new Put(rowB);<a name="line.5359"></a>
-<span class="sourceLineNo">5360</span>      put.add(kv3);<a name="line.5360"></a>
-<span class="sourceLineNo">5361</span>      region.put(put);<a name="line.5361"></a>
-<span class="sourceLineNo">5362</span>      Scan scan = new Scan();<a name="line.5362"></a>
-<span class="sourceLineNo">5363</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5363"></a>
-<span class="sourceLineNo">5364</span>      scan.setReversed(true);<a name="line.5364"></a>
-<span class="sourceLineNo">5365</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5365"></a>
-<span class="sourceLineNo">5366</span>      boolean hasNext = scanner.next(currRow);<a name="line.5366"></a>
-<span class="sourceLineNo">5367</span>      assertEquals(1, currRow.size());<a name="line.5367"></a>
-<span class="sourceLineNo">5368</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5368"></a>
-<span class="sourceLineNo">5369</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5369"></a>
-<span class="sourceLineNo">5370</span>      assertTrue(hasNext);<a name="line.5370"></a>
-<span class="sourceLineNo">5371</span>      currRow.clear();<a name="line.5371"></a>
-<span class="sourceLineNo">5372</span>      hasNext = scanner.next(currRow);<a name="line.5372"></a>
-<span class="sourceLineNo">5373</span>      assertEquals(1, currRow.size());<a name="line.5373"></a>
-<span class="sourceLineNo">5374</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5374"></a>
-<span class="sourceLineNo">5375</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5375"></a>
-<span class="sourceLineNo">5376</span>      assertTrue(hasNext);<a name="line.5376"></a>
-<span class="sourceLineNo">5377</span>      currRow.clear();<a name="line.5377"></a>
-<span class="sourceLineNo">5378</span>      hasNext = scanner.next(currRow);<a name="line.5378"></a>
-<span class="sourceLineNo">5379</span>      assertEquals(1, currRow.size());<a name="line.5379"></a>
-<span class="sourceLineNo">5380</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5380"></a>
-<span class="sourceLineNo">5381</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5381"></a>
-<span class="sourceLineNo">5382</span>      assertFalse(hasNext);<a name="line.5382"></a>
-<span class="sourceLineNo">5383</span>      scanner.close();<a name="line.5383"></a>
-<span class="sourceLineNo">5384</span>    } finally {<a name="line.5384"></a>
-<span class="sourceLineNo">5385</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5385"></a>
-<span class="sourceLineNo">5386</span>      this.region = null;<a name="line.5386"></a>
-<span class="sourceLineNo">5387</span>    }<a name="line.5387"></a>
-<span class="sourceLineNo">5388</span>  }<a name="line.5388"></a>
-<span class="sourceLineNo">5389</span><a name="line.5389"></a>
-<span class="sourceLineNo">5390</span>  @Test (timeout=60000)<a name="line.5390"></a>
-<span class="sourceLineNo">5391</span>  public void testReverseScanner_moreRowsMayExistAfter() throws IOException {<a name="line.5391"></a>
-<span class="sourceLineNo">5392</span>    // case for "INCLUDE_AND_SEEK_NEXT_ROW &amp; SEEK_NEXT_ROW" endless loop<a name="line.5392"></a>
-<span class="sourceLineNo">5393</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5393"></a>
-<span class="sourceLineNo">5394</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5394"></a>
-<span class="sourceLineNo">5395</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5395"></a>
-<span class="sourceLineNo">5396</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5396"></a>
-<span class="sourceLineNo">5397</span>    byte[] rowE = Bytes.toBytes("rowE");<a name="line.5397"></a>
-<span class="sourceLineNo">5398</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5398"></a>
-<span class="sourceLineNo">5399</span>    byte[][] families = { cf };<a name="line.5399"></a>
-<span class="sourceLineNo">5400</span>    byte[] col1 = Bytes.toBytes("col1");<a name="line.5400"></a>
-<span class="sourceLineNo">5401</span>    byte[] col2 = Bytes.toBytes("col2");<a name="line.5401"></a>
-<span class="sourceLineNo">5402</span>    long ts = 1;<a name="line.5402"></a>
-<span class="sourceLineNo">5403</span>    String method = this.getName();<a name="line.5403"></a>
-<span class="sourceLineNo">5404</span>    this.region = initHRegion(tableName, method, families);<a name="line.5404"></a>
-<span class="sourceLineNo">5405</span>    try {<a name="line.5405"></a>
-<span class="sourceLineNo">5406</span>      KeyValue kv1 = new KeyValue(rowA, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5406"></a>
-<span class="sourceLineNo">5407</span>      KeyValue kv2 = new KeyValue(rowB, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5407"></a>
-<span class="sourceLineNo">5408</span>      KeyValue kv3 = new KeyValue(rowC, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5408"></a>
-<span class="sourceLineNo">5409</span>      KeyValue kv4_1 = new KeyValue(rowD, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5409"></a>
-<span class="sourceLineNo">5410</span>      KeyValue kv4_2 = new KeyValue(rowD, cf, col2, ts, KeyValue.Type.Put, null);<a name="line.5410"></a>
-<span class="sourceLineNo">5411</span>      KeyValue kv5 = new KeyValue(rowE, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5411"></a>
-<span class="sourceLineNo">5412</span>      Put put = null;<a name="line.5412"></a>
-<span class="sourceLineNo">5413</span>      put = new Put(rowA);<a name="line.5413"></a>
-<span class="sourceLineNo">5414</span>      put.add(kv1);<a name="line.5414"></a>
-<span class="sourceLineNo">5415</span>      region.put(put);<a name="line.5415"></a>
-<span class="sourceLineNo">5416</span>      put = new Put(rowB);<a name="line.5416"></a>
-<span class="sourceLineNo">5417</span>      put.add(kv2);<a name="line.5417"></a>
-<span class="sourceLineNo">5418</span>      region.put(put);<a name="line.5418"></a>
-<span class="sourceLineNo">5419</span>      put = new Put(rowC);<a name="line.5419"></a>
-<span class="sourceLineNo">5420</span>      put.add(kv3);<a name="line.5420"></a>
-<span class="sourceLineNo">5421</span>      region.put(put);<a name="line.5421"></a>
-<span class="sourceLineNo">5422</span>      put = new Put(rowD);<a name="line.5422"></a>
-<span class="sourceLineNo">5423</span>      put.add(kv4_1);<a name="line.5423"></a>
-<span class="sourceLineNo">5424</span>      region.put(put);<a name="line.5424"></a>
-<span class="sourceLineNo">5425</span>      put = new Put(rowD);<a name="line.5425"></a>
-<span class="sourceLineNo">5426</span>      put.add(kv4_2);<a name="line.5426"></a>
-<span class="sourceLineNo">5427</span>      region.put(put);<a name="line.5427"></a>
-<span class="sourceLineNo">5428</span>      put = new Put(rowE);<a name="line.5428"></a>
-<span class="sourceLineNo">5429</span>      put.add(kv5);<a name="line.5429"></a>
-<span class="sourceLineNo">5430</span>      region.put(put);<a name="line.5430"></a>
-<span class="sourceLineNo">5431</span>      region.flush(true);<a name="line.5431"></a>
-<span class="sourceLineNo">5432</span>      Scan scan = new Scan(rowD, rowA);<a name="line.5432"></a>
-<span class="sourceLineNo">5433</span>      scan.addColumn(families[0], col1);<a name="line.5433"></a>
-<span class="sourceLineNo">5434</span>      scan.setReversed(true);<a name="line.5434"></a>
-<span class="sourceLineNo">5435</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5435"></a>
-<span class="sourceLineNo">5436</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5436"></a>
-<span class="sourceLineNo">5437</span>      boolean hasNext = scanner.next(currRow);<a name="line.5437"></a>
-<span class="sourceLineNo">5438</span>      assertEquals(1, currRow.size());<a name="line.5438"></a>
-<span class="sourceLineNo">5439</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5439"></a>
-<span class="sourceLineNo">5440</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5440"></a>
-<span class="sourceLineNo">5441</span>      assertTrue(hasNext);<a name="line.5441"></a>
-<span class="sourceLineNo">5442</span>      currRow.clear();<a name="line.5442"></a>
-<span class="sourceLineNo">5443</span>      hasNext = scanner.next(currRow);<a name="line.5443"></a>
-<span class="sourceLineNo">5444</span>      assertEquals(1, currRow.size());<a name="line.5444"></a>
-<span class="sourceLineNo">5445</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5445"></a>
-<span class="sourceLineNo">5446</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5446"></a>
-<span class="sourceLineNo">5447</span>      assertTrue(hasNext);<a name="line.5447"></a>
-<span class="sourceLineNo">5448</span>      currRow.clear();<a name="line.5448"></a>
-<span class="sourceLineNo">5449</span>      hasNext = scanner.next(currRow);<a name="line.5449"></a>
-<span class="sourceLineNo">5450</span>      assertEquals(1, currRow.size());<a name="line.5450"></a>
-<span class="sourceLineNo">5451</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5451"></a>
-<span class="sourceLineNo">5452</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5452"></a>
-<span class="sourceLineNo">5453</span>      assertFalse(hasNext);<a name="line.5453"></a>
-<span class="sourceLineNo">5454</span>      scanner.close();<a name="line.5454"></a>
-<span class="sourceLineNo">5455</span><a name="line.5455"></a>
-<span class="sourceLineNo">5456</span>      scan = new Scan(rowD, rowA);<a name="line.5456"></a>
-<span class="sourceLineNo">5457</span>      scan.addColumn(families[0], col2);<a name="line.5457"></a>
-<span class="sourceLineNo">5458</span>      scan.setReversed(true);<a name="line.5458"></a>
-<span class="sourceLineNo">5459</span>      currRow.clear();<a name="line.5459"></a>
-<span class="sourceLineNo">5460</span>      scanner = region.getScanner(scan);<a name="line.5460"></a>
-<span class="sourceLineNo">5461</span>      hasNext = scanner.next(currRow);<a name="line.5461"></a>
-<span class="sourceLineNo">5462</span>      assertEquals(1, currRow.size());<a name="line.5462"></a>
-<span class="sourceLineNo">5463</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5463"></a>
-<span class="sourceLineNo">5464</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5464"></a>
-<span class="sourceLineNo">5465</span>      scanner.close();<a name="line.5465"></a>
-<span class="sourceLineNo">5466</span>    } finally {<a name="line.5466"></a>
-<span class="sourceLineNo">5467</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5467"></a>
-<span class="sourceLineNo">5468</span>      this.region = null;<a name="line.5468"></a>
-<span class="sourceLineNo">5469</span>    }<a name="line.5469"></a>
-<span class="sourceLineNo">5470</span>  }<a name="line.5470"></a>
-<span class="sourceLineNo">5471</span><a name="line.5471"></a>
-<span class="sourceLineNo">5472</span>  @Test (timeout=60000)<a name="line.5472"></a>
-<span class="sourceLineNo">5473</span>  public void testReverseScanner_smaller_blocksize() throws IOException {<a name="line.5473"></a>
-<span class="sourceLineNo">5474</span>    // case to ensure no conflict with HFile index optimization<a name="line.5474"></a>
-<span class="sourceLineNo">5475</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5475"></a>
-<span class="sourceLineNo">5476</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5476"></a>
-<span class="sourceLineNo">5477</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5477"></a>
-<span class="sourceLineNo">5478</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5478"></a>
-<span class="sourceLineNo">5479</span>    byte[] rowE = Bytes.toBytes("rowE");<a name="line.5479"></a>
-<span class="sourceLineNo">5480</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5480"></a>
-<span class="sourceLineNo">5481</span>    byte[][] families = { cf };<a name="line.5481"></a>
-<span class="sourceLineNo">5482</span>    byte[] col1 = Bytes.toBytes("col1");<a name="line.5482"></a>
-<span class="sourceLineNo">5483</span>    byte[] col2 = Bytes.toBytes("col2");<a name="line.5483"></a>
-<span class="sourceLineNo">5484</span>    long ts = 1;<a name="line.5484"></a>
-<span class="sourceLineNo">5485</span>    String method = this.getName();<a name="line.5485"></a>
-<span class="sourceLineNo">5486</span>    HBaseConfiguration config = new HBaseConfiguration();<a name="line.5486"></a>
-<span class="sourceLineNo">5487</span>    config.setInt("test.block.size", 1);<a name="line.5487"></a>
-<span class="sourceLineNo">5488</span>    this.region = initHRegion(tableName, method, config, families);<a name="line.5488"></a>
-<span class="sourceLineNo">5489</span>    try {<a name="line.5489"></a>
-<span class="sourceLineNo">5490</span>      KeyValue kv1 = new KeyValue(rowA, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5490"></a>
-<span class="sourceLineNo">5491</span>      KeyValue kv2 = new KeyValue(rowB, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5491"></a>
-<span class="sourceLineNo">5492</span>      KeyValue kv3 = new KeyValue(rowC, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5492"></a>
-<span class="sourceLineNo">5493</span>      KeyValue kv4_1 = new KeyValue(rowD, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5493"></a>
-<span class="sourceLineNo">5494</span>      KeyValue kv4_2 = new KeyValue(rowD, cf, col2, ts, KeyValue.Type.Put, null);<a name="line.5494"></a>
-<span class="sourceLineNo">5495</span>      KeyValue kv5 = new KeyValue(rowE, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5495"></a>
-<span class="sourceLineNo">5496</span>      Put put = null;<a name="line.5496"></a>
-<span class="sourceLineNo">5497</span>      put = new Put(rowA);<a name="line.5497"></a>
-<span class="sourceLineNo">5498</span>      put.add(kv1);<a name="line.5498"></a>
-<span class="sourceLineNo">5499</span>      region.put(put);<a name="line.5499"></a>
-<span class="sourceLineNo">5500</span>      put = new Put(rowB);<a name="line.5500"></a>
-<span class="sourceLineNo">5501</span>      put.add(kv2);<a name="line.5501"></a>
-<span class="sourceLineNo">5502</span>      region.put(put);<a name="line.5502"></a>
-<span class="sourceLineNo">5503</span>      put = new Put(rowC);<a name="line.5503"></a>
-<span class="sourceLineNo">5504</span>      put.add(kv3);<a name="line.5504"></a>
-<span class="sourceLineNo">5505</span>      region.put(put);<a name="line.5505"></a>
-<span class="sourceLineNo">5506</span>      put = new Put(rowD);<a name="line.5506"></a>
-<span class="sourceLineNo">5507</span>      put.add(kv4_1);<a name="line.5507"></a>
-<span class="sourceLineNo">5508</span>      region.put(put);<a name="line.5508"></a>
-<span class="sourceLineNo">5509</span>      put = new Put(rowD);<a name="line.5509"></a>
-<span class="sourceLineNo">5510</span>      put.add(kv4_2);<a name="line.5510"></a>
-<span class="sourceLineNo">5511</span>      region.put(put);<a name="line.5511"></a>
-<span class="sourceLineNo">5512</span>      put = new Put(rowE);<a name="line.5512"></a>
-<span class="sourceLineNo">5513</span>      put.add(kv5);<a name="line.5513"></a>
-<span class="sourceLineNo">5514</span>      region.put(put);<a name="line.5514"></a>
-<span class="sourceLineNo">5515</span>      region.flush(true);<a name="line.5515"></a>
-<span class="sourceLineNo">5516</span>      Scan scan = new Scan(rowD, rowA);<a name="line.5516"></a>
-<span class="sourceLineNo">5517</span>      scan.addColumn(families[0], col1);<a name="line.5517"></a>
-<span class="sourceLineNo">5518</span>      scan.setReversed(true);<a name="line.5518"></a>
-<span class="sourceLineNo">5519</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5519"></a>
-<span class="sourceLineNo">5520</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5520"></a>
-<span class="sourceLineNo">5521</span>      boolean hasNext = scanner.next(currRow);<a name="line.5521"></a>
-<span class="sourceLineNo">5522</span>      assertEquals(1, currRow.size());<a name="line.5522"></a>
-<span class="sourceLineNo">5523</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5523"></a>
-<span class="sourceLineNo">5524</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5524"></a>
-<span class="sourceLineNo">5525</span>      assertTrue(hasNext);<a name="line.5525"></a>
-<span class="sourceLineNo">5526</span>      currRow.clear();<a name="line.5526"></a>
-<span class="sourceLineNo">5527</span>      hasNext = scanner.next(currRow);<a name="line.5527"></a>
-<span class="sourceLineNo">5528</span>      assertEquals(1, currRow.size());<a name="line.5528"></a>
-<span class="sourceLineNo">5529</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5529"></a>
-<span class="sourceLineNo">5530</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5530"></a>
-<span class="sourceLineNo">5531</span>      assertTrue(hasNext);<a name="line.5531"></a>
-<span class="sourceLineNo">5532</span>      currRow.clear();<a name="line.5532"></a>
-<span class="sourceLineNo">5533</span>      hasNext = scanner.next(currRow);<a name="line.5533"></a>
-<span class="sourceLineNo">5534</span>      assertEquals(1, currRow.size());<a name="line.5534"></a>
-<span class="sourceLineNo">5535</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5535"></a>
-<span class="sourceLineNo">5536</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5536"></a>
-<span class="sourceLineNo">5537</span>      assertFalse(hasNext);<a name="line.5537"></a>
-<span class="sourceLineNo">5538</span>      scanner.close();<a name="line.5538"></a>
-<span class="sourceLineNo">5539</span><a name="line.5539"></a>
-<span class="sourceLineNo">5540</span>      scan = new Scan(rowD, rowA);<a name="line.5540"></a>
-<span class="sourceLineNo">5541</span>      scan.addColumn(families[0], col2);<a name="line.5541"></a>
-<span class="sourceLineNo">5542</span>      scan.setReversed(true);<a name="line.5542"></a>
-<span class="sourceLineNo">5543</span>      currRow.clear();<a name="line.5543"></a>
-<span class="sourceLineNo">5544</span>      scanner = region.getScanner(scan);<a name="line.5544"></a>
-<span class="sourceLineNo">5545</span>      hasNext = scanner.next(currRow);<a name="line.5545"></a>
-<span class="sourceLineNo">5546</span>      assertEquals(1, currRow.size());<a name="line.5546"></a>
-<span class="sourceLineNo">5547</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5547"></a>
-<span class="sourceLineNo">5548</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5548"></a>
-<span class="sourceLineNo">5549</span>      scanner.close();<a name="line.5549"></a>
-<span class="sourceLineNo">5550</span>    } finally {<a name="line.5550"></a>
-<span class="sourceLineNo">5551</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5551"></a>
-<span class="sourceLineNo">5552</span>      this.region = null;<a name="line.5552"></a>
-<span class="sourceLineNo">5553</span>    }<a name="line.5553"></a>
-<span class="sourceLineNo">5554</span>  }<a name="line.5554"></a>
-<span class="sourceLineNo">5555</span><a name="line.5555"></a>
-<span class="sourceLineNo">5556</span>  @Test (timeout=60000)<a name="line.5556"></a>
-<span class="sourceLineNo">5557</span>  public void testReverseScanner_FromMemStoreAndHFiles_MultiCFs1()<a name="line.5557"></a>
-<span class="sourceLineNo">5558</span>      throws IOException {<a name="line.5558"></a>
-<span class="sourceLineNo">5559</span>    byte[] row0 = Bytes.toBytes("row0"); // 1 kv<a name="line.5559"></a>
-<span class="sourceLineNo">5560</span>    byte[] row1 = Bytes.toBytes("row1"); // 2 kv<a name="line.5560"></a>
-<span class="sourceLineNo">5561</span>    byte[] row2 = Bytes.toBytes("row2"); // 4 kv<a name="line.5561"></a>
-<span class="sourceLineNo">5562</span>    byte[] row3 = Bytes.toBytes("row3"); // 2 kv<a name="line.5562"></a>
-<span class="sourceLineNo">5563</span>    byte[] row4 = Bytes.toBytes("row4"); // 5 kv<a name="line.5563"></a>
-<span class="sourceLineNo">5564</span>    byte[] row5 = Bytes.toBytes("row5"); // 2 kv<a name="line.5564"></a>
-<span class="sourceLineNo">5565</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5565"></a>
-<span class="sourceLineNo">5566</span>    byte[] cf2 = Bytes.toBytes("CF2");<a name="line.5566"></a>
-<span class="sourceLineNo">5567</span>    byte[] cf3 = Bytes.toBytes("CF3");<a name="line.5567"></a>
-<span class="sourceLineNo">5568</span>    byte[][] families = { cf1, cf2, cf3 };<a name="line.5568"></a>
-<span class="sourceLineNo">5569</span>    byte[] col = Bytes.toBytes("C");<a name="line.5569"></a>
-<span class="sourceLineNo">5570</span>    long ts = 1;<a name="line.5570"></a>
-<span class="sourceLineNo">5571</span>    String method = this.getName();<a name="line.5571"></a>
-<span class="sourceLineNo">5572</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5572"></a>
-<span class="sourceLineNo">5573</span>    // disable compactions in this test.<a name="line.5573"></a>
-<span class="sourceLineNo">5574</span>    conf.setInt("hbase.hstore.compactionThreshold", 10000);<a name="line.5574"></a>
-<span class="sourceLineNo">5575</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5575"></a>
-<span class="sourceLineNo">5576</span>    try {<a name="line.5576"></a>
-<span class="sourceLineNo">5577</span>      // kv naming style: kv(row number) totalKvCountInThisRow seq no<a name="line.5577"></a>
-<span class="sourceLineNo">5578</span>      KeyValue kv0_1_1 = new KeyValue(row0, cf1, col, ts, KeyValue.Type.Put,<a name="line.5578"></a>
-<span class="sourceLineNo">5579</span>          null);<a name="line.5579"></a>
-<span class="sourceLineNo">5580</span>      KeyValue kv1_2_1 = new KeyValue(row1, cf2, col, ts, KeyValue.Type.Put,<a name="line.5580"></a>
-<span class="sourceLineNo">5581</span>          null);<a name="line.5581"></a>
-<span class="sourceLineNo">5582</span>      KeyValue kv1_2_2 = new KeyValue(row1, cf1, col, ts + 1,<a name="line.5582"></a>
-<span class="sourceLineNo">5583</span>          KeyValue.Type.Put, null);<a name="line.5583"></a>
-<span class="sourceLineNo">5584</span>      KeyValue kv2_4_1 = new KeyValue(row2, cf2, col, ts, KeyValue.Type.Put,<a name="line.5584"></a>
-<span class="sourceLineNo">5585</span>          null);<a name="line.5585"></a>
-<span class="sourceLineNo">5586</span>      KeyValue kv2_4_2 = new KeyValue(row2, cf1, col, ts, KeyValue.Type.Put,<a name="line.5586"></a>
-<span class="sourceLineNo">5587</span>          null);<a name="line.5587"></a>
-<span class="sourceLineNo">5588</span>      KeyValue kv2_4_3 = new KeyValue(row2, cf3, col, ts, KeyValue.Type.Put,<a name="line.5588"></a>
-<span class="sourceLineNo">5589</span>          null);<a name="line.5589"></a>
-<span class="sourceLineNo">5590</span>      KeyValue kv2_4_4 = new KeyValue(row2, cf1, col, ts + 4,<a name="line.5590"></a>
-<span class="sourceLineNo">5591</span>          KeyValue.Type.Put, null);<a name="line.5591"></a>
-<span class="sourceLineNo">5592</span>      KeyValue kv3_2_1 = new KeyValue(row3, cf2, col, ts, KeyValue.Type.Put,<a name="line.5592"></a>
-<span class="sourceLineNo">5593</span>          null);<a name="line.5593"></a>
-<span class="sourceLineNo">5594</span>      KeyValue kv3_2_2 = new KeyValue(row3, cf1, col, ts + 4,<a name="line.5594"></a>
-<span class="sourceLineNo">5595</span>          KeyValue.Type.Put, null);<a name="line.5595"></a>
-<span class="sourceLineNo">5596</span>      KeyValue kv4_5_1 = new KeyValue(row4, cf1, col, ts, KeyValue.Type.Put,<a name="line.5596"></a>
-<span class="sourceLineNo">5597</span>          null);<a name="line.5597"></a>
-<span class="sourceLineNo">5598</span>      KeyValue kv4_5_2 = new KeyValue(row4, cf3, col, ts, KeyValue.Type.Put,<a name="line.5598"></a>
-<span class="sourceLineNo">5599</span>          null);<a name="line.5599"></a>
-<span class="sourceLineNo">5600</span>      KeyValue kv4_5_3 = new KeyValue(row4, cf3, col, ts + 5,<a name="line.5600"></a>
-<span class="sourceLineNo">5601</span>          KeyValue.Type.Put, null);<a name="line.5601"></a>
-<span class="sourceLineNo">5602</span>      KeyValue kv4_5_4 = new KeyValue(row4, cf2, col, ts, KeyValue.Type.Put,<a name="line.5602"></a>
-<span class="sourceLineNo">5603</span>          null);<a name="line.5603"></a>
-<span class="sourceLineNo">5604</span>      KeyValue kv4_5_5 = new KeyValue(row4, cf1, col, ts + 3,<a name="line.5604"></a>
-<span class="sourceLineNo">5605</span>          KeyValue.Type.Put, null);<a name="line.5605"></a>
-<span class="sourceLineNo">5606</span>      KeyValue kv5_2_1 = new KeyValue(row5, cf2, col, ts, KeyValue.Type.Put,<a name="line.5606"></a>
-<span class="sourceLineNo">5607</span>          null);<a name="line.5607"></a>
-<span class="sourceLineNo">5608</span>      KeyValue kv5_2_2 = new KeyValue(row5, cf3, col, ts, KeyValue.Type.Put,<a name="line.5608"></a>
-<span class="sourceLineNo">5609</span>          null);<a name="line.5609"></a>
-<span class="sourceLineNo">5610</span>      // hfiles(cf1/cf2) :"row1"(1 kv) / "row2"(1 kv) / "row4"(2 kv)<a name="line.5610"></a>
-<span class="sourceLineNo">5611</span>      Put put = null;<a name="line.5611"></a>
-<span class="sourceLineNo">5612</span>      put = new Put(row1);<a name="line.5612"></a>
-<span class="sourceLineNo">5613</span>      put.add(kv1_2_1);<a name="line.5613"></a>
-<span class="sourceLineNo">5614</span>      region.put(put);<a name="line.5614"></a>
-<span class="sourceLineNo">5615</span>      put = new Put(row2);<a name="line.5615"></a>
-<span class="sourceLineNo">5616</span>      put.add(kv2_4_1);<a name="line.5616"></a>
-<span class="sourceLineNo">5617</span>      region.put(put);<a name="line.5617"></a>
-<span class="sourceLineNo">5618</span>      put = new Put(row4);<a name="line.5618"></a>
-<span class="sourceLineNo">5619</span>      put.add(kv4_5_4);<a name="line.5619"></a>
-<span class="sourceLineNo">5620</span>      put.add(kv4_5_5);<a name="line.5620"></a>
-<span class="sourceLineNo">5621</span>      region.put(put);<a name="line.5621"></a>
-<span class="sourceLineNo">5622</span>      region.flush(true);<a name="line.5622"></a>
-<span class="sourceLineNo">5623</span>      // hfiles(cf1/cf3) : "row1" (1 kvs) / "row2" (1 kv) / "row4" (2 kv)<a name="line.5623"></a>
-<span class="sourceLineNo">5624</span>      put = new Put(row4);<a name="line.5624"></a>
-<span class="sourceLineNo">5625</span>      put.add(kv4_5_1);<a name="line.5625"></a>
-<span class="sourceLineNo">5626</span>      put.add(kv4_5_3);<a name="line.5626"></a>
-<span class="sourceLineNo">5627</span>      region.put(put);<a name="line.5627"></a>
-<span class="sourceLineNo">5628</span>      put = new Put(row1);<a name="line.5628"></a>
-<span class="sourceLineNo">5629</span>      put.add(kv1_2_2);<a name="line.5629"></a>
-<span class="sourceLineNo">5630</span>      region.put(put);<a name="line.5630"></a>
-<span class="sourceLineNo">5631</span>      put = new Put(row2);<a name="line.5631"></a>
-<span class="sourceLineNo">5632</span>      put.add(kv2_4_4);<a name="line.5632"></a>
-<span class="sourceLineNo">5633</span>      region.put(put);<a name="line.5633"></a>
-<span class="sourceLineNo">5634</span>      region.flush(true);<a name="line.5634"></a>
-<span class="sourceLineNo">5635</span>      // hfiles(cf1/cf3) : "row2"(2 kv) / "row3"(1 kvs) / "row4" (1 kv)<a name="line.5635"></a>
-<span class="sourceLineNo">5636</span>      put = new Put(row4);<a name="line.5636"></a>
-<span class="sourceLineNo">5637</span>      put.add(kv4_5_2);<a name="line.5637"></a>
-<span class="sourceLineNo">5638</span>      region.put(put);<a name="line.5638"></a>
-<span class="sourceLineNo">5639</span>      put = new Put(row2);<a name="line.5639"></a>
-<span class="sourceLineNo">5640</span>      put.add(kv2_4_2);<a name="line.5640"></a>
-<span class="sourceLineNo">5641</span>      put.add(kv2_4_3);<a name="line.5641"></a>
-<span class="sourceLineNo">5642</span>      region.put(put);<a name="line.5642"></a>
-<span class="sourceLineNo">5643</span>      put = new Put(row3);<a name="line.5643"></a>
-<span class="sourceLineNo">5644</span>      put.add(kv3_2_2);<a name="line.5644"></a>
-<span class="sourceLineNo">5645</span>      region.put(put);<a name="line.5645"></a>
-<span class="sourceLineNo">5646</span>      region.flush(true);<a name="line.5646"></a>
-<span class="sourceLineNo">5647</span>      // memstore(cf1/cf2/cf3) : "row0" (1 kvs) / "row3" ( 1 kv) / "row5" (max)<a name="line.5647"></a>
-<span class="sourceLineNo">5648</span>      // ( 2 kv)<a name="line.5648"></a>
-<span class="sourceLineNo">5649</span>      put = new Put(row0);<a name="line.5649"></a>
-<span class="sourceLineNo">5650</span>      put.add(kv0_1_1);<a name="line.5650"></a>
-<span class="sourceLineNo">5651</span>      region.put(put);<a name="line.5651"></a>
-<span class="sourceLineNo">5652</span>      put = new Put(row3);<a name="line.5652"></a>
-<span class="sourceLineNo">5653</span>      put.add(kv3_2_1);<a name="line.5653"></a>
-<span class="sourceLineNo">5654</span>      region.put(put);<a name="line.5654"></a>
-<span class="sourceLineNo">5655</span>      put = new Put(row5);<a name="line.5655"></a>
-<span class="sourceLineNo">5656</span>      put.add(kv5_2_1);<a name="line.5656"></a>
-<span class="sourceLineNo">5657</span>      put.add(kv5_2_2);<a name="line.5657"></a>
-<span class="sourceLineNo">5658</span>      region.put(put);<a name="line.5658"></a>
-<span class="sourceLineNo">5659</span>      // scan range = ["row4", min), skip the max "row5"<a name="line.5659"></a>
-<span class="sourceLineNo">5660</span>      Scan scan = new Scan(row4);<a name="line.5660"></a>
-<span class="sourceLineNo">5661</span>      scan.setMaxVersions(5);<a name="line.5661"></a>
-<span class="sourceLineNo">5662</span>      scan.setBatch(3);<a name="line.5662"></a>
-<span class="sourceLineNo">5663</span>      scan.setReversed(true);<a name="line.5663"></a>
-<span class="sourceLineNo">5664</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5664"></a>
-<span class="sourceLineNo">5665</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5665"></a>
-<span class="sourceLineNo">5666</span>      boolean hasNext = false;<a name="line.5666"></a>
-<span class="sourceLineNo">5667</span>      // 1. scan out "row4" (5 kvs), "row5" can't be scanned out since not<a name="line.5667"></a>
-<span class="sourceLineNo">5668</span>      // included in scan range<a name="line.5668"></a>
-<span class="sourceLineNo">5669</span>      // "row4" takes 2 next() calls since batch=3<a name="line.5669"></a>
-<span class="sourceLineNo">5670</span>      hasNext = scanner.next(currRow);<a name="line.5670"></a>
-<span class="sourceLineNo">5671</span>      assertEquals(3, currRow.size());<a name="line.5671"></a>
-<span class="sourceLineNo">5672</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5672"></a>
-<span class="sourceLineNo">5673</span>          .get(0).getRowLength(), row4, 0, row4.length));<a name="line.5673"></a>
-<span class="sourceLineNo">5674</span>      assertTrue(hasNext);<a name="line.5674"></a>
-<span class="sourceLineNo">5675</span>      currRow.clear();<a name="line.5675"></a>
-<span class="sourceLineNo">5676</span>      hasNext = scanner.next(currRow);<a name="line.5676"></a>
-<span class="sourceLineNo">5677</span>      assertEquals(2, currRow.size());<a name="line.5677"></a>
-<span class="sourceLineNo">5678</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow.get(0).getRowLength(), row4, 0,<a name="line.5678"></a>
-<span class="sourceLineNo">5679</span>        row4.length));<a name="line.5679"></a>
-<span class="sourceLineNo">5680</span>      assertTrue(hasNext);<a name="line.5680"></a>
-<span class="sourceLineNo">5681</span>      // 2. scan out "row3" (2 kv)<a name="line.5681"></a>
-<span class="sourceLineNo">5682</span>      currRow.clear();<a name="line.5682"></a>
-<span class="sourceLineNo">5683</span>      hasNext = scanner.next(currRow);<a name="line.5683"></a>
-<span class="sourceLineNo">5684</span>      assertEquals(2, currRow.size());<a name="line.5684"></a>
-<span class="sourceLineNo">5685</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5685"></a>
-<span class="sourceLineNo">5686</span>          .get(0).getRowLength(), row3, 0, row3.length));<a name="line.5686"></a>
-<span class="sourceLineNo">5687</span>      assertTrue(hasNext);<a name="line.5687"></a>
-<span class="sourceLineNo">5688</span>      // 3. scan out "row2" (4 kvs)<a name="line.5688"></a>
-<span class="sourceLineNo">5689</span>      // "row2" takes 2 next() calls since batch=3<a name="line.5689"></a>
-<span class="sourceLineNo">5690</span>      currRow.clear();<a name="line.5690"></a>
-<span class="sourceLineNo">5691</span>      hasNext = scanner.next(currRow);<a name="line.5691"></a>
-<span class="sourceLineNo">5692</span>      assertEquals(3, currRow.size());<a name="line.5692"></a>
-<span class="sourceLineNo">5693</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5693"></a>
-<span class="sourceLineNo">5694</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5694"></a>
-<span class="sourceLineNo">5695</span>      assertTrue(hasNext);<a name="line.5695"></a>
-<span class="sourceLineNo">5696</span>      currRow.clear();<a name="line.5696"></a>
-<span class="sourceLineNo">5697</span>      hasNext = scanner.next(currRow);<a name="line.5697"></a>
-<span class="sourceLineNo">5698</span>      assertEquals(1, currRow.size());<a name="line.5698"></a>
-<span class="sourceLineNo">5699</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5699"></a>
-<span class="sourceLineNo">5700</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5700"></a>
-<span class="sourceLineNo">5701</span>      assertTrue(hasNext);<a name="line.5701"></a>
-<span class="sourceLineNo">5702</span>      // 4. scan out "row1" (2 kv)<a name="line.5702"></a>
-<span class="sourceLineNo">5703</span>      currRow.clear();<a name="line.5703"></a>
-<span class="sourceLineNo">5704</span>      hasNext = scanner.next(currRow);<a name="line.5704"></a>
-<span class="sourceLineNo">5705</span>      assertEquals(2, currRow.size());<a name="line.5705"></a>
-<span class="sourceLineNo">5706</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5706"></a>
-<span class="sourceLineNo">5707</span>          .get(0).getRowLength(), row1, 0, row1.length));<a name="line.5707"></a>
-<span class="sourceLineNo">5708</span>      assertTrue(hasNext);<a name="line.5708"></a>
-<span class="sourceLineNo">5709</span>      // 5. scan out "row0" (1 kv)<a name="line.5709"></a>
-<span class="sourceLineNo">5710</span>      currRow.clear();<a name="line.5710"></a>
-<span class="sourceLineNo">5711</span>      hasNext = scanner.next(currRow);<a name="line.5711"></a>
-<span class="sourceLineNo">5712</span>      assertEquals(1, currRow.size());<a name="line.5712"></a>
-<span class="sourceLineNo">5713</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5713"></a>
-<span class="sourceLineNo">5714</span>          .get(0).getRowLength(), row0, 0, row0.length));<a name="line.5714"></a>
-<span class="sourceLineNo">5715</span>      assertFalse(hasNext);<a name="line.5715"></a>
-<span class="sourceLineNo">5716</span><a name="line.5716"></a>
-<span class="sourceLineNo">5717</span>      scanner.close();<a name="line.5717"></a>
-<span class="sourceLineNo">5718</span>    } finally {<a name="line.5718"></a>
-<span class="sourceLineNo">5719</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5719"></a>
-<span class="sourceLineNo">5720</span>      this.region = null;<a name="line.5720"></a>
-<span class="sourceLineNo">5721</span>    }<a name="line.5721"></a>
-<span class="sourceLineNo">5722</span>  }<a name="line.5722"></a>
-<span class="sourceLineNo">5723</span><a name="line.5723"></a>
-<span class="sourceLineNo">5724</span>  @Test (timeout=60000)<a name="line.5724"></a>
-<span class="sourceLineNo">5725</span>  public void testReverseScanner_FromMemStoreAndHFiles_MultiCFs2()<a name="line.5725"></a>
-<span class="sourceLineNo">5726</span>      throws IOException {<a name="line.5726"></a>
-<span class="sourceLineNo">5727</span>    byte[] row1 = Bytes.toBytes("row1");<a name="line.5727"></a>
-<span class="sourceLineNo">5728</span>    byte[] row2 = Bytes.toBytes("row2");<a name="line.5728"></a>
-<span class="sourceLineNo">5729</span>    byte[] row3 = Bytes.toBytes("row3");<a name="line.5729"></a>
-<span class="sourceLineNo">5730</span>    byte[] row4 = Bytes.toBytes("row4");<a name="line.5730"></a>
-<span class="sourceLineNo">5731</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5731"></a>
-<span class="sourceLineNo">5732</span>    byte[] cf2 = Bytes.toBytes("CF2");<a name="line.5732"></a>
-<span class="sourceLineNo">5733</span>    byte[] cf3 = Bytes.toBytes("CF3");<a name="line.5733"></a>
-<span class="sourceLineNo">5734</span>    byte[] cf4 = Bytes.toBytes("CF4");<a name="line.5734"></a>
-<span class="sourceLineNo">5735</span>    byte[][] families = { cf1, cf2, cf3, cf4 };<a name="line.5735"></a>
-<span class="sourceLineNo">5736</span>    byte[] col = Bytes.toBytes("C");<a name="line.5736"></a>
-<span class="sourceLineNo">5737</span>    long ts = 1;<a name="line.5737"></a>
-<span class="sourceLineNo">5738</span>    String method = this.getName();<a name="line.5738"></a>
-<span class="sourceLineNo">5739</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5739"></a>
-<span class="sourceLineNo">5740</span>    // disable compactions in this test.<a name="line.5740"></a>
-<span class="sourceLineNo">5741</span>    conf.setInt("hbase.hstore.compactionThreshold", 10000);<a name="line.5741"></a>
-<span class="sourceLineNo">5742</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5742"></a>
-<span class="sourceLineNo">5743</span>    try {<a name="line.5743"></a>
-<span class="sourceLineNo">5744</span>      KeyValue kv1 = new KeyValue(row1, cf1, col, ts, KeyValue.Type.Put, null);<a name="line.5744"></a>
-<span class="sourceLineNo">5745</span>      KeyValue kv2 = new KeyValue(row2, cf2, col, ts, KeyValue.Type.Put, null);<a name="line.5745"></a>
-<span class="sourceLineNo">5746</span>      KeyValue kv3 = new KeyValue(row3, cf3, col, ts, KeyValue.Type.Put, null);<a name="line.5746"></a>
-<span class="sourceLineNo">5747</span>      KeyValue kv4 = new KeyValue(row4, cf4, col, ts, KeyValue.Type.Put, null);<a name="line.5747"></a>
-<span class="sourceLineNo">5748</span>      // storefile1<a name="line.5748"></a>
-<span class="sourceLineNo">5749</span>      Put put = new Put(row1);<a name="line.5749"></a>
-<span class="sourceLineNo">5750</span>      put.add(kv1);<a name="line.5750"></a>
-<span class="sourceLineNo">5751</span>      region.put(put);<a name="line.5751"></a>
-<span class="sourceLineNo">5752</span>      region.flush(true);<a name="line.5752"></a>
-<span class="sourceLineNo">5753</span>      // storefile2<a name="line.5753"></a>
-<span class="sourceLineNo">5754</span>      put = new Put(row2);<a name="line.5754"></a>
-<span class="sourceLineNo">5755</span>      put.add(kv2);<a name="line.5755"></a>
-<span class="sourceLineNo">5756</span>      region.put(put);<a name="line.5756"></a>
-<span class="sourceLineNo">5757</span>      region.flush(true);<a name="line.5757"></a>
-<span class="sourceLineNo">5758</span>      // storefile3<a name="line.5758"></a>
-<span class="sourceLineNo">5759</span>      put = new Put(row3);<a name="line.5759"></a>
-<span class="sourceLineNo">5760</span>      put.add(kv3);<a name="line.5760"></a>
-<span class="sourceLineNo">5761</span>      region.put(put);<a name="line.5761"></a>
-<span class="sourceLineNo">5762</span>      region.flush(true);<a name="line.5762"></a>
-<span class="sourceLineNo">5763</span>      // memstore<a name="line.5763"></a>
-<span class="sourceLineNo">5764</span>      put = new Put(row4);<a name="line.5764"></a>
-<span class="sourceLineNo">5765</span>      put.add(kv4);<a name="line.5765"></a>
-<span class="sourceLineNo">5766</span>      region.put(put);<a name="line.5766"></a>
-<span class="sourceLineNo">5767</span>      // scan range = ["row4", min)<a name="line.5767"></a>
-<span class="sourceLineNo">5768</span>      Scan scan = new Scan(row4);<a name="line.5768"></a>
-<span class="sourceLineNo">5769</span>      scan.setReversed(true);<a name="line.5769"></a>
-<span class="sourceLineNo">5770</span>      scan.setBatch(10);<a name="line.5770"></a>
-<span class="sourceLineNo">5771</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5771"></a>
-<span class="sourceLineNo">5772</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5772"></a>
-<span class="sourceLineNo">5773</span>      boolean hasNext = scanner.next(currRow);<a name="line.5773"></a>
-<span class="sourceLineNo">5774</span>      assertEquals(1, currRow.size());<a name="line.5774"></a>
-<span class="sourceLineNo">5775</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5775"></a>
-<span class="sourceLineNo">5776</span>          .get(0).getRowLength(), row4, 0, row4.length));<a name="line.5776"></a>
-<span class="sourceLineNo">5777</span>      assertTrue(hasNext);<a name="line.5777"></a>
-<span class="sourceLineNo">5778</span>      currRow.clear();<a name="line.5778"></a>
-<span class="sourceLineNo">5779</span>      hasNext = scanner.next(currRow);<a name="line.5779"></a>
-<span class="sourceLineNo">5780</span>      assertEquals(1, currRow.size());<a name="line.5780"></a>
-<span class="sourceLineNo">5781</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5781"></a>
-<span class="sourceLineNo">5782</span>          .get(0).getRowLength(), row3, 0, row3.length));<a name="line.5782"></a>
-<span class="sourceLineNo">5783</span>      assertTrue(hasNext);<a name="line.5783"></a>
-<span class="sourceLineNo">5784</span>      currRow.clear();<a name="line.5784"></a>
-<span class="sourceLineNo">5785</span>      hasNext = scanner.next(currRow);<a name="line.5785"></a>
-<span class="sourceLineNo">5786</span>      assertEquals(1, currRow.size());<a name="line.5786"></a>
-<span class="sourceLineNo">5787</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5787"></a>
-<span class="sourceLineNo">5788</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5788"></a>
-<span class="sourceLineNo">5789</span>      assertTrue(hasNext);<a name="line.5789"></a>
-<span class="sourceLineNo">5790</span>      currRow.clear();<a name="line.5790"></a>
-<span class="sourceLineNo">5791</span>      hasNext = scanner.next(currRow);<a name="line.5791"></a>
-<span class="sourceLineNo">5792</span>      assertEquals(1, currRow.size());<a name="line.5792"></a>
-<span class="sourceLineNo">5793</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5793"></a>
-<span class="sourceLineNo">5794</span>          .get(0).getRowLength(), row1, 0, row1.length));<a name="line.5794"></a>
-<span class="sourceLineNo">5795</span>      assertFalse(hasNext);<a name="line.5795"></a>
-<span class="sourceLineNo">5796</span>    } finally {<a name="line.5796"></a>
-<span class="sourceLineNo">5797</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5797"></a>
-<span class="sourceLineNo">5798</span>      this.region = null;<a name="line.5798"></a>
-<span class="sourceLineNo">5799</span>    }<a name="line.5799"></a>
-<span class="sourceLineNo">5800</span>  }<a name="line.5800"></a>
-<span class="sourceLineNo">5801</span><a name="line.5801"></a>
-<span class="sourceLineNo">5802</span>  /**<a name="line.5802"></a>
-<span class="sourceLineNo">5803</span>   * Test for HBASE-14497: Reverse Scan threw StackOverflow caused by readPt checking<a name="line.5803"></a>
-<span class="sourceLineNo">5804</span>   */<a name="line.5804"></a>
-<span class="sourceLineNo">5805</span>  @Test (timeout = 60000)<a name="line.5805"></a>
-<span class="sourceLineNo">5806</span>  public void testReverseScanner_StackOverflow() throws IOException {<a name="line.5806"></a>
-<span class="sourceLineNo">5807</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5807"></a>
-<span class="sourceLineNo">5808</span>    byte[][] families = {cf1};<a name="line.5808"></a>
-<span class="sourceLineNo">5809</span>    byte[] col = Bytes.toBytes("C");<a name="line.5809"></a>
-<span class="sourceLineNo">5810</span>    String method = this.getName();<a name="line.5810"></a>
-<span class="sourceLineNo">5811</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5811"></a>
-<span class="sourceLineNo">5812</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5812"></a>
-<span class="sourceLineNo">5813</span>    try {<a name="line.5813"></a>
-<span class="sourceLineNo">5814</span>      // setup with one storefile and one memstore, to create scanner and get an earlier readPt<a name="line.5814"></a>
-<span class="sourceLineNo">5815</span>      Put put = new Put(Bytes.toBytes("19998"));<a name="line.5815"></a>
-<span class="sourceLineNo">5816</span>      put.addColumn(cf1, col, Bytes.toBytes("val"));<a name="line.5816"></a>
-<span class="sourceLineNo">5817</span>      region.put(put);<a name="line.5817"></a>
-<span class="sourceLineNo">5818</span>      region.flushcache(true, true);<a name="line.5818"></a>
-<span class="sourceLineNo">5819</span>      Put put2 = new Put(Bytes.toBytes("19997"));<a name="line.5819"></a>
-<span class="sourceLineNo">5820</span>      put2.addColumn(cf1, col, Bytes.toBytes("val"));<a name="line.5820"></a>
-<span class="sourceLineNo">5821</span>      region.put(put2);<a name="line.5821"></a>
-<span class="sourceLineNo">5822</span><a name="line.5822"></a>
-<span class="sourceLineNo">5823</span>      Scan scan = new Scan(Bytes.toBytes("19998"));<a name="line.5823"></a>
-<span class="sourceLineNo">5824</span>      scan.setReversed(true);<a name="line.5824"></a>
-<span class="sourceLineNo">5825</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5825"></a>
-<span class="sourceLineNo">5826</span><a name="line.5826"></a>
-<span class="sourceLineNo">5827</span>      // create one storefile contains many rows will be skipped<a name="line.5827"></a>
-<span class="sourceLineNo">5828</span>      // to check StoreFileScanner.seekToPreviousRow<a name="line.5828"></a>
-<span class="sourceLineNo">5829</span>      for (int i = 10000; i &lt; 20000; i++) {<a name="line.5829"></a>
-<span class="sourceLineNo">5830</span>        Put p = new Put(Bytes.toBytes(""+i));<a name="line.5830"></a>
-<span class="sourceLineNo">5831</span>        p.addColumn(cf1, col, Bytes.toBytes("" + i));<a name="line.5831"></a>
-<span class="sourceLineNo">5832</span>        region.put(p);<a name="line.5832"></a>
-<span class="sourceLineNo">5833</span>      }<a name="line.5833"></a>
-<span class="sourceLineNo">5834</span>      region.flushcache(true, true);<a name="line.5834"></a>
-<span class="sourceLineNo">5835</span><a name="line.5835"></a>
-<span class="sourceLineNo">5836</span>      // create one memstore contains many rows will be skipped<a name="line.5836"></a>
-<span class="sourceLineNo">5837</span>      // to check MemStoreScanner.seekToPreviousRow<a name="line.5837"></a>
-<span class="sourceLineNo">5838</span>      for (int i = 10000; i &lt; 20000; i++) {<a name="line.5838"></a>
-<span class="sourceLineNo">5839</span>        Put p = new Put(Bytes.toBytes(""+i));<a name="line.5839"></a>
-<span class="sourceLineNo">5840</span>        p.addColumn(cf1, col, Bytes.toBytes("" + i));<a name="line.5840"></a>
-<span class="sourceLineNo">5841</span>        region.put(p);<a name="line.5841"></a>
-<span class="sourceLineNo">5842</span>      }<a name="line.5842"></a>
-<span class="sourceLineNo">5843</span><a name="line.5843"></a>
-<span class="sourceLineNo">5844</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;&gt;();<a name="line.5844"></a>
-<span class="sourceLineNo">5845</span>      boolean hasNext;<a name="line.5845"></a>
-<span class="sourceLineNo">5846</span>      do {<a name="line.5846"></a>
-<span class="sourceLineNo">5847</span>        hasNext = scanner.next(currRow);<a name="line.5847"></a>
-<span class="sourceLineNo">5848</span>      } while (hasNext);<a name="line.5848"></a>
-<span class="sourceLineNo">5849</span>      assertEquals(2, currRow.size());<a name="line.5849"></a>
-<span class="sourceLineNo">5850</span>      assertEquals("19998", Bytes.toString(currRow.get(0).getRowArray(),<a name="line.5850"></a>
-<span class="sourceLineNo">5851</span>        currRow.get(0).getRowOffset(), currRow.get(0).getRowLength()));<a name="line.5851"></a>
-<span class="sourceLineNo">5852</span>      assertEquals("19997", Bytes.toString(currRow.get(1).getRowArray(),<a name="line.5852"></a>
-<span class="sourceLineNo">5853</span>        currRow.get(1).getRowOffset(), currRow.get(1).getRowLength()));<a name="line.5853"></a>
-<span class="sourceLineNo">5854</span>    } finally {<a name="line.5854"></a>
-<span class="sourceLineNo">5855</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5855"></a>
-<span class="sourceLineNo">5856</span>      this.region = null;<a name="line.5856"></a>
-<span class="sourceLineNo">5857</span>    }<a name="line.5857"></a>
-<span class="sourceLineNo">5858</span>  }<a name="line.5858"></a>
-<span class="sourceLineNo">5859</span><a name="line.5859"></a>
-<span class="sourceLineNo">5860</span>  @Test (timeout=60000)<a name="line.5860"></a>
-<span class="sourceLineNo">5861</span>  public void testSplitRegionWithReverseScan() throws IOException {<a name="line.5861"></a>
-<span class="sourceLineNo">5862</span>    TableName tableName = TableName.valueOf("testSplitRegionWithReverseScan");<a name="line.5862"></a>
-<span class="sourceLineNo">5863</span>    byte [] qualifier = Bytes.toBytes("qualifier");<a name="line.5863"></a>
-<span class="sourceLineNo">5864</span>    Configuration hc = initSplit();<a name="line.5864"></a>
-<span class="sourceLineNo">5865</span>    int numRows = 3;<a name="line.5865"></a>
-<span class="sourceLineNo">5866</span>    byte [][] families = {fam1};<a name="line.5866"></a>
-<span class="sourceLineNo">5867</span><a name="line.5867"></a>
-<span class="sourceLineNo">5868</span>    //Setting up region<a name="line.5868"></a>
-<span class="sourceLineNo">5869</span>    String method = this.getName();<a name="line.5869"></a>
-<span class="sourceLineNo">5870</span>    this.region = initHRegion(tableName, method, hc, families);<a name="line.5870"></a>
-<span class="sourceLineNo">5871</span><a name="line.5871"></a>
-<span class="sourceLineNo">5872</span>    //Put data in region<a name="line.5872"></a>
-<span class="sourceLineNo">5873</span>    int startRow = 100;<a name="line.5873"></a>
-<span class="sourceLineNo">5874</span>    putData(startRow, numRows, qualifier, families);<a name="line.5874"></a>
-<span class="sourceLineNo">5875</span>    int splitRow = startRow + numRows;<a name="line.5875"></a>
-<span class="sourceLineNo">5876</span>    putData(splitRow, numRows, qualifier, families);<a name="line.5876"></a>
-<span class="sourceLineNo">5877</span>    region.flush(true);<a name="line.5877"></a>
-<span class="sourceLineNo">5878</span><a name="line.5878"></a>
-<span class="sourceLineNo">5879</span>    HRegion [] regions = null;<a name="line.5879"></a>
-<span class="sourceLineNo">5880</span>    try {<a name="line.5880"></a>
-<span class="sourceLineNo">5881</span>      regions = splitRegion(region, Bytes.toBytes("" + splitRow));<a name="line.5881"></a>
-<span class="sourceLineNo">5882</span>      //Opening the regions returned.<a name="line.5882"></a>
-<span class="sourceLineNo">5883</span>      for (int i = 0; i &lt; regions.length; i++) {<a name="line.5883"></a>
-<span class="sourceLineNo">5884</span>        regions[i] = HRegion.openHRegion(regions[i], null);<a name="line.5884"></a>
-<span class="sourceLineNo">5885</span>      }<a name="line.5885"></a>
-<spa

<TRUNCATED>

[07/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html
index 9cddc0a..1240e3e 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html
@@ -27,8 +27,8 @@
 <span class="sourceLineNo">019</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam1;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam2;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertTrue;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertNull;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import static org.junit.Assert.fail;<a name="line.24"></a>
 <span class="sourceLineNo">025</span><a name="line.25"></a>
 <span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
@@ -61,19 +61,19 @@
 <span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.Get;<a name="line.54"></a>
 <span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Put;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Result;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.68"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Put;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.Result;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
 <span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>import org.junit.After;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import org.junit.Before;<a name="line.71"></a>
@@ -191,535 +191,539 @@
 <span class="sourceLineNo">183</span>   */<a name="line.183"></a>
 <span class="sourceLineNo">184</span>  @Test<a name="line.184"></a>
 <span class="sourceLineNo">185</span>  public void testIncrementMultiThreads() throws IOException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // run a with mixed column families (1 and 3 versions)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // create 25 threads, each will increment by its own quantity<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    int numThreads = 25;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    int incrementsPerThread = 1000;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    int expectedTotal = 0;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // create all threads<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      expectedTotal += (i * incrementsPerThread);<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>    // run all threads<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        all[i].join();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      } catch (InterruptedException e) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    assertICV(row, fam1, qual2, expectedTotal*2);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    assertICV(row, fam2, qual3, expectedTotal*3);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private void assertICV(byte [] row,<a name="line.221"></a>
-<span class="sourceLineNo">222</span>                         byte [] familiy,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>                         byte[] qualifier,<a name="line.223"></a>
-<span class="sourceLineNo">224</span>                         long amount) throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // run a get and see?<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    Get get = new Get(row);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    get.addColumn(familiy, qualifier);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    Result result = region.get(get);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    assertEquals(1, result.size());<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Cell kv = result.rawCells()[0];<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    assertEquals(amount, r);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      byte[] ... families)<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    byte[] ... families)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  throws IOException {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    int i=0;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    for(byte [] family : families) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      htd.addFamily(hcd);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * A thread that makes a few increment calls<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static class Incrementer extends Thread {<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final Region region;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final int numIncrements;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final int amount;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">186</span>    boolean fast = true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // run a with mixed column families (1 and 3 versions)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // Create 100 threads, each will increment by its own quantity. All 100 threads update the<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // same row over two column families.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    int numThreads = 100;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    int incrementsPerThread = 1000;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    int expectedTotal = 0;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // create all threads<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      expectedTotal += (i * incrementsPerThread);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    // run all threads<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      try {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        all[i].join();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      } catch (InterruptedException e) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal, fast);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    assertICV(row, fam1, qual2, expectedTotal*2, fast);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    assertICV(row, fam2, qual3, expectedTotal*3, fast);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private void assertICV(byte [] row,<a name="line.223"></a>
+<span class="sourceLineNo">224</span>                         byte [] familiy,<a name="line.224"></a>
+<span class="sourceLineNo">225</span>                         byte[] qualifier,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>                         long amount,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>                         boolean fast) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    // run a get and see?<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    Get get = new Get(row);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    if (fast) get.setIsolationLevel(IsolationLevel.READ_UNCOMMITTED);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    get.addColumn(familiy, qualifier);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Result result = region.get(get);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    assertEquals(1, result.size());<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    Cell kv = result.rawCells()[0];<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    assertEquals(amount, r);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      byte[] ... families)<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    throws IOException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    byte[] ... families)<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    int i=0;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    for(byte [] family : families) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      htd.addFamily(hcd);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<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 thread that makes increment calls always on the same row, this.row against two column<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * families on this row.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public static class Incrementer extends Thread {<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public Incrementer(Region region,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        int threadNumber, int amount, int numIncrements) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      super("incrementer." + threadNumber);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.region = region;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      this.numIncrements = numIncrements;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.amount = amount;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      setDaemon(true);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    public void run() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        try {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          Increment inc = new Increment(row);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          inc.addColumn(fam1, qual1, amount);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>          // verify: Make sure we only see completed increments<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          Get g = new Get(row);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          Result result = region.get(g);<a name="line.288"></a>
+<span class="sourceLineNo">266</span>    private final Region region;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    private final int numIncrements;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final int amount;<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>    public Incrementer(Region region, int threadNumber, int amount, int numIncrements) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      super("Incrementer." + threadNumber);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      this.region = region;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this.numIncrements = numIncrements;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this.amount = amount;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      setDaemon(true);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public void run() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        try {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          Increment inc = new Increment(row);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          inc.addColumn(fam1, qual1, amount);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          Result result = region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.288"></a>
 <span class="sourceLineNo">289</span>          if (result != null) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            assertTrue(result.getValue(fam1, qual1) != null);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            assertTrue(result.getValue(fam1, qual2) != null);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.293"></a>
-<span class="sourceLineNo">294</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } catch (IOException e) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          e.printStackTrace();<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>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  @Test<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  public void testAppendMultiThreads() throws IOException {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    // run a with mixed column families (1 and 3 versions)<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    int numThreads = 100;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int opsPerThread = 100;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    final byte[] val = new byte[]{1};<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    // create all threads<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        public void run() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            try {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>              Append a = new Append(row);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>              a.add(fam1, qual1, val);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              a.add(fam1, qual2, val);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>              a.add(fam2, qual3, val);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>              Get g = new Get(row);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              Result result = region.get(g);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.333"></a>
-<span class="sourceLineNo">334</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.334"></a>
-<span class="sourceLineNo">335</span>            } catch (IOException e) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>              e.printStackTrace();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              failures.incrementAndGet();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>              fail();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>            }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      };<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // run all threads<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      try {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        all[i].join();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Get g = new Get(row);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    Result result = region.get(g);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // create 10 threads, each will alternate between adding and<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // removing a column<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    int numThreads = 10;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    int opsPerThread = 250;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    // create all threads<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        @Override<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        public void run() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>          boolean op = true;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            try {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>              // throw in some flushes<a name="line.388"></a>
-<span class="sourceLineNo">389</span>              if (i%10==0) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>                synchronized(region) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>                  LOG.debug("flushing");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>                  region.flush(true);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>                  if (i%100==0) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>                    region.compact(false);<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>              }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>              long ts = timeStamps.incrementAndGet();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>              RowMutations rm = new RowMutations(row);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>              if (op) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>                Put p = new Put(row, ts);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>                p.addColumn(fam1, qual1, value1);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>                rm.add(p);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>                Delete d = new Delete(row);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>                d.addColumns(fam1, qual2, ts);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>                rm.add(d);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              } else {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                Delete d = new Delete(row);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                d.addColumns(fam1, qual1, ts);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>                rm.add(d);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>                Put p = new Put(row, ts);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>                p.addColumn(fam1, qual2, value2);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>                rm.add(p);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>              }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>              region.mutateRow(rm);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>              op ^= true;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>              // check: should always see exactly one column<a name="line.421"></a>
-<span class="sourceLineNo">422</span>              Get g = new Get(row);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>              Result r = region.get(g);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>              if (r.size() != 1) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                LOG.debug(r);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>                failures.incrementAndGet();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>                fail();<a name="line.427"></a>
-<span class="sourceLineNo">428</span>              }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>            } catch (IOException e) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>              e.printStackTrace();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>              failures.incrementAndGet();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>              fail();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>            }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      };<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // run all threads<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      all[i].start();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // wait for all threads to finish<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      try {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        all[i].join();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>  /**<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * Test multi-threaded region mutations.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  @Test<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // create 10 threads, each will alternate between adding and<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // removing a column<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    int numThreads = 10;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    int opsPerThread = 250;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // create all threads<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        public void run() {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          boolean op = true;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            try {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>              // throw in some flushes<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              if (i%10==0) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>                synchronized(region) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>                  LOG.debug("flushing");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>                  region.flush(true);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>                  if (i%100==0) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>                    region.compact(false);<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>              long ts = timeStamps.incrementAndGet();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              if (op) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>                Put p = new Put(row2, ts);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>                p.addColumn(fam1, qual1, value1);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>                mrm.add(p);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>                Delete d = new Delete(row);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>                d.addColumns(fam1, qual1, ts);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>                mrm.add(d);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>              } else {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>                Delete d = new Delete(row2);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>                d.addColumns(fam1, qual1, ts);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>                mrm.add(d);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>                Put p = new Put(row, ts);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                p.addColumn(fam1, qual1, value2);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>                mrm.add(p);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>              }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>              op ^= true;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>              // check: should always see exactly one column<a name="line.514"></a>
-<span class="sourceLineNo">515</span>              Scan s = new Scan(row);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>              RegionScanner rs = region.getScanner(s);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>              while (rs.next(r))<a name="line.518"></a>
-<span class="sourceLineNo">519</span>                ;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              rs.close();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              if (r.size() != 1) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>                LOG.debug(r);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>                failures.incrementAndGet();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>                fail();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>            } catch (IOException e) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>              e.printStackTrace();<a name="line.527"></a>
-<span class="sourceLineNo">528</span>              failures.incrementAndGet();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>              fail();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>            }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>          }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      };<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // run all threads<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      all[i].start();<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    // wait for all threads to finish<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      try {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        all[i].join();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public static class AtomicOperation extends Thread {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    protected final Region region;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    protected final int numOps;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    protected final AtomicLong timeStamps;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    protected final AtomicInteger failures;<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    protected final Random r = new Random();<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        AtomicInteger failures) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      this.region = region;<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.numOps = numOps;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      this.timeStamps = timeStamps;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      this.failures = failures;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  }<a name="line.565"></a>
-<span class="sourceLineNo">566</span>  <a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private enum TestStep {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    PUT_COMPLETED,         // put complete (released RowLock, but may not have advanced MVCC).<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    CHECKANDPUT_STARTED,   // began checkAndPut: if 10 -&gt; 11<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    CHECKANDPUT_COMPLETED  // completed checkAndPut<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    // NOTE: at the end of these steps, the value of the cell should be 50, not 11!<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  private static volatile TestStep testStep = TestStep.INIT;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>  private final String family = "f1";<a name="line.577"></a>
-<span class="sourceLineNo">578</span>     <a name="line.578"></a>
-<span class="sourceLineNo">579</span>  /**<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Test written as a verifier for HBASE-7051, CheckAndPut should properly read<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * MVCC. <a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * <a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * Moved into TestAtomicOperation from its original location, TestHBase7051<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testPutAndCheckAndPutInParallel() throws Exception {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    final String tableName = "testPutAndCheckAndPut";<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    conf.setClass(HConstants.REGION_IMPL, MockHRegion.class, HeapSize.class);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName))<a name="line.590"></a>
-<span class="sourceLineNo">591</span>        .addFamily(new HColumnDescriptor(family));<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    this.region = TEST_UTIL.createLocalHRegion(htd, null, null);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Put[] puts = new Put[1];<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    Put put = new Put(Bytes.toBytes("r1"));<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("10"));<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    puts[0] = put;<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    <a name="line.597"></a>
-<span class="sourceLineNo">598</span>    region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    MultithreadedTestUtil.TestContext ctx =<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      new MultithreadedTestUtil.TestContext(conf);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    ctx.addThread(new PutThread(ctx, region));<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    ctx.addThread(new CheckAndPutThread(ctx, region));<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    ctx.startThreads();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    while (testStep != TestStep.CHECKANDPUT_COMPLETED) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      Thread.sleep(100);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    ctx.stop();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    Scan s = new Scan();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    RegionScanner scanner = region.getScanner(s);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    List&lt;Cell&gt; results = new ArrayList&lt;Cell&gt;();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    ScannerContext scannerContext = ScannerContext.newBuilder().setBatchLimit(2).build();<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    scanner.next(results, scannerContext);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    for (Cell keyValue : results) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      assertEquals("50",Bytes.toString(CellUtil.cloneValue(keyValue)));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  private class PutThread extends TestThread {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    private Region region;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    PutThread(TestContext ctx, Region region) {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      super(ctx);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      this.region = region;<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    }<a name="line.623"></a>
-<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span>    public void doWork() throws Exception {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      Put[] puts = new Put[1];<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("50"));<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      puts[0] = put;<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      testStep = TestStep.PUT_STARTED;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    }<a name="line.632"></a>
-<span class="sourceLineNo">633</span>  }<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>  private class CheckAndPutThread extends TestThread {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    private Region region;<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    CheckAndPutThread(TestContext ctx, Region region) {<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      super(ctx);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      this.region = region;<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   }<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>    public void doWork() throws Exception {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      Put[] puts = new Put[1];<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("11"));<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      puts[0] = put;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      while (testStep != TestStep.PUT_COMPLETED) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        Thread.sleep(100);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      testStep = TestStep.CHECKANDPUT_STARTED;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      region.checkAndMutate(Bytes.toBytes("r1"), Bytes.toBytes(family), Bytes.toBytes("q1"),<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("10")), put, true);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      testStep = TestStep.CHECKANDPUT_COMPLETED;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>  public static class MockHRegion extends HRegion {<a name="line.657"></a>
-<span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    public MockHRegion(Path tableDir, WAL log, FileSystem fs, Configuration conf,<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        final HRegionInfo regionInfo, final HTableDescriptor htd, RegionServerServices rsServices) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      super(tableDir, log, fs, conf, regionInfo, htd, rsServices);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    @Override<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    public RowLock getRowLock(final byte[] row, boolean readLock) throws IOException {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      if (testStep == TestStep.CHECKANDPUT_STARTED) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        latch.countDown();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      return new WrappedRowLock(super.getRowLock(row, readLock));<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    <a name="line.671"></a>
-<span class="sourceLineNo">672</span>    public class WrappedRowLock implements RowLock {<a name="line.672"></a>
-<span class="sourceLineNo">673</span><a name="line.673"></a>
-<span class="sourceLineNo">674</span>      private final RowLock rowLock;<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>      private WrappedRowLock(RowLock rowLock) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>        this.rowLock = rowLock;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      }<a name="line.678"></a>
+<span class="sourceLineNo">290</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.291"></a>
+<span class="sourceLineNo">292</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.295"></a>
+<span class="sourceLineNo">296</span>               Bytes.toLong(result.getValue(fam1, qual2)));<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            long fam1Increment = Bytes.toLong(result.getValue(fam1, qual1))*3;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>            long fam2Increment = Bytes.toLong(result.getValue(fam2, qual3));<a name="line.298"></a>
+<span class="sourceLineNo">299</span>            assertEquals("fam1=" + fam1Increment + ", fam2=" + fam2Increment,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              fam1Increment, fam2Increment);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        } catch (IOException e) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          e.printStackTrace();<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>    }<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>  @Test<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public void testAppendMultiThreads() throws IOException {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // run a with mixed column families (1 and 3 versions)<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    int numThreads = 100;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    int opsPerThread = 100;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    final byte[] val = new byte[]{1};<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    // create all threads<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        @Override<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        public void run() {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>            try {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>              Append a = new Append(row);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>              a.add(fam1, qual1, val);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>              a.add(fam1, qual2, val);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>              a.add(fam2, qual3, val);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>              Get g = new Get(row);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>              Result result = region.get(g);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.337"></a>
+<span class="sourceLineNo">338</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.338"></a>
+<span class="sourceLineNo">339</span>            } catch (IOException e) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>              e.printStackTrace();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              failures.incrementAndGet();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>              fail();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>            }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      };<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    // run all threads<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      all[i].start();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    // wait for all threads to finish<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      try {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        all[i].join();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    Get g = new Get(row);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    Result result = region.get(g);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  @Test<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    // create 10 threads, each will alternate between adding and<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // removing a column<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    int numThreads = 10;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    int opsPerThread = 250;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // create all threads<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        @Override<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        public void run() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          boolean op = true;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            try {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              // throw in some flushes<a name="line.392"></a>
+<span class="sourceLineNo">393</span>              if (i%10==0) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>                synchronized(region) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>                  LOG.debug("flushing");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>                  region.flush(true);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>                  if (i%100==0) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>                    region.compact(false);<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>              }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>              long ts = timeStamps.incrementAndGet();<a name="line.402"></a>
+<span class="sourceLineNo">403</span>              RowMutations rm = new RowMutations(row);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              if (op) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                Put p = new Put(row, ts);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                p.addColumn(fam1, qual1, value1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>                rm.add(p);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>                Delete d = new Delete(row);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>                d.addColumns(fam1, qual2, ts);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>                rm.add(d);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>              } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>                Delete d = new Delete(row);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>                d.addColumns(fam1, qual1, ts);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>                rm.add(d);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>                Put p = new Put(row, ts);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>                p.addColumn(fam1, qual2, value2);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                rm.add(p);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>              }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>              region.mutateRow(rm);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>              op ^= true;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>              // check: should always see exactly one column<a name="line.425"></a>
+<span class="sourceLineNo">426</span>              Get g = new Get(row);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>              Result r = region.get(g);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>              if (r.size() != 1) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>                LOG.debug(r);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>                failures.incrementAndGet();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>                fail();<a name="line.431"></a>
+<span class="sourceLineNo">432</span>              }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>            } catch (IOException e) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>              e.printStackTrace();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>              failures.incrementAndGet();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>              fail();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>            }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      };<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // run all threads<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      try {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        all[i].join();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } catch (InterruptedException e) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(0, failures.get());<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><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * Test multi-threaded region mutations.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  @Test<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    // create 10 threads, each will alternate between adding and<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    // removing a column<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    int numThreads = 10;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    int opsPerThread = 250;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // create all threads<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        @Override<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        public void run() {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          boolean op = true;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>            try {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>              // throw in some flushes<a name="line.485"></a>
+<span class="sourceLineNo">486</span>              if (i%10==0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>                synchronized(region) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>                  LOG.debug("flushing");<a name="line.488"></a>
+<span class="sourceLineNo">489</span>                  region.flush(true);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>                  if (i%100==0) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>                    region.compact(false);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>                  }<a name="line.492"></a>
+<span class="sourceLineNo">493</span>                }<a name="line.493"></a>
+<span class="sourceLineNo">494</span>              }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>              long ts = timeStamps.incrementAndGet();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>              if (op) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>                Put p = new Put(row2, ts);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>                p.addColumn(fam1, qual1, value1);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>                mrm.add(p);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>                Delete d = new Delete(row);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>                d.addColumns(fam1, qual1, ts);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>                mrm.add(d);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>              } else {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>                Delete d = new Delete(row2);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>                d.addColumns(fam1, qual1, ts);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>                mrm.add(d);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>                Put p = new Put(row, ts);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>                p.addColumn(fam1, qual1, value2);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>                mrm.add(p);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>              }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>              op ^= true;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>              // check: should always see exactly one column<a name="line.518"></a>
+<span class="sourceLineNo">519</span>              Scan s = new Scan(row);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>              RegionScanner rs = region.getScanner(s);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>              while (rs.next(r))<a name="line.522"></a>
+<span class="sourceLineNo">523</span>                ;<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              rs.close();<a name="line.524"></a>
+<span class="sourceLineNo">525</span>              if (r.size() != 1) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>                LOG.debug(r);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>                failures.incrementAndGet();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>                fail();<a name="line.528"></a>
+<span class="sourceLineNo">529</span>              }<a name="line.529"></a>
+<span class="sourceLineNo">530</span>            } catch (IOException e) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>              e.printStackTrace();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>              failures.incrementAndGet();<a name="line.532"></a>
+<span class="sourceLineNo">533</span>              fail();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>          }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        }<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      };<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span>    // run all threads<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      all[i].start();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>    // wait for all threads to finish<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      try {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>        all[i].join();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      } catch (InterruptedException e) {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    assertEquals(0, failures.get());<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  public static class AtomicOperation extends Thread {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    protected final Region region;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    protected final int numOps;<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    protected final AtomicLong timeStamps;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    protected final AtomicInteger failures;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    protected final Random r = new Random();<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>        AtomicInteger failures) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      this.region = region;<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      this.numOps = numOps;<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.timeStamps = timeStamps;<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      this.failures = failures;<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>  <a name="line.570"></a>
+<span class="sourceLineNo">571</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private enum TestStep {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    PUT_COMPLETED,         // put complete (released RowLock, but may not have advan

<TRUNCATED>

[16/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html
index 0e5d4a5..24bdb40 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html
@@ -36,7 +36,7 @@
 <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> * Test all client operations with a coprocessor that<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * just implements the default flush/compact/scan policy<a name="line.31"></a>
+<span class="sourceLineNo">031</span> * just implements the default flush/compact/scan policy.<a name="line.31"></a>
 <span class="sourceLineNo">032</span> */<a name="line.32"></a>
 <span class="sourceLineNo">033</span>@Category({LargeTests.class, ClientTests.class})<a name="line.33"></a>
 <span class="sourceLineNo">034</span>public class TestFromClientSideWithCoprocessor extends TestFromClientSide {<a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrement.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrement.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrement.html
index 7310e32..fb46181 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrement.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrement.html
@@ -38,7 +38,7 @@
 <span class="sourceLineNo">030</span>@Category({ClientTests.class, SmallTests.class})<a name="line.30"></a>
 <span class="sourceLineNo">031</span>public class TestIncrement {<a name="line.31"></a>
 <span class="sourceLineNo">032</span>  @Test<a name="line.32"></a>
-<span class="sourceLineNo">033</span>  public void test() {<a name="line.33"></a>
+<span class="sourceLineNo">033</span>  public void testIncrementInstance() {<a name="line.33"></a>
 <span class="sourceLineNo">034</span>    final long expected = 13;<a name="line.34"></a>
 <span class="sourceLineNo">035</span>    Increment inc = new Increment(new byte [] {'r'});<a name="line.35"></a>
 <span class="sourceLineNo">036</span>    int total = 0;<a name="line.36"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html
new file mode 100644
index 0000000..871d5d9
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html
@@ -0,0 +1,116 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import org.apache.hadoop.conf.Configuration;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.regionserver.NoOpScanPolicyObserver;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.junit.Before;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.junit.experimental.categories.Category;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>/**<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * Test all {@link Increment} client operations with a coprocessor that<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * just implements the default flush/compact/scan policy.<a name="line.30"></a>
+<span class="sourceLineNo">031</span> *<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * This test takes a long time. The test it derives from is parameterized so we run through both<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * options of the test.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> */<a name="line.34"></a>
+<span class="sourceLineNo">035</span>@Category(LargeTests.class)<a name="line.35"></a>
+<span class="sourceLineNo">036</span>public class TestIncrementFromClientSideWithCoprocessor extends TestIncrementsFromClientSide {<a name="line.36"></a>
+<span class="sourceLineNo">037</span>  @Before<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  public void before() throws Exception {<a name="line.38"></a>
+<span class="sourceLineNo">039</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.39"></a>
+<span class="sourceLineNo">040</span>    conf.setStrings(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY,<a name="line.40"></a>
+<span class="sourceLineNo">041</span>        MultiRowMutationEndpoint.class.getName(), NoOpScanPolicyObserver.class.getName());<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    conf.setBoolean("hbase.table.sanity.checks", true); // enable for below tests<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  }<a name="line.43"></a>
+<span class="sourceLineNo">044</span>}<a name="line.44"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html
new file mode 100644
index 0000000..9e83758
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html
@@ -0,0 +1,445 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.client;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.fail;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.commons.logging.Log;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.commons.logging.LogFactory;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.conf.Configuration;<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.DoNotRetryIOException;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.TableName;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.junit.AfterClass;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.BeforeClass;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.junit.Rule;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.Test;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.experimental.categories.Category;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.rules.TestName;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>/**<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * Run Increment tests that use the HBase clients; {@link HTable}.<a name="line.45"></a>
+<span class="sourceLineNo">046</span> *<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * Test is parameterized to run the slow and fast increment code paths. If fast, in the @before, we<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * do a rolling restart of the single regionserver so that it can pick up the go fast configuration.<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * Doing it this way should be faster than starting/stopping a cluster per test.<a name="line.49"></a>
+<span class="sourceLineNo">050</span> *<a name="line.50"></a>
+<span class="sourceLineNo">051</span> * Test takes a long time because spin up a cluster between each run -- ugh.<a name="line.51"></a>
+<span class="sourceLineNo">052</span> */<a name="line.52"></a>
+<span class="sourceLineNo">053</span>@Category(LargeTests.class)<a name="line.53"></a>
+<span class="sourceLineNo">054</span>public class TestIncrementsFromClientSide {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  final Log LOG = LogFactory.getLog(getClass());<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  protected final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private static byte [] ROW = Bytes.toBytes("testRow");<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private static byte [] FAMILY = Bytes.toBytes("testFamily");<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  // This test depends on there being only one slave running at at a time. See the @Before<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  // method where we do rolling restart.<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  protected static int SLAVES = 1;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  @Rule public TestName name = new TestName();<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  @BeforeClass<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public static void beforeClass() throws Exception {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    conf.setStrings(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY,<a name="line.67"></a>
+<span class="sourceLineNo">068</span>        MultiRowMutationEndpoint.class.getName());<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    conf.setBoolean("hbase.table.sanity.checks", true); // enable for below tests<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    // We need more than one region server in this test<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    TEST_UTIL.startMiniCluster(SLAVES);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  }<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>   * @throws java.lang.Exception<a name="line.75"></a>
+<span class="sourceLineNo">076</span>   */<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  @AfterClass<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  public static void afterClass() throws Exception {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  @Test<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public void testIncrementWithDeletes() throws Exception {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    LOG.info("Starting " + this.name.getMethodName());<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    final TableName TABLENAME =<a name="line.85"></a>
+<span class="sourceLineNo">086</span>        TableName.valueOf(filterStringSoTableNameSafe(this.name.getMethodName()));<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    final byte[] COLUMN = Bytes.toBytes("column");<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>    ht.incrementColumnValue(ROW, FAMILY, COLUMN, 5);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    TEST_UTIL.flush(TABLENAME);<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>    Delete del = new Delete(ROW);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    ht.delete(del);<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    ht.incrementColumnValue(ROW, FAMILY, COLUMN, 5);<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>    Get get = new Get(ROW);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    Result r = ht.get(get);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    assertEquals(1, r.size());<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    assertEquals(5, Bytes.toLong(r.getValue(FAMILY, COLUMN)));<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  @Test<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  public void testIncrementingInvalidValue() throws Exception {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    LOG.info("Starting " + this.name.getMethodName());<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    final TableName TABLENAME =<a name="line.107"></a>
+<span class="sourceLineNo">108</span>        TableName.valueOf(filterStringSoTableNameSafe(this.name.getMethodName()));<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    final byte[] COLUMN = Bytes.toBytes("column");<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    Put p = new Put(ROW);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    // write an integer here (not a Long)<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    p.addColumn(FAMILY, COLUMN, Bytes.toBytes(5));<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    ht.put(p);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    try {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      ht.incrementColumnValue(ROW, FAMILY, COLUMN, 5);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      fail("Should have thrown DoNotRetryIOException");<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    } catch (DoNotRetryIOException iox) {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      // success<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    Increment inc = new Increment(ROW);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    inc.addColumn(FAMILY, COLUMN, 5);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    try {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      ht.increment(inc);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      fail("Should have thrown DoNotRetryIOException");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    } catch (DoNotRetryIOException iox) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      // success<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  @Test<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  public void testIncrementInvalidArguments() throws Exception {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    LOG.info("Starting " + this.name.getMethodName());<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    final TableName TABLENAME =<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        TableName.valueOf(filterStringSoTableNameSafe(this.name.getMethodName()));<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    final byte[] COLUMN = Bytes.toBytes("column");<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    try {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      // try null row<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      ht.incrementColumnValue(null, FAMILY, COLUMN, 5);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      fail("Should have thrown IOException");<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    } catch (IOException iox) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      // success<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    try {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      // try null family<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      ht.incrementColumnValue(ROW, null, COLUMN, 5);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      fail("Should have thrown IOException");<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    } catch (IOException iox) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      // success<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    try {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      // try null qualifier<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      ht.incrementColumnValue(ROW, FAMILY, null, 5);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      fail("Should have thrown IOException");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    } catch (IOException iox) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      // success<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    // try null row<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    try {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      Increment incNoRow = new Increment((byte [])null);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      incNoRow.addColumn(FAMILY, COLUMN, 5);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      fail("Should have thrown IllegalArgumentException");<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    } catch (IllegalArgumentException iax) {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      // success<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    } catch (NullPointerException npe) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      // success<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // try null family<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    try {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      Increment incNoFamily = new Increment(ROW);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      incNoFamily.addColumn(null, COLUMN, 5);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      fail("Should have thrown IllegalArgumentException");<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    } catch (IllegalArgumentException iax) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      // success<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    // try null qualifier<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    try {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      Increment incNoQualifier = new Increment(ROW);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      incNoQualifier.addColumn(FAMILY, null, 5);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      fail("Should have thrown IllegalArgumentException");<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    } catch (IllegalArgumentException iax) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      // success<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><a name="line.186"></a>
+<span class="sourceLineNo">187</span>  @Test<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  public void testIncrementOutOfOrder() throws Exception {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    LOG.info("Starting " + this.name.getMethodName());<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    final TableName TABLENAME =<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        TableName.valueOf(filterStringSoTableNameSafe(this.name.getMethodName()));<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    byte [][] QUALIFIERS = new byte [][] {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      Bytes.toBytes("B"), Bytes.toBytes("A"), Bytes.toBytes("C")<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    };<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    Increment inc = new Increment(ROW);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    for (int i=0; i&lt;QUALIFIERS.length; i++) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    ht.increment(inc);<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    // Verify expected results<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    Get get = new Get(ROW);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    Result r = ht.get(get);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    Cell [] kvs = r.rawCells();<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    assertEquals(3, kvs.length);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[1], 1);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[0], 1);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 1);<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // Now try multiple columns again<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    inc = new Increment(ROW);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    for (int i=0; i&lt;QUALIFIERS.length; i++) {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    ht.increment(inc);<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>    // Verify<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    r = ht.get(get);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    kvs = r.rawCells();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    assertEquals(3, kvs.length);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[1], 2);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[0], 2);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 2);<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>  @Test<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  public void testIncrementOnSameColumn() throws Exception {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    LOG.info("Starting " + this.name.getMethodName());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    final byte[] TABLENAME = Bytes.toBytes(filterStringSoTableNameSafe(this.name.getMethodName()));<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    Table ht = TEST_UTIL.createTable(TableName.valueOf(TABLENAME), FAMILY);<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    byte[][] QUALIFIERS =<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        new byte[][] { Bytes.toBytes("A"), Bytes.toBytes("B"), Bytes.toBytes("C") };<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>    Increment inc = new Increment(ROW);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    for (int i = 0; i &lt; QUALIFIERS.length; i++) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    ht.increment(inc);<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>    // Verify expected results<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    Get get = new Get(ROW);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    Result r = ht.get(get);<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    Cell[] kvs = r.rawCells();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    assertEquals(3, kvs.length);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[0], 1);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[1], 1);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 1);<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>    // Now try multiple columns again<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    inc = new Increment(ROW);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    for (int i = 0; i &lt; QUALIFIERS.length; i++) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    ht.increment(inc);<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>    // Verify<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    r = ht.get(get);<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    kvs = r.rawCells();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    assertEquals(3, kvs.length);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[0], 2);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[1], 2);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 2);<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    ht.close();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
+<span class="sourceLineNo">272</span><a name="line.272"></a>
+<span class="sourceLineNo">273</span>  @Test<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  public void testIncrement() throws Exception {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    LOG.info("Starting " + this.name.getMethodName());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    final TableName TABLENAME =<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        TableName.valueOf(filterStringSoTableNameSafe(this.name.getMethodName()));<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    byte [][] ROWS = new byte [][] {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        Bytes.toBytes("a"), Bytes.toBytes("b"), Bytes.toBytes("c"),<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        Bytes.toBytes("d"), Bytes.toBytes("e"), Bytes.toBytes("f"),<a name="line.282"></a>
+<span class="sourceLineNo">283</span>        Bytes.toBytes("g"), Bytes.toBytes("h"), Bytes.toBytes("i")<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    };<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    byte [][] QUALIFIERS = new byte [][] {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        Bytes.toBytes("a"), Bytes.toBytes("b"), Bytes.toBytes("c"),<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        Bytes.toBytes("d"), Bytes.toBytes("e"), Bytes.toBytes("f"),<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        Bytes.toBytes("g"), Bytes.toBytes("h"), Bytes.toBytes("i")<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    };<a name="line.289"></a>
+<span class="sourceLineNo">290</span><a name="line.290"></a>
+<span class="sourceLineNo">291</span>    // Do some simple single-column increments<a name="line.291"></a>
+<span class="sourceLineNo">292</span><a name="line.292"></a>
+<span class="sourceLineNo">293</span>    // First with old API<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    ht.incrementColumnValue(ROW, FAMILY, QUALIFIERS[0], 1);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    ht.incrementColumnValue(ROW, FAMILY, QUALIFIERS[1], 2);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    ht.incrementColumnValue(ROW, FAMILY, QUALIFIERS[2], 3);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    ht.incrementColumnValue(ROW, FAMILY, QUALIFIERS[3], 4);<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>    // Now increment things incremented with old and do some new<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    Increment inc = new Increment(ROW);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    inc.addColumn(FAMILY, QUALIFIERS[1], 1);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    inc.addColumn(FAMILY, QUALIFIERS[3], 1);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    inc.addColumn(FAMILY, QUALIFIERS[4], 1);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    ht.increment(inc);<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    // Verify expected results<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    Get get = new Get(ROW);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    Result r = ht.get(get);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    Cell [] kvs = r.rawCells();<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    assertEquals(5, kvs.length);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[0], 1);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[1], 3);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 3);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    assertIncrementKey(kvs[3], ROW, FAMILY, QUALIFIERS[3], 5);<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    assertIncrementKey(kvs[4], ROW, FAMILY, QUALIFIERS[4], 1);<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>    // Now try multiple columns by different amounts<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    inc = new Increment(ROWS[0]);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    for (int i=0;i&lt;QUALIFIERS.length;i++) {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      inc.addColumn(FAMILY, QUALIFIERS[i], i+1);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    }<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    ht.increment(inc);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    // Verify<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    get = new Get(ROWS[0]);<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    r = ht.get(get);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    kvs = r.rawCells();<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    assertEquals(QUALIFIERS.length, kvs.length);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    for (int i=0;i&lt;QUALIFIERS.length;i++) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      assertIncrementKey(kvs[i], ROWS[0], FAMILY, QUALIFIERS[i], i+1);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // Re-increment them<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    inc = new Increment(ROWS[0]);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    for (int i=0;i&lt;QUALIFIERS.length;i++) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      inc.addColumn(FAMILY, QUALIFIERS[i], i+1);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    ht.increment(inc);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    // Verify<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    r = ht.get(get);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    kvs = r.rawCells();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    assertEquals(QUALIFIERS.length, kvs.length);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    for (int i=0;i&lt;QUALIFIERS.length;i++) {<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      assertIncrementKey(kvs[i], ROWS[0], FAMILY, QUALIFIERS[i], 2*(i+1));<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // Verify that an Increment of an amount of zero, returns current count; i.e. same as for above<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    // test, that is: 2 * (i + 1).<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    inc = new Increment(ROWS[0]);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    for (int i = 0; i &lt; QUALIFIERS.length; i++) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 0);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    }<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    ht.increment(inc);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    r = ht.get(get);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    kvs = r.rawCells();<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    assertEquals(QUALIFIERS.length, kvs.length);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    for (int i = 0; i &lt; QUALIFIERS.length; i++) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      assertIncrementKey(kvs[i], ROWS[0], FAMILY, QUALIFIERS[i], 2*(i+1));<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>  /**<a name="line.362"></a>
+<span class="sourceLineNo">363</span>   * Call over to the adjacent class's method of same name.<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   */<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  static void assertIncrementKey(Cell key, byte [] row, byte [] family,<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      byte [] qualifier, long value) throws Exception {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    TestFromClientSide.assertIncrementKey(key, row, family, qualifier, value);<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>  public static String filterStringSoTableNameSafe(final String str) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return str.replaceAll("\\[fast\\=(.*)\\]", ".FAST.is.$1");<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>}<a name="line.373"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[19/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html
index 7892f01..aca2cbc 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html
@@ -56,77 +56,77 @@
 <span class="sourceLineNo">048</span>import org.apache.hadoop.conf.Configuration;<a name="line.48"></a>
 <span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.Cell;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.HConstants;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.KeepDeletedCells;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.RegionLocations;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ServerName;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.TableName;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.Waiter;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.metrics.ScanMetrics;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.filter.CompareFilter;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.filter.FilterList;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.filter.InclusiveStopFilter;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.filter.KeyOnlyFilter;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.filter.LongComparator;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.filter.PrefixFilter;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.filter.QualifierFilter;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.filter.RegexStringComparator;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.filter.RowFilter;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.filter.WhileMatchFilter;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.protobuf.generated.AdminProtos;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto.MutationType;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MultiRowMutationService;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.log4j.AppenderSkeleton;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.log4j.Level;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.log4j.Logger;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.log4j.spi.LoggingEvent;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.junit.After;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.junit.AfterClass;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.junit.Before;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.junit.BeforeClass;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.junit.Ignore;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.junit.Test;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.junit.experimental.categories.Category;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>/**<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * Run tests that use the HBase clients; {@link Table}.<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * Sets up the HBase mini cluster once at start and runs through all client tests.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> * Each creates a table named for the method and does its stuff against that.<a name="line.117"></a>
-<span class="sourceLineNo">118</span> */<a name="line.118"></a>
-<span class="sourceLineNo">119</span>@Category({LargeTests.class, ClientTests.class})<a name="line.119"></a>
-<span class="sourceLineNo">120</span>@SuppressWarnings ("deprecation")<a name="line.120"></a>
-<span class="sourceLineNo">121</span>public class TestFromClientSide {<a name="line.121"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.HConstants;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.KeepDeletedCells;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.RegionLocations;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ServerName;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.TableName;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.Waiter;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.client.metrics.ScanMetrics;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.filter.CompareFilter;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.filter.FilterList;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.filter.InclusiveStopFilter;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.filter.KeyOnlyFilter;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.filter.LongComparator;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.filter.PrefixFilter;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.filter.QualifierFilter;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.filter.RegexStringComparator;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.filter.RowFilter;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.filter.WhileMatchFilter;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.protobuf.generated.AdminProtos;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto.MutationType;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MultiRowMutationService;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.log4j.AppenderSkeleton;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.log4j.Level;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.log4j.Logger;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.log4j.spi.LoggingEvent;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.junit.After;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.junit.AfterClass;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.junit.Before;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.junit.BeforeClass;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.junit.Ignore;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.junit.Test;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.junit.experimental.categories.Category;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>/**<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * Run tests that use the HBase clients; {@link Table}.<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * Sets up the HBase mini cluster once at start and runs through all client tests.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> * Each creates a table named for the method and does its stuff against that.<a name="line.116"></a>
+<span class="sourceLineNo">117</span> */<a name="line.117"></a>
+<span class="sourceLineNo">118</span>@Category({LargeTests.class, ClientTests.class})<a name="line.118"></a>
+<span class="sourceLineNo">119</span>@SuppressWarnings ("deprecation")<a name="line.119"></a>
+<span class="sourceLineNo">120</span>public class TestFromClientSide {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  // NOTE: Increment tests were moved to their own class, TestIncrementsFromClientSide.<a name="line.121"></a>
 <span class="sourceLineNo">122</span>  private static final Log LOG = LogFactory.getLog(TestFromClientSide.class);<a name="line.122"></a>
 <span class="sourceLineNo">123</span>  protected final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.123"></a>
 <span class="sourceLineNo">124</span>  private static byte [] ROW = Bytes.toBytes("testRow");<a name="line.124"></a>
@@ -3054,7 +3054,7 @@
 <span class="sourceLineNo">3046</span>        equals(value, CellUtil.cloneValue(key)));<a name="line.3046"></a>
 <span class="sourceLineNo">3047</span>  }<a name="line.3047"></a>
 <span class="sourceLineNo">3048</span><a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>  private void assertIncrementKey(Cell key, byte [] row, byte [] family,<a name="line.3049"></a>
+<span class="sourceLineNo">3049</span>  static void assertIncrementKey(Cell key, byte [] row, byte [] family,<a name="line.3049"></a>
 <span class="sourceLineNo">3050</span>      byte [] qualifier, long value)<a name="line.3050"></a>
 <span class="sourceLineNo">3051</span>  throws Exception {<a name="line.3051"></a>
 <span class="sourceLineNo">3052</span>    assertTrue("Expected row [" + Bytes.toString(row) + "] " +<a name="line.3052"></a>
@@ -3278,7 +3278,7 @@
 <span class="sourceLineNo">3270</span>    return stamps;<a name="line.3270"></a>
 <span class="sourceLineNo">3271</span>  }<a name="line.3271"></a>
 <span class="sourceLineNo">3272</span><a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>  private boolean equals(byte [] left, byte [] right) {<a name="line.3273"></a>
+<span class="sourceLineNo">3273</span>  static boolean equals(byte [] left, byte [] right) {<a name="line.3273"></a>
 <span class="sourceLineNo">3274</span>    if (left == null &amp;&amp; right == null) return true;<a name="line.3274"></a>
 <span class="sourceLineNo">3275</span>    if (left == null &amp;&amp; right.length == 0) return true;<a name="line.3275"></a>
 <span class="sourceLineNo">3276</span>    if (right == null &amp;&amp; left.length == 0) return true;<a name="line.3276"></a>
@@ -4407,2001 +4407,1743 @@
 <span class="sourceLineNo">4399</span>  }<a name="line.4399"></a>
 <span class="sourceLineNo">4400</span><a name="line.4400"></a>
 <span class="sourceLineNo">4401</span>  @Test<a name="line.4401"></a>
-<span class="sourceLineNo">4402</span>  public void testIncrementWithDeletes() throws Exception {<a name="line.4402"></a>
-<span class="sourceLineNo">4403</span>    LOG.info("Starting testIncrementWithDeletes");<a name="line.4403"></a>
-<span class="sourceLineNo">4404</span>    final TableName TABLENAME =<a name="line.4404"></a>
-<span class="sourceLineNo">4405</span>        TableName.valueOf("testIncrementWithDeletes");<a name="line.4405"></a>
-<span class="sourceLineNo">4406</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.4406"></a>
-<span class="sourceLineNo">4407</span>    final byte[] COLUMN = Bytes.toBytes("column");<a name="line.4407"></a>
-<span class="sourceLineNo">4408</span><a name="line.4408"></a>
-<span class="sourceLineNo">4409</span>    ht.incrementColumnValue(ROW, FAMILY, COLUMN, 5);<a name="line.4409"></a>
-<span class="sourceLineNo">4410</span>    TEST_UTIL.flush(TABLENAME);<a name="line.4410"></a>
-<span class="sourceLineNo">4411</span><a name="line.4411"></a>
-<span class="sourceLineNo">4412</span>    Delete del = new Delete(ROW);<a name="line.4412"></a>
-<span class="sourceLineNo">4413</span>    ht.delete(del);<a name="line.4413"></a>
-<span class="sourceLineNo">4414</span><a name="line.4414"></a>
-<span class="sourceLineNo">4415</span>    ht.incrementColumnValue(ROW, FAMILY, COLUMN, 5);<a name="line.4415"></a>
-<span class="sourceLineNo">4416</span><a name="line.4416"></a>
-<span class="sourceLineNo">4417</span>    Get get = new Get(ROW);<a name="line.4417"></a>
-<span class="sourceLineNo">4418</span>    Result r = ht.get(get);<a name="line.4418"></a>
-<span class="sourceLineNo">4419</span>    assertEquals(1, r.size());<a name="line.4419"></a>
-<span class="sourceLineNo">4420</span>    assertEquals(5, Bytes.toLong(r.getValue(FAMILY, COLUMN)));<a name="line.4420"></a>
-<span class="sourceLineNo">4421</span>  }<a name="line.4421"></a>
+<span class="sourceLineNo">4402</span>  public void testClientPoolRoundRobin() throws IOException {<a name="line.4402"></a>
+<span class="sourceLineNo">4403</span>    final TableName tableName = TableName.valueOf("testClientPoolRoundRobin");<a name="line.4403"></a>
+<span class="sourceLineNo">4404</span><a name="line.4404"></a>
+<span class="sourceLineNo">4405</span>    int poolSize = 3;<a name="line.4405"></a>
+<span class="sourceLineNo">4406</span>    int numVersions = poolSize * 2;<a name="line.4406"></a>
+<span class="sourceLineNo">4407</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.4407"></a>
+<span class="sourceLineNo">4408</span>    conf.set(HConstants.HBASE_CLIENT_IPC_POOL_TYPE, "round-robin");<a name="line.4408"></a>
+<span class="sourceLineNo">4409</span>    conf.setInt(HConstants.HBASE_CLIENT_IPC_POOL_SIZE, poolSize);<a name="line.4409"></a>
+<span class="sourceLineNo">4410</span><a name="line.4410"></a>
+<span class="sourceLineNo">4411</span>    Table table = TEST_UTIL.createTable(tableName, new byte[][] { FAMILY }, Integer.MAX_VALUE);<a name="line.4411"></a>
+<span class="sourceLineNo">4412</span><a name="line.4412"></a>
+<span class="sourceLineNo">4413</span>    final long ts = EnvironmentEdgeManager.currentTime();<a name="line.4413"></a>
+<span class="sourceLineNo">4414</span>    Get get = new Get(ROW);<a name="line.4414"></a>
+<span class="sourceLineNo">4415</span>    get.addColumn(FAMILY, QUALIFIER);<a name="line.4415"></a>
+<span class="sourceLineNo">4416</span>    get.setMaxVersions();<a name="line.4416"></a>
+<span class="sourceLineNo">4417</span><a name="line.4417"></a>
+<span class="sourceLineNo">4418</span>    for (int versions = 1; versions &lt;= numVersions; versions++) {<a name="line.4418"></a>
+<span class="sourceLineNo">4419</span>      Put put = new Put(ROW);<a name="line.4419"></a>
+<span class="sourceLineNo">4420</span>      put.addColumn(FAMILY, QUALIFIER, ts + versions, VALUE);<a name="line.4420"></a>
+<span class="sourceLineNo">4421</span>      table.put(put);<a name="line.4421"></a>
 <span class="sourceLineNo">4422</span><a name="line.4422"></a>
-<span class="sourceLineNo">4423</span>  @Test<a name="line.4423"></a>
-<span class="sourceLineNo">4424</span>  public void testIncrementingInvalidValue() throws Exception {<a name="line.4424"></a>
-<span class="sourceLineNo">4425</span>    LOG.info("Starting testIncrementingInvalidValue");<a name="line.4425"></a>
-<span class="sourceLineNo">4426</span>    final TableName TABLENAME = TableName.valueOf("testIncrementingInvalidValue");<a name="line.4426"></a>
-<span class="sourceLineNo">4427</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.4427"></a>
-<span class="sourceLineNo">4428</span>    final byte[] COLUMN = Bytes.toBytes("column");<a name="line.4428"></a>
-<span class="sourceLineNo">4429</span>    Put p = new Put(ROW);<a name="line.4429"></a>
-<span class="sourceLineNo">4430</span>    // write an integer here (not a Long)<a name="line.4430"></a>
-<span class="sourceLineNo">4431</span>    p.addColumn(FAMILY, COLUMN, Bytes.toBytes(5));<a name="line.4431"></a>
-<span class="sourceLineNo">4432</span>    ht.put(p);<a name="line.4432"></a>
-<span class="sourceLineNo">4433</span>    try {<a name="line.4433"></a>
-<span class="sourceLineNo">4434</span>      ht.incrementColumnValue(ROW, FAMILY, COLUMN, 5);<a name="line.4434"></a>
-<span class="sourceLineNo">4435</span>      fail("Should have thrown DoNotRetryIOException");<a name="line.4435"></a>
-<span class="sourceLineNo">4436</span>    } catch (DoNotRetryIOException iox) {<a name="line.4436"></a>
-<span class="sourceLineNo">4437</span>      // success<a name="line.4437"></a>
-<span class="sourceLineNo">4438</span>    }<a name="line.4438"></a>
-<span class="sourceLineNo">4439</span>    Increment inc = new Increment(ROW);<a name="line.4439"></a>
-<span class="sourceLineNo">4440</span>    inc.addColumn(FAMILY, COLUMN, 5);<a name="line.4440"></a>
-<span class="sourceLineNo">4441</span>    try {<a name="line.4441"></a>
-<span class="sourceLineNo">4442</span>      ht.increment(inc);<a name="line.4442"></a>
-<span class="sourceLineNo">4443</span>      fail("Should have thrown DoNotRetryIOException");<a name="line.4443"></a>
-<span class="sourceLineNo">4444</span>    } catch (DoNotRetryIOException iox) {<a name="line.4444"></a>
-<span class="sourceLineNo">4445</span>      // success<a name="line.4445"></a>
-<span class="sourceLineNo">4446</span>    }<a name="line.4446"></a>
-<span class="sourceLineNo">4447</span>  }<a name="line.4447"></a>
+<span class="sourceLineNo">4423</span>      Result result = table.get(get);<a name="line.4423"></a>
+<span class="sourceLineNo">4424</span>      NavigableMap&lt;Long, byte[]&gt; navigableMap = result.getMap().get(FAMILY)<a name="line.4424"></a>
+<span class="sourceLineNo">4425</span>          .get(QUALIFIER);<a name="line.4425"></a>
+<span class="sourceLineNo">4426</span><a name="line.4426"></a>
+<span class="sourceLineNo">4427</span>      assertEquals("The number of versions of '" + FAMILY + ":" + QUALIFIER<a name="line.4427"></a>
+<span class="sourceLineNo">4428</span>          + " did not match " + versions, versions, navigableMap.size());<a name="line.4428"></a>
+<span class="sourceLineNo">4429</span>      for (Map.Entry&lt;Long, byte[]&gt; entry : navigableMap.entrySet()) {<a name="line.4429"></a>
+<span class="sourceLineNo">4430</span>        assertTrue("The value at time " + entry.getKey()<a name="line.4430"></a>
+<span class="sourceLineNo">4431</span>            + " did not match what was put",<a name="line.4431"></a>
+<span class="sourceLineNo">4432</span>            Bytes.equals(VALUE, entry.getValue()));<a name="line.4432"></a>
+<span class="sourceLineNo">4433</span>      }<a name="line.4433"></a>
+<span class="sourceLineNo">4434</span>    }<a name="line.4434"></a>
+<span class="sourceLineNo">4435</span>  }<a name="line.4435"></a>
+<span class="sourceLineNo">4436</span><a name="line.4436"></a>
+<span class="sourceLineNo">4437</span>  @Ignore ("Flakey: HBASE-8989") @Test<a name="line.4437"></a>
+<span class="sourceLineNo">4438</span>  public void testClientPoolThreadLocal() throws IOException {<a name="line.4438"></a>
+<span class="sourceLineNo">4439</span>    final TableName tableName = TableName.valueOf("testClientPoolThreadLocal");<a name="line.4439"></a>
+<span class="sourceLineNo">4440</span><a name="line.4440"></a>
+<span class="sourceLineNo">4441</span>    int poolSize = Integer.MAX_VALUE;<a name="line.4441"></a>
+<span class="sourceLineNo">4442</span>    int numVersions = 3;<a name="line.4442"></a>
+<span class="sourceLineNo">4443</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.4443"></a>
+<span class="sourceLineNo">4444</span>    conf.set(HConstants.HBASE_CLIENT_IPC_POOL_TYPE, "thread-local");<a name="line.4444"></a>
+<span class="sourceLineNo">4445</span>    conf.setInt(HConstants.HBASE_CLIENT_IPC_POOL_SIZE, poolSize);<a name="line.4445"></a>
+<span class="sourceLineNo">4446</span><a name="line.4446"></a>
+<span class="sourceLineNo">4447</span>    final Table table = TEST_UTIL.createTable(tableName, new byte[][] { FAMILY },  3);<a name="line.4447"></a>
 <span class="sourceLineNo">4448</span><a name="line.4448"></a>
-<span class="sourceLineNo">4449</span>  @Test<a name="line.4449"></a>
-<span class="sourceLineNo">4450</span>  public void testIncrementInvalidArguments() throws Exception {<a name="line.4450"></a>
-<span class="sourceLineNo">4451</span>    LOG.info("Starting testIncrementInvalidArguments");<a name="line.4451"></a>
-<span class="sourceLineNo">4452</span>    final TableName TABLENAME = TableName.valueOf("testIncrementInvalidArguments");<a name="line.4452"></a>
-<span class="sourceLineNo">4453</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.4453"></a>
-<span class="sourceLineNo">4454</span>    final byte[] COLUMN = Bytes.toBytes("column");<a name="line.4454"></a>
-<span class="sourceLineNo">4455</span>    try {<a name="line.4455"></a>
-<span class="sourceLineNo">4456</span>      // try null row<a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>      ht.incrementColumnValue(null, FAMILY, COLUMN, 5);<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>      fail("Should have thrown IOException");<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>    } catch (IOException iox) {<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>      // success<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>    try {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>      // try null family<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      ht.incrementColumnValue(ROW, null, COLUMN, 5);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>      fail("Should have thrown IOException");<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>    } catch (IOException iox) {<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span>      // success<a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>    }<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>    try {<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>      // try null qualifier<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>      ht.incrementColumnValue(ROW, FAMILY, null, 5);<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>      fail("Should have thrown IOException");<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>    } catch (IOException iox) {<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>      // success<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>    }<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    // try null row<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>    try {<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>      Increment incNoRow = new Increment((byte [])null);<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>      incNoRow.addColumn(FAMILY, COLUMN, 5);<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>      fail("Should have thrown IllegalArgumentException");<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>    } catch (IllegalArgumentException iax) {<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // success<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>    } catch (NullPointerException npe) {<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      // success<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>    }<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>    // try null family<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>    try {<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>      Increment incNoFamily = new Increment(ROW);<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>      incNoFamily.addColumn(null, COLUMN, 5);<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>      fail("Should have thrown IllegalArgumentException");<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>    } catch (IllegalArgumentException iax) {<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>      // success<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>    }<a name="line.4493"></a>
-<span class="sourceLineNo">4494</span>    // try null qualifier<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>    try {<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span>      Increment incNoQualifier = new Increment(ROW);<a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>      incNoQualifier.addColumn(FAMILY, null, 5);<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>      fail("Should have thrown IllegalArgumentException");<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>    } catch (IllegalArgumentException iax) {<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>      // success<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>    }<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>  }<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span><a name="line.4503"></a>
-<span class="sourceLineNo">4504</span>  @Test<a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  public void testIncrementOutOfOrder() throws Exception {<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>    LOG.info("Starting testIncrementOutOfOrder");<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>    final TableName TABLENAME = TableName.valueOf("testIncrementOutOfOrder");<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span><a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>    byte [][] QUALIFIERS = new byte [][] {<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>      Bytes.toBytes("B"), Bytes.toBytes("A"), Bytes.toBytes("C")<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>    };<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span><a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>    Increment inc = new Increment(ROW);<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>    for (int i=0; i&lt;QUALIFIERS.length; i++) {<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>    }<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>    ht.increment(inc);<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span><a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>    // Verify expected results<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>    Result r = ht.get(new Get(ROW));<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>    Cell [] kvs = r.rawCells();<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>    assertEquals(3, kvs.length);<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[1], 1);<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[0], 1);<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 1);<a name="line.4526"></a>
+<span class="sourceLineNo">4449</span>    final long ts = EnvironmentEdgeManager.currentTime();<a name="line.4449"></a>
+<span class="sourceLineNo">4450</span>    final Get get = new Get(ROW);<a name="line.4450"></a>
+<span class="sourceLineNo">4451</span>    get.addColumn(FAMILY, QUALIFIER);<a name="line.4451"></a>
+<span class="sourceLineNo">4452</span>    get.setMaxVersions();<a name="line.4452"></a>
+<span class="sourceLineNo">4453</span><a name="line.4453"></a>
+<span class="sourceLineNo">4454</span>    for (int versions = 1; versions &lt;= numVersions; versions++) {<a name="line.4454"></a>
+<span class="sourceLineNo">4455</span>      Put put = new Put(ROW);<a name="line.4455"></a>
+<span class="sourceLineNo">4456</span>      put.addColumn(FAMILY, QUALIFIER, ts + versions, VALUE);<a name="line.4456"></a>
+<span class="sourceLineNo">4457</span>      table.put(put);<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span><a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>      Result result = table.get(get);<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      NavigableMap&lt;Long, byte[]&gt; navigableMap = result.getMap().get(FAMILY)<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>          .get(QUALIFIER);<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span><a name="line.4462"></a>
+<span class="sourceLineNo">4463</span>      assertEquals("The number of versions of '" + FAMILY + ":" + QUALIFIER + " did not match " +<a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>        versions + "; " + put.toString() + ", " + get.toString(), versions, navigableMap.size());<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      for (Map.Entry&lt;Long, byte[]&gt; entry : navigableMap.entrySet()) {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>        assertTrue("The value at time " + entry.getKey()<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>            + " did not match what was put",<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>            Bytes.equals(VALUE, entry.getValue()));<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>      }<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>    }<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span><a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>    final Object waitLock = new Object();<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    ExecutorService executorService = Executors.newFixedThreadPool(numVersions);<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>    final AtomicReference&lt;AssertionError&gt; error = new AtomicReference&lt;AssertionError&gt;(null);<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span>    for (int versions = numVersions; versions &lt; numVersions * 2; versions++) {<a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>      final int versionsCopy = versions;<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>      executorService.submit(new Callable&lt;Void&gt;() {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>        @Override<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>        public Void call() {<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>          try {<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>            Put put = new Put(ROW);<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>            put.addColumn(FAMILY, QUALIFIER, ts + versionsCopy, VALUE);<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span>            table.put(put);<a name="line.4483"></a>
+<span class="sourceLineNo">4484</span><a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>            Result result = table.get(get);<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>            NavigableMap&lt;Long, byte[]&gt; navigableMap = result.getMap()<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>                .get(FAMILY).get(QUALIFIER);<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span><a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>            assertEquals("The number of versions of '" + Bytes.toString(FAMILY) + ":"<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>                + Bytes.toString(QUALIFIER) + " did not match " + versionsCopy, versionsCopy,<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>                navigableMap.size());<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>            for (Map.Entry&lt;Long, byte[]&gt; entry : navigableMap.entrySet()) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>              assertTrue("The value at time " + entry.getKey()<a name="line.4493"></a>
+<span class="sourceLineNo">4494</span>                  + " did not match what was put",<a name="line.4494"></a>
+<span class="sourceLineNo">4495</span>                  Bytes.equals(VALUE, entry.getValue()));<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>            }<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>            synchronized (waitLock) {<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>              waitLock.wait();<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>            }<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>          } catch (Exception e) {<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>          } catch (AssertionError e) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>            // the error happens in a thread, it won't fail the test,<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>            // need to pass it to the caller for proper handling.<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>            error.set(e);<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>            LOG.error(e);<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          }<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span><a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>          return null;<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>        }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>      });<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>    }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span>    synchronized (waitLock) {<a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>      waitLock.notifyAll();<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>    }<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>    executorService.shutdownNow();<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>    assertNull(error.get());<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  }<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span><a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  @Test<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span>  public void testCheckAndPut() throws IOException {<a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>    final byte [] anotherrow = Bytes.toBytes("anotherrow");<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>    final byte [] value2 = Bytes.toBytes("abcd");<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span><a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>    Table table = TEST_UTIL.createTable(TableName.valueOf("testCheckAndPut"), FAMILY);<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>    Put put1 = new Put(ROW);<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>    put1.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.4526"></a>
 <span class="sourceLineNo">4527</span><a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>    // Now try multiple columns again<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>    inc = new Increment(ROW);<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>    for (int i=0; i&lt;QUALIFIERS.length; i++) {<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>    }<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>    ht.increment(inc);<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span><a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>    // Verify<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>    r = ht.get(new Get(ROW));<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>    kvs = r.rawCells();<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>    assertEquals(3, kvs.length);<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[1], 2);<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[0], 2);<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 2);<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>  }<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span><a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>  @Test<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>  public void testIncrementOnSameColumn() throws Exception {<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    LOG.info("Starting testIncrementOnSameColumn");<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    final TableName TABLENAME = TableName.valueOf("testIncrementOnSameColumn");<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.4548"></a>
+<span class="sourceLineNo">4528</span>    // row doesn't exist, so using non-null value should be considered "not match".<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>    boolean ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, VALUE, put1);<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>    assertEquals(ok, false);<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span><a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>    // row doesn't exist, so using "null" to check for existence should be considered "match".<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, null, put1);<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>    assertEquals(ok, true);<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span><a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>    // row now exists, so using "null" to check for existence should be considered "not match".<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, null, put1);<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>    assertEquals(ok, false);<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span><a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>    Put put2 = new Put(ROW);<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>    put2.addColumn(FAMILY, QUALIFIER, value2);<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span><a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>    // row now exists, use the matching value to check<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, VALUE, put2);<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>    assertEquals(ok, true);<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span><a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>    Put put3 = new Put(anotherrow);<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>    put3.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.4548"></a>
 <span class="sourceLineNo">4549</span><a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    byte[][] QUALIFIERS =<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>        new byte[][] { Bytes.toBytes("A"), Bytes.toBytes("B"), Bytes.toBytes("C") };<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span><a name="line.4552"></a>
-<span class="sourceLineNo">4553</span>    Increment inc = new Increment(ROW);<a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    for (int i = 0; i &lt; QUALIFIERS.length; i++) {<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    }<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>    ht.increment(inc);<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span><a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>    // Verify expected results<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>    Result r = ht.get(new Get(ROW));<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>    Cell[] kvs = r.rawCells();<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    assertEquals(3, kvs.length);<a name="line.4563"></a>
-<span class="sourceLineNo">4564</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[0], 1);<a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[1], 1);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 1);<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span><a name="line.4567"></a>
-<span class="sourceLineNo">4568</span>    // Now try multiple columns again<a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    inc = new Increment(ROW);<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>    for (int i = 0; i &lt; QUALIFIERS.length; i++) {<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    }<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    ht.increment(inc);<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span><a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>    // Verify<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>    r = ht.get(new Get(ROW));<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>    kvs = r.rawCells();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>    assertEquals(3, kvs.length);<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[0], 2);<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[1], 2);<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 2);<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span><a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>    ht.close();<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>  }<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span><a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>  @Test<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>  public void testIncrement() throws Exception {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>    LOG.info("Starting testIncrement");<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>    final TableName TABLENAME = TableName.valueOf("testIncrement");<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span><a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>    byte [][] ROWS = new byte [][] {<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>        Bytes.toBytes("a"), Bytes.toBytes("b"), Bytes.toBytes("c"),<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>        Bytes.toBytes("d"), Bytes.toBytes("e"), Bytes.toBytes("f"),<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        Bytes.toBytes("g"), Bytes.toBytes("h"), Bytes.toBytes("i")<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>    };<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>    byte [][] QUALIFIERS = new byte [][] {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>        Bytes.toBytes("a"), Bytes.toBytes("b"), Bytes.toBytes("c"),<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        Bytes.toBytes("d"), Bytes.toBytes("e"), Bytes.toBytes("f"),<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>        Bytes.toBytes("g"), Bytes.toBytes("h"), Bytes.toBytes("i")<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    };<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span><a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>    // Do some simple single-column increments<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>    // First with old API<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>    ht.incrementColumnValue(ROW, FAMILY, QUALIFIERS[0], 1);<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>    ht.incrementColumnValue(ROW, FAMILY, QUALIFIERS[1], 2);<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    ht.incrementColumnValue(ROW, FAMILY, QUALIFIERS[2], 3);<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    ht.incrementColumnValue(ROW, FAMILY, QUALIFIERS[3], 4);<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span><a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>    // Now increment things incremented with old and do some new<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    Increment inc = new Increment(ROW);<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span>    inc.addColumn(FAMILY, QUALIFIERS[1], 1);<a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    inc.addColumn(FAMILY, QUALIFIERS[3], 1);<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>    inc.addColumn(FAMILY, QUALIFIERS[4], 1);<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    ht.increment(inc);<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    // Verify expected results<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>    Result r = ht.get(new Get(ROW));<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>    Cell [] kvs = r.rawCells();<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>    assertEquals(5, kvs.length);<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[0], 1);<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[1], 3);<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 3);<a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>    assertIncrementKey(kvs[3], ROW, FAMILY, QUALIFIERS[3], 5);<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>    assertIncrementKey(kvs[4], ROW, FAMILY, QUALIFIERS[4], 1);<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span><a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>    // Now try multiple columns by different amounts<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>    inc = new Increment(ROWS[0]);<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>    for (int i=0;i&lt;QUALIFIERS.length;i++) {<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>      inc.addColumn(FAMILY, QUALIFIERS[i], i+1);<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>    ht.increment(inc);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>    // Verify<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>    r = ht.get(new Get(ROWS[0]));<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>    kvs = r.rawCells();<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span>    assertEquals(QUALIFIERS.length, kvs.length);<a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>    for (int i=0;i&lt;QUALIFIERS.length;i++) {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>      assertIncrementKey(kvs[i], ROWS[0], FAMILY, QUALIFIERS[i], i+1);<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>    }<a name="line.4641"></a>
+<span class="sourceLineNo">4550</span>    // try to do CheckAndPut on different rows<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>    try {<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>        ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, value2, put3);<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>        fail("trying to check and modify different rows should have failed.");<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>    } catch(Exception e) {}<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span><a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>  }<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span><a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>  @Test<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>  public void testCheckAndPutWithCompareOp() throws IOException {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>    final byte [] value1 = Bytes.toBytes("aaaa");<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>    final byte [] value2 = Bytes.toBytes("bbbb");<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    final byte [] value3 = Bytes.toBytes("cccc");<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    final byte [] value4 = Bytes.toBytes("dddd");<a name="line.4563"></a>
+<span class="sourceLineNo">4564</span><a name="line.4564"></a>
+<span class="sourceLineNo">4565</span>    Table table = TEST_UTIL.createTable(TableName.valueOf("testCheckAndPutWithCompareOp"), FAMILY);<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span><a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Put put2 = new Put(ROW);<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    put2.addColumn(FAMILY, QUALIFIER, value2);<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    Put put3 = new Put(ROW);<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    put3.addColumn(FAMILY, QUALIFIER, value3);<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span><a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    // row doesn't exist, so using "null" to check for existence should be considered "match".<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>    boolean ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, null, put2);<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>    assertEquals(ok, true);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span><a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>    // cell = "bbbb", using "aaaa" to compare only LESS/LESS_OR_EQUAL/NOT_EQUAL<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>    // turns out "match"<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.GREATER, value1, put2);<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span>    assertEquals(ok, false);<a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.EQUAL, value1, put2);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    assertEquals(ok, false);<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.GREATER_OR_EQUAL, value1, put2);<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span>    assertEquals(ok, false);<a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.LESS, value1, put2);<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>    assertEquals(ok, true);<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.LESS_OR_EQUAL, value1, put2);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    assertEquals(ok, true);<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value1, put3);<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    assertEquals(ok, true);<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span><a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>    // cell = "cccc", using "dddd" to compare only LARGER/LARGER_OR_EQUAL/NOT_EQUAL<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>    // turns out "match"<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.LESS, value4, put3);<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>    assertEquals(ok, false);<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.LESS_OR_EQUAL, value4, put3);<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>    assertEquals(ok, false);<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.EQUAL, value4, put3);<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>    assertEquals(ok, false);<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.GREATER, value4, put3);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    assertEquals(ok, true);<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.GREATER_OR_EQUAL, value4, put3);<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>    assertEquals(ok, true);<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value4, put2);<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>    assertEquals(ok, true);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span><a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>    // cell = "bbbb", using "bbbb" to compare only GREATER_OR_EQUAL/LESS_OR_EQUAL/EQUAL<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>    // turns out "match"<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.GREATER, value2, put2);<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>    assertEquals(ok, false);<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value2, put2);<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>    assertEquals(ok, false);<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.LESS, value2, put2);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>    assertEquals(ok, false);<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.GREATER_OR_EQUAL, value2, put2);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>    assertEquals(ok, true);<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.LESS_OR_EQUAL, value2, put2);<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    assertEquals(ok, true);<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.EQUAL, value2, put3);<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>    assertEquals(ok, true);<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span>  }<a name="line.4621"></a>
+<span class="sourceLineNo">4622</span><a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>  @Test<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>  public void testCheckAndDeleteWithCompareOp() throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    final byte [] value1 = Bytes.toBytes("aaaa");<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    final byte [] value2 = Bytes.toBytes("bbbb");<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>    final byte [] value3 = Bytes.toBytes("cccc");<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>    final byte [] value4 = Bytes.toBytes("dddd");<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span><a name="line.4629"></a>
+<span class="sourceLineNo">4630</span>    Table table = TEST_UTIL.createTable(TableName.valueOf("testCheckAndDeleteWithCompareOp"),<a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>        FAMILY);<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span><a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    Put put2 = new Put(ROW);<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span>    put2.addColumn(FAMILY, QUALIFIER, value2);<a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    table.put(put2);<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span><a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>    Put put3 = new Put(ROW);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>    put3.addColumn(FAMILY, QUALIFIER, value3);<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span><a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>    Delete delete = new Delete(ROW);<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span>    delete.addColumns(FAMILY, QUALIFIER);<a name="line.4641"></a>
 <span class="sourceLineNo">4642</span><a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>    // Re-increment them<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>    inc = new Increment(ROWS[0]);<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>    for (int i=0;i&lt;QUALIFIERS.length;i++) {<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>      inc.addColumn(FAMILY, QUALIFIERS[i], i+1);<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>    }<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>    ht.increment(inc);<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>    // Verify<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>    r = ht.get(new Get(ROWS[0]));<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>    kvs = r.rawCells();<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>    assertEquals(QUALIFIERS.length, kvs.length);<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>    for (int i=0;i&lt;QUALIFIERS.length;i++) {<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>      assertIncrementKey(kvs[i], ROWS[0], FAMILY, QUALIFIERS[i], 2*(i+1));<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>    }<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>  }<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span><a name="line.4657"></a>
-<span class="sourceLineNo">4658</span><a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>  @Test<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>  public void testClientPoolRoundRobin() throws IOException {<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>    final TableName tableName = TableName.valueOf("testClientPoolRoundRobin");<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span><a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    int poolSize = 3;<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    int numVersions = poolSize * 2;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span>    conf.set(HConstants.HBASE_CLIENT_IPC_POOL_TYPE, "round-robin");<a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>    conf.setInt(HConstants.HBASE_CLIENT_IPC_POOL_SIZE, poolSize);<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span><a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>    Table table = TEST_UTIL.createTable(tableName, new byte[][] { FAMILY }, Integer.MAX_VALUE);<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span><a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>    final long ts = EnvironmentEdgeManager.currentTime();<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>    Get get = new Get(ROW);<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>    get.addColumn(FAMILY, QUALIFIER);<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>    get.setMaxVersions();<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span><a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>    for (int versions = 1; versions &lt;= numVersions; versions++) {<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Put put = new Put(ROW);<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>      put.addColumn(FAMILY, QUALIFIER, ts + versions, VALUE);<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>      table.put(put);<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span><a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>      Result result = table.get(get);<a name="line.4681"></a>
-<span class="sourceLineNo">4682</span>      NavigableMap&lt;Long, byte[]&gt; navigableMap = result.getMap().get(FAMILY)<a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>          .get(QUALIFIER);<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span><a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>      assertEquals("The number of versions of '" + FAMILY + ":" + QUALIFIER<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>          + " did not match " + versions, versions, navigableMap.size());<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      for (Map.Entry&lt;Long, byte[]&gt; entry : navigableMap.entrySet()) {<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>        assertTrue("The value at time " + entry.getKey()<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>            + " did not match what was put",<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>            Bytes.equals(VALUE, entry.getValue()));<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      }<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>    }<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>  }<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span><a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>  @Ignore ("Flakey: HBASE-8989") @Test<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>  public void testClientPoolThreadLocal() throws IOException {<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span>    final TableName tableName = TableName.valueOf("testClientPoolThreadLocal");<a name="line.4697"></a>
-<span class="sourceLineNo">4698</span><a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>    int poolSize = Integer.MAX_VALUE;<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>    int numVersions = 3;<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>    conf.set(HConstants.HBASE_CLIENT_IPC_POOL_TYPE, "thread-local");<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>    conf.setInt(HConstants.HBASE_CLIENT_IPC_POOL_SIZE, poolSize);<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>    final Table table = TEST_UTIL.createTable(tableName, new byte[][] { FAMILY },  3);<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span><a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>    final long ts = EnvironmentEdgeManager.currentTime();<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span>    final Get get = new Get(ROW);<a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>    get.addColumn(FAMILY, QUALIFIER);<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>    get.setMaxVersions();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span><a name="line.4711"></a>
-<span class="sourceLineNo">4712</span>    for (int versions = 1; versions &lt;= numVersions; versions++) {<a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>      Put put = new Put(ROW);<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>      put.addColumn(FAMILY, QUALIFIER, ts + versions, VALUE);<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>      table.put(put);<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>      Result result = table.get(get);<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>      NavigableMap&lt;Long, byte[]&gt; navigableMap = result.getMap().get(FAMILY)<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>          .get(QUALIFIER);<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span><a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>      assertEquals("The number of versions of '" + FAMILY + ":" + QUALIFIER + " did not match " +<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>        versions + "; " + put.toString() + ", " + get.toString(), versions, navigableMap.size());<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>      for (Map.Entry&lt;Long, byte[]&gt; entry : navigableMap.entrySet()) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>        assertTrue("The value at time " + entry.getKey()<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>            + " did not match what was put",<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>            Bytes.equals(VALUE, entry.getValue()));<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>      }<a name="line.4727"></a>
+<span class="sourceLineNo">4643</span>    // cell = "bbbb", using "aaaa" to compare only LESS/LESS_OR_EQUAL/NOT_EQUAL<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>    // turns out "match"<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>    boolean ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.GREATER, value1, delete);<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>    assertEquals(ok, false);<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.EQUAL, value1, delete);<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>    assertEquals(ok, false);<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.GREATER_OR_EQUAL, value1, delete);<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>    assertEquals(ok, false);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.LESS, value1, delete);<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>    assertEquals(ok, true);<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>    table.put(put2);<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.LESS_OR_EQUAL, value1, delete);<a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>    assertEquals(ok, true);<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>    table.put(put2);<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value1, delete);<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>    assertEquals(ok, true);<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span><a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>    // cell = "cccc", using "dddd" to compare only LARGER/LARGER_OR_EQUAL/NOT_EQUAL<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>    // turns out "match"<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>    table.put(put3);<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.LESS, value4, delete);<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>    assertEquals(ok, false);<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.LESS_OR_EQUAL, value4, delete);<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>    assertEquals(ok, false);<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.EQUAL, value4, delete);<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>    assertEquals(ok, false);<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.GREATER, value4, delete);<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>    assertEquals(ok, true);<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>    table.put(put3);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.GREATER_OR_EQUAL, value4, delete);<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>    assertEquals(ok, true);<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>    table.put(put3);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value4, delete);<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>    assertEquals(ok, true);<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span><a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>    // cell = "bbbb", using "bbbb" to compare only GREATER_OR_EQUAL/LESS_OR_EQUAL/EQUAL<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    // turns out "match"<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    table.put(put2);<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.GREATER, value2, delete);<a name="line.4681"></a>
+<span class="sourceLineNo">4682</span>    assertEquals(ok, false);<a name="line.4682"></a>
+<span class="sourceLineNo">4683</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value2, delete);<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>    assertEquals(ok, false);<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.LESS, value2, delete);<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>    assertEquals(ok, false);<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.GREATER_OR_EQUAL, value2, delete);<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>    assertEquals(ok, true);<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>    table.put(put2);<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.LESS_OR_EQUAL, value2, delete);<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>    assertEquals(ok, true);<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>    table.put(put2);<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.EQUAL, value2, delete);<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    assertEquals(ok, true);<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>  }<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span><a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>  /**<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span>  * Test ScanMetrics<a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>  * @throws Exception<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>  */<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>  @Test<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>  @SuppressWarnings ("unused")<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>  public void testScanMetrics() throws Exception {<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>    TableName TABLENAME = TableName.valueOf("testScanMetrics");<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span><a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>    // Set up test table:<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>    // Create table:<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>    Table ht = TEST_UTIL.createMultiRegionTable(TABLENAME, FAMILY);<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>    int numOfRegions = -1;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>    try (RegionLocator r = TEST_UTIL.getConnection().getRegionLocator(TABLENAME)) {<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      numOfRegions = r.getStartKeys().length;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>    }<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span>    // Create 3 rows in the table, with rowkeys starting with "zzz*" so that<a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>    // scan are forced to hit all the regions.<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>    Put put1 = new Put(Bytes.toBytes("zzz1"));<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>    put1.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>    Put put2 = new Put(Bytes.toBytes("zzz2"));<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>    put2.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>    Put put3 = new Put(Bytes.toBytes("zzz3"));<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span>    put3.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>    ht.put(Arrays.asList(put1, put2, put3));<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span><a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>    Scan scan1 = new Scan();<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span>    int numRecords = 0;<a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>    ResultScanner scanner = ht.getScanner(scan1);<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>    for(Result result : scanner) {<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>      numRecords++;<a name="line.4727"></a>
 <span class="sourceLineNo">4728</span>    }<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span><a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>    final Object waitLock = new Object();<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>    ExecutorService executorService = Executors.newFixedThreadPool(numVersions);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>    final AtomicReference&lt;AssertionError&gt; error = new AtomicReference&lt;AssertionError&gt;(null);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>    for (int versions = numVersions; versions &lt; numVersions * 2; versions++) {<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>      final int versionsCopy = versions;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>      executorService.submit(new Callable&lt;Void&gt;() {<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>        @Override<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>        public Void call() {<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          try {<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span>            Put put = new Put(ROW);<a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>            put.addColumn(FAMILY, QUALIFIER, ts + versionsCopy, VALUE);<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            table.put(put);<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span><a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>            Result result = table.get(get);<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            NavigableMap&lt;Long, byte[]&gt; navigableMap = result.getMap()<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>                .get(FAMILY).get(QUALIFIER);<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span><a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>            assertEquals("The number of versions of '" + Bytes.toString(FAMILY) + ":"<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + Bytes.toString(QUALIFIER) + " did not match " + versionsCopy, versionsCopy,<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>                navigableMap.size());<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            for (Map.Entry&lt;Long, byte[]&gt; entry : navigableMap.entrySet()) {<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>              assertTrue("The value at time " + entry.getKey()<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>                  + " did not match what was put",<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>                  Bytes.equals(VALUE, entry.getValue()));<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span>            }<a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>            synchronized (waitLock) {<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>              waitLock.wait();<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>            }<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>          } catch (Exception e) {<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>          } catch (AssertionError e) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>            // the error happens in a thread, it won't fail the test,<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>            // need to pass it to the caller for proper handling.<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            error.set(e);<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>            LOG.error(e);<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          }<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span><a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          return null;<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>        }<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>      });<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>    }<a name="line.4769"></a>
-<span class="sourceLineNo">4770</span>    synchronized (waitLock) {<a name="line.4770"></a>


<TRUNCATED>

[24/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html
index 9def951..bb4f7f3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.551">TestAtomicOperation.AtomicOperation</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.555">TestAtomicOperation.AtomicOperation</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
 </li>
 </ul>
@@ -233,7 +233,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>protected final&nbsp;org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.552">region</a></pre>
+<pre>protected final&nbsp;org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.556">region</a></pre>
 </li>
 </ul>
 <a name="numOps">
@@ -242,7 +242,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>numOps</h4>
-<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.553">numOps</a></pre>
+<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.557">numOps</a></pre>
 </li>
 </ul>
 <a name="timeStamps">
@@ -251,7 +251,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>timeStamps</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.554">timeStamps</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.558">timeStamps</a></pre>
 </li>
 </ul>
 <a name="failures">
@@ -260,7 +260,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>failures</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.555">failures</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.559">failures</a></pre>
 </li>
 </ul>
 <a name="r">
@@ -269,7 +269,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>r</h4>
-<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.556">r</a></pre>
+<pre>protected final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.560">r</a></pre>
 </li>
 </ul>
 </li>
@@ -286,7 +286,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAtomicOperation.AtomicOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.558">TestAtomicOperation.AtomicOperation</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.AtomicOperation.html#line.562">TestAtomicOperation.AtomicOperation</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
                                    int&nbsp;numOps,
                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a>&nbsp;timeStamps,
                                    <a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a>&nbsp;failures)</pre>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html
index 3539a00..f6e0e61 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html
@@ -108,9 +108,10 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.259">TestAtomicOperation.Incrementer</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.264">TestAtomicOperation.Incrementer</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
-<div class="block">A thread that makes a few increment calls</div>
+<div class="block">A thread that makes increment calls always on the same row, this.row against two column
+ families on this row.</div>
 </li>
 </ul>
 </div>
@@ -237,7 +238,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.261">region</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.Region <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.266">region</a></pre>
 </li>
 </ul>
 <a name="numIncrements">
@@ -246,7 +247,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>numIncrements</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.262">numIncrements</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.267">numIncrements</a></pre>
 </li>
 </ul>
 <a name="amount">
@@ -255,7 +256,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>amount</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.263">amount</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.268">amount</a></pre>
 </li>
 </ul>
 </li>
@@ -272,7 +273,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAtomicOperation.Incrementer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.266">TestAtomicOperation.Incrementer</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.271">TestAtomicOperation.Incrementer</a>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
                                int&nbsp;threadNumber,
                                int&nbsp;amount,
                                int&nbsp;numIncrements)</pre>
@@ -292,7 +293,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.276">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#line.280">run</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true#run()" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html
index 133a904..eb4765b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html#line.672">TestAtomicOperation.MockHRegion.WrappedRowLock</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html#line.676">TestAtomicOperation.MockHRegion.WrappedRowLock</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.hbase.regionserver.Region.RowLock</pre>
 </li>
@@ -194,7 +194,7 @@ implements org.apache.hadoop.hbase.regionserver.Region.RowLock</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>rowLock</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.Region.RowLock <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html#line.674">rowLock</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.Region.RowLock <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html#line.678">rowLock</a></pre>
 </li>
 </ul>
 </li>
@@ -211,7 +211,7 @@ implements org.apache.hadoop.hbase.regionserver.Region.RowLock</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAtomicOperation.MockHRegion.WrappedRowLock</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html#line.676">TestAtomicOperation.MockHRegion.WrappedRowLock</a>(org.apache.hadoop.hbase.regionserver.Region.RowLock&nbsp;rowLock)</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html#line.680">TestAtomicOperation.MockHRegion.WrappedRowLock</a>(org.apache.hadoop.hbase.regionserver.Region.RowLock&nbsp;rowLock)</pre>
 </li>
 </ul>
 </li>
@@ -228,7 +228,7 @@ implements org.apache.hadoop.hbase.regionserver.Region.RowLock</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>release</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html#line.682">release</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html#line.686">release</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>release</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.Region.RowLock</code></dd>

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html
index d3da2f5..55b98ad 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html
@@ -128,7 +128,8 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <tr class="altColor">
 <td class="colFirst"><code>static class&nbsp;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.Incrementer</a></strong></code>
-<div class="block">A thread that makes a few increment calls</div>
+<div class="block">A thread that makes increment calls always on the same row, this.row against two column
+ families on this row.</div>
 </td>
 </tr>
 <tr class="rowColor">
@@ -252,10 +253,11 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#assertICV(byte[],%20byte[],%20byte[],%20long)">assertICV</a></strong>(byte[]&nbsp;row,
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#assertICV(byte[],%20byte[],%20byte[],%20long,%20boolean)">assertICV</a></strong>(byte[]&nbsp;row,
                   byte[]&nbsp;familiy,
                   byte[]&nbsp;qualifier,
-                  long&nbsp;amount)</code>&nbsp;</td>
+                  long&nbsp;amount,
+                  boolean&nbsp;fast)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
@@ -457,7 +459,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>latch</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.567">latch</a></pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.571">latch</a></pre>
 </li>
 </ul>
 <a name="testStep">
@@ -466,7 +468,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testStep</h4>
-<pre>private static volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.576">testStep</a></pre>
+<pre>private static volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.TestStep</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.580">testStep</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -475,7 +477,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>family</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.577">family</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.581">family</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestAtomicOperation.family">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -576,16 +578,17 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
 </li>
 </ul>
-<a name="assertICV(byte[], byte[], byte[], long)">
+<a name="assertICV(byte[], byte[], byte[], long, boolean)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>assertICV</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.221">assertICV</a>(byte[]&nbsp;row,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.223">assertICV</a>(byte[]&nbsp;row,
              byte[]&nbsp;familiy,
              byte[]&nbsp;qualifier,
-             long&nbsp;amount)
+             long&nbsp;amount,
+             boolean&nbsp;fast)
                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -597,7 +600,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.236">initHRegion</a>(byte[]&nbsp;tableName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.240">initHRegion</a>(byte[]&nbsp;tableName,
                <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
                byte[]...&nbsp;families)
                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -611,7 +614,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.242">initHRegion</a>(byte[]&nbsp;tableName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.246">initHRegion</a>(byte[]&nbsp;tableName,
                <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
                int[]&nbsp;maxVersions,
                byte[]...&nbsp;families)
@@ -626,7 +629,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAppendMultiThreads</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.306">testAppendMultiThreads</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.310">testAppendMultiThreads</a>()
                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -638,7 +641,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRowMutationMultiThreads</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.368">testRowMutationMultiThreads</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.372">testRowMutationMultiThreads</a>()
                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test multi-threaded row mutations.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -651,7 +654,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMultiRowMutationMultiThreads</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.459">testMultiRowMutationMultiThreads</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.463">testMultiRowMutationMultiThreads</a>()
                                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test multi-threaded region mutations.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -664,7 +667,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testPutAndCheckAndPutInParallel</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.586">testPutAndCheckAndPutInParallel</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#line.590">testPutAndCheckAndPutInParallel</a>()
                                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test written as a verifier for HBASE-7051, CheckAndPut should properly read
  MVCC. 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
index 89629ef..fbac21c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.6055">TestHRegion.HRegionWithSeqId</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.6056">TestHRegion.HRegionWithSeqId</a>
 extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 </li>
 </ul>
@@ -227,7 +227,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegion</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestHRegion.HRegionWithSeqId</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html#line.6056">TestHRegion.HRegionWithSeqId</a>(org.apache.hadoop.fs.Path&nbsp;tableDir,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html#line.6057">TestHRegion.HRegionWithSeqId</a>(org.apache.hadoop.fs.Path&nbsp;tableDir,
                             org.apache.hadoop.hbase.wal.WAL&nbsp;wal,
                             org.apache.hadoop.fs.FileSystem&nbsp;fs,
                             org.apache.hadoop.conf.Configuration&nbsp;confParam,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html
index 3e5a0f9..0f69036 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegion.html
@@ -2437,7 +2437,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyData</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5016">verifyData</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;newReg,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5017">verifyData</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;newReg,
               int&nbsp;startRow,
               int&nbsp;numRows,
               byte[]&nbsp;qf,
@@ -2453,7 +2453,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>assertGet</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5035">assertGet</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5036">assertGet</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
              byte[]&nbsp;family,
              byte[]&nbsp;k)
                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -2467,7 +2467,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>assertScan</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5057">assertScan</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5058">assertScan</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
               byte[]&nbsp;fs,
               byte[]&nbsp;firstValue)
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -2481,7 +2481,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlushResult</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5090">testFlushResult</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5091">testFlushResult</a>()
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test that we get the expected flush results back</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -2494,7 +2494,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>initSplit</h4>
-<pre>private&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5121">initSplit</a>()</pre>
+<pre>private&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5122">initSplit</a>()</pre>
 </li>
 </ul>
 <a name="initHRegion(org.apache.hadoop.hbase.TableName, java.lang.String, org.apache.hadoop.conf.Configuration, byte[]...)">
@@ -2503,7 +2503,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5148">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>private static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5149">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
                                                        org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                        byte[]...&nbsp;families)
@@ -2521,7 +2521,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5163">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>private static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5164">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
                                                        org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                        boolean&nbsp;isReadOnly,
@@ -2540,7 +2540,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5168">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5169">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                        byte[]&nbsp;startKey,
                                                        byte[]&nbsp;stopKey,
                                                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
@@ -2558,7 +2558,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5190">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5191">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                        byte[]&nbsp;startKey,
                                                        byte[]&nbsp;stopKey,
                                                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
@@ -2581,7 +2581,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>checkOneCell</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5201">checkOneCell</a>(org.apache.hadoop.hbase.Cell&nbsp;kv,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5202">checkOneCell</a>(org.apache.hadoop.hbase.Cell&nbsp;kv,
                 byte[]&nbsp;cf,
                 int&nbsp;rowIdx,
                 int&nbsp;colIdx,
@@ -2596,7 +2596,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_FromMemStore_SingleCF_Normal</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5215">testReverseScanner_FromMemStore_SingleCF_Normal</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5216">testReverseScanner_FromMemStore_SingleCF_Normal</a>()
                                                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2608,7 +2608,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_FromMemStore_SingleCF_LargerKey</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5274">testReverseScanner_FromMemStore_SingleCF_LargerKey</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5275">testReverseScanner_FromMemStore_SingleCF_LargerKey</a>()
                                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2620,7 +2620,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_FromMemStore_SingleCF_FullScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5334">testReverseScanner_FromMemStore_SingleCF_FullScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5335">testReverseScanner_FromMemStore_SingleCF_FullScan</a>()
                                                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2632,7 +2632,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_moreRowsMayExistAfter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5391">testReverseScanner_moreRowsMayExistAfter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5392">testReverseScanner_moreRowsMayExistAfter</a>()
                                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2644,7 +2644,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_smaller_blocksize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5473">testReverseScanner_smaller_blocksize</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5474">testReverseScanner_smaller_blocksize</a>()
                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2656,7 +2656,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_FromMemStoreAndHFiles_MultiCFs1</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5557">testReverseScanner_FromMemStoreAndHFiles_MultiCFs1</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5558">testReverseScanner_FromMemStoreAndHFiles_MultiCFs1</a>()
                                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2668,7 +2668,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_FromMemStoreAndHFiles_MultiCFs2</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5725">testReverseScanner_FromMemStoreAndHFiles_MultiCFs2</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5726">testReverseScanner_FromMemStoreAndHFiles_MultiCFs2</a>()
                                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2680,7 +2680,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testReverseScanner_StackOverflow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5806">testReverseScanner_StackOverflow</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5807">testReverseScanner_StackOverflow</a>()
                                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test for HBASE-14497: Reverse Scan threw StackOverflow caused by readPt checking</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -2693,7 +2693,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSplitRegionWithReverseScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5861">testSplitRegionWithReverseScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5862">testSplitRegionWithReverseScan</a>()
                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2705,7 +2705,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testWriteRequestsCounter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5959">testWriteRequestsCounter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5960">testWriteRequestsCounter</a>()
                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -2717,7 +2717,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testOpenRegionWrittenToWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5985">testOpenRegionWrittenToWAL</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.5986">testOpenRegionWrittenToWAL</a>()
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -2865,7 +2865,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>initHRegion</h4>
-<pre>static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.6619">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>static&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.html#line.6621">initHRegion</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;callingMethod,
                                                        byte[]...&nbsp;families)
                                                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>


[18/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html
index 7892f01..aca2cbc 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html
@@ -56,77 +56,77 @@
 <span class="sourceLineNo">048</span>import org.apache.hadoop.conf.Configuration;<a name="line.48"></a>
 <span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.Cell;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.HConstants;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.KeepDeletedCells;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.RegionLocations;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.ServerName;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.TableName;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.Waiter;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.metrics.ScanMetrics;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.filter.CompareFilter;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.filter.FilterList;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.filter.InclusiveStopFilter;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.filter.KeyOnlyFilter;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.filter.LongComparator;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.filter.PrefixFilter;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.filter.QualifierFilter;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.filter.RegexStringComparator;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.filter.RowFilter;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.filter.WhileMatchFilter;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.protobuf.generated.AdminProtos;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto.MutationType;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MultiRowMutationService;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.log4j.AppenderSkeleton;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.log4j.Level;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.log4j.Logger;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.log4j.spi.LoggingEvent;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.junit.After;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.junit.AfterClass;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.junit.Before;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.junit.BeforeClass;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>import org.junit.Ignore;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>import org.junit.Test;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>import org.junit.experimental.categories.Category;<a name="line.113"></a>
-<span class="sourceLineNo">114</span>/**<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * Run tests that use the HBase clients; {@link Table}.<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * Sets up the HBase mini cluster once at start and runs through all client tests.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> * Each creates a table named for the method and does its stuff against that.<a name="line.117"></a>
-<span class="sourceLineNo">118</span> */<a name="line.118"></a>
-<span class="sourceLineNo">119</span>@Category({LargeTests.class, ClientTests.class})<a name="line.119"></a>
-<span class="sourceLineNo">120</span>@SuppressWarnings ("deprecation")<a name="line.120"></a>
-<span class="sourceLineNo">121</span>public class TestFromClientSide {<a name="line.121"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.HConstants;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.KeepDeletedCells;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.RegionLocations;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.ServerName;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.TableName;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.Waiter;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.client.metrics.ScanMetrics;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.filter.CompareFilter;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.filter.Filter;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.filter.FilterList;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.filter.InclusiveStopFilter;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.filter.KeyOnlyFilter;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.filter.LongComparator;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.filter.PrefixFilter;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.filter.QualifierFilter;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.filter.RegexStringComparator;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.filter.RowFilter;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.filter.WhileMatchFilter;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.ipc.CoprocessorRpcChannel;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.protobuf.generated.AdminProtos;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto.MutationType;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MultiRowMutationService;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.regionserver.Region;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.regionserver.Store;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>import org.apache.log4j.AppenderSkeleton;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>import org.apache.log4j.Level;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>import org.apache.log4j.Logger;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>import org.apache.log4j.spi.LoggingEvent;<a name="line.105"></a>
+<span class="sourceLineNo">106</span>import org.junit.After;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>import org.junit.AfterClass;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>import org.junit.Before;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>import org.junit.BeforeClass;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>import org.junit.Ignore;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>import org.junit.Test;<a name="line.111"></a>
+<span class="sourceLineNo">112</span>import org.junit.experimental.categories.Category;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>/**<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * Run tests that use the HBase clients; {@link Table}.<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * Sets up the HBase mini cluster once at start and runs through all client tests.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> * Each creates a table named for the method and does its stuff against that.<a name="line.116"></a>
+<span class="sourceLineNo">117</span> */<a name="line.117"></a>
+<span class="sourceLineNo">118</span>@Category({LargeTests.class, ClientTests.class})<a name="line.118"></a>
+<span class="sourceLineNo">119</span>@SuppressWarnings ("deprecation")<a name="line.119"></a>
+<span class="sourceLineNo">120</span>public class TestFromClientSide {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  // NOTE: Increment tests were moved to their own class, TestIncrementsFromClientSide.<a name="line.121"></a>
 <span class="sourceLineNo">122</span>  private static final Log LOG = LogFactory.getLog(TestFromClientSide.class);<a name="line.122"></a>
 <span class="sourceLineNo">123</span>  protected final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.123"></a>
 <span class="sourceLineNo">124</span>  private static byte [] ROW = Bytes.toBytes("testRow");<a name="line.124"></a>
@@ -3054,7 +3054,7 @@
 <span class="sourceLineNo">3046</span>        equals(value, CellUtil.cloneValue(key)));<a name="line.3046"></a>
 <span class="sourceLineNo">3047</span>  }<a name="line.3047"></a>
 <span class="sourceLineNo">3048</span><a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>  private void assertIncrementKey(Cell key, byte [] row, byte [] family,<a name="line.3049"></a>
+<span class="sourceLineNo">3049</span>  static void assertIncrementKey(Cell key, byte [] row, byte [] family,<a name="line.3049"></a>
 <span class="sourceLineNo">3050</span>      byte [] qualifier, long value)<a name="line.3050"></a>
 <span class="sourceLineNo">3051</span>  throws Exception {<a name="line.3051"></a>
 <span class="sourceLineNo">3052</span>    assertTrue("Expected row [" + Bytes.toString(row) + "] " +<a name="line.3052"></a>
@@ -3278,7 +3278,7 @@
 <span class="sourceLineNo">3270</span>    return stamps;<a name="line.3270"></a>
 <span class="sourceLineNo">3271</span>  }<a name="line.3271"></a>
 <span class="sourceLineNo">3272</span><a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>  private boolean equals(byte [] left, byte [] right) {<a name="line.3273"></a>
+<span class="sourceLineNo">3273</span>  static boolean equals(byte [] left, byte [] right) {<a name="line.3273"></a>
 <span class="sourceLineNo">3274</span>    if (left == null &amp;&amp; right == null) return true;<a name="line.3274"></a>
 <span class="sourceLineNo">3275</span>    if (left == null &amp;&amp; right.length == 0) return true;<a name="line.3275"></a>
 <span class="sourceLineNo">3276</span>    if (right == null &amp;&amp; left.length == 0) return true;<a name="line.3276"></a>
@@ -4407,2001 +4407,1743 @@
 <span class="sourceLineNo">4399</span>  }<a name="line.4399"></a>
 <span class="sourceLineNo">4400</span><a name="line.4400"></a>
 <span class="sourceLineNo">4401</span>  @Test<a name="line.4401"></a>
-<span class="sourceLineNo">4402</span>  public void testIncrementWithDeletes() throws Exception {<a name="line.4402"></a>
-<span class="sourceLineNo">4403</span>    LOG.info("Starting testIncrementWithDeletes");<a name="line.4403"></a>
-<span class="sourceLineNo">4404</span>    final TableName TABLENAME =<a name="line.4404"></a>
-<span class="sourceLineNo">4405</span>        TableName.valueOf("testIncrementWithDeletes");<a name="line.4405"></a>
-<span class="sourceLineNo">4406</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.4406"></a>
-<span class="sourceLineNo">4407</span>    final byte[] COLUMN = Bytes.toBytes("column");<a name="line.4407"></a>
-<span class="sourceLineNo">4408</span><a name="line.4408"></a>
-<span class="sourceLineNo">4409</span>    ht.incrementColumnValue(ROW, FAMILY, COLUMN, 5);<a name="line.4409"></a>
-<span class="sourceLineNo">4410</span>    TEST_UTIL.flush(TABLENAME);<a name="line.4410"></a>
-<span class="sourceLineNo">4411</span><a name="line.4411"></a>
-<span class="sourceLineNo">4412</span>    Delete del = new Delete(ROW);<a name="line.4412"></a>
-<span class="sourceLineNo">4413</span>    ht.delete(del);<a name="line.4413"></a>
-<span class="sourceLineNo">4414</span><a name="line.4414"></a>
-<span class="sourceLineNo">4415</span>    ht.incrementColumnValue(ROW, FAMILY, COLUMN, 5);<a name="line.4415"></a>
-<span class="sourceLineNo">4416</span><a name="line.4416"></a>
-<span class="sourceLineNo">4417</span>    Get get = new Get(ROW);<a name="line.4417"></a>
-<span class="sourceLineNo">4418</span>    Result r = ht.get(get);<a name="line.4418"></a>
-<span class="sourceLineNo">4419</span>    assertEquals(1, r.size());<a name="line.4419"></a>
-<span class="sourceLineNo">4420</span>    assertEquals(5, Bytes.toLong(r.getValue(FAMILY, COLUMN)));<a name="line.4420"></a>
-<span class="sourceLineNo">4421</span>  }<a name="line.4421"></a>
+<span class="sourceLineNo">4402</span>  public void testClientPoolRoundRobin() throws IOException {<a name="line.4402"></a>
+<span class="sourceLineNo">4403</span>    final TableName tableName = TableName.valueOf("testClientPoolRoundRobin");<a name="line.4403"></a>
+<span class="sourceLineNo">4404</span><a name="line.4404"></a>
+<span class="sourceLineNo">4405</span>    int poolSize = 3;<a name="line.4405"></a>
+<span class="sourceLineNo">4406</span>    int numVersions = poolSize * 2;<a name="line.4406"></a>
+<span class="sourceLineNo">4407</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.4407"></a>
+<span class="sourceLineNo">4408</span>    conf.set(HConstants.HBASE_CLIENT_IPC_POOL_TYPE, "round-robin");<a name="line.4408"></a>
+<span class="sourceLineNo">4409</span>    conf.setInt(HConstants.HBASE_CLIENT_IPC_POOL_SIZE, poolSize);<a name="line.4409"></a>
+<span class="sourceLineNo">4410</span><a name="line.4410"></a>
+<span class="sourceLineNo">4411</span>    Table table = TEST_UTIL.createTable(tableName, new byte[][] { FAMILY }, Integer.MAX_VALUE);<a name="line.4411"></a>
+<span class="sourceLineNo">4412</span><a name="line.4412"></a>
+<span class="sourceLineNo">4413</span>    final long ts = EnvironmentEdgeManager.currentTime();<a name="line.4413"></a>
+<span class="sourceLineNo">4414</span>    Get get = new Get(ROW);<a name="line.4414"></a>
+<span class="sourceLineNo">4415</span>    get.addColumn(FAMILY, QUALIFIER);<a name="line.4415"></a>
+<span class="sourceLineNo">4416</span>    get.setMaxVersions();<a name="line.4416"></a>
+<span class="sourceLineNo">4417</span><a name="line.4417"></a>
+<span class="sourceLineNo">4418</span>    for (int versions = 1; versions &lt;= numVersions; versions++) {<a name="line.4418"></a>
+<span class="sourceLineNo">4419</span>      Put put = new Put(ROW);<a name="line.4419"></a>
+<span class="sourceLineNo">4420</span>      put.addColumn(FAMILY, QUALIFIER, ts + versions, VALUE);<a name="line.4420"></a>
+<span class="sourceLineNo">4421</span>      table.put(put);<a name="line.4421"></a>
 <span class="sourceLineNo">4422</span><a name="line.4422"></a>
-<span class="sourceLineNo">4423</span>  @Test<a name="line.4423"></a>
-<span class="sourceLineNo">4424</span>  public void testIncrementingInvalidValue() throws Exception {<a name="line.4424"></a>
-<span class="sourceLineNo">4425</span>    LOG.info("Starting testIncrementingInvalidValue");<a name="line.4425"></a>
-<span class="sourceLineNo">4426</span>    final TableName TABLENAME = TableName.valueOf("testIncrementingInvalidValue");<a name="line.4426"></a>
-<span class="sourceLineNo">4427</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.4427"></a>
-<span class="sourceLineNo">4428</span>    final byte[] COLUMN = Bytes.toBytes("column");<a name="line.4428"></a>
-<span class="sourceLineNo">4429</span>    Put p = new Put(ROW);<a name="line.4429"></a>
-<span class="sourceLineNo">4430</span>    // write an integer here (not a Long)<a name="line.4430"></a>
-<span class="sourceLineNo">4431</span>    p.addColumn(FAMILY, COLUMN, Bytes.toBytes(5));<a name="line.4431"></a>
-<span class="sourceLineNo">4432</span>    ht.put(p);<a name="line.4432"></a>
-<span class="sourceLineNo">4433</span>    try {<a name="line.4433"></a>
-<span class="sourceLineNo">4434</span>      ht.incrementColumnValue(ROW, FAMILY, COLUMN, 5);<a name="line.4434"></a>
-<span class="sourceLineNo">4435</span>      fail("Should have thrown DoNotRetryIOException");<a name="line.4435"></a>
-<span class="sourceLineNo">4436</span>    } catch (DoNotRetryIOException iox) {<a name="line.4436"></a>
-<span class="sourceLineNo">4437</span>      // success<a name="line.4437"></a>
-<span class="sourceLineNo">4438</span>    }<a name="line.4438"></a>
-<span class="sourceLineNo">4439</span>    Increment inc = new Increment(ROW);<a name="line.4439"></a>
-<span class="sourceLineNo">4440</span>    inc.addColumn(FAMILY, COLUMN, 5);<a name="line.4440"></a>
-<span class="sourceLineNo">4441</span>    try {<a name="line.4441"></a>
-<span class="sourceLineNo">4442</span>      ht.increment(inc);<a name="line.4442"></a>
-<span class="sourceLineNo">4443</span>      fail("Should have thrown DoNotRetryIOException");<a name="line.4443"></a>
-<span class="sourceLineNo">4444</span>    } catch (DoNotRetryIOException iox) {<a name="line.4444"></a>
-<span class="sourceLineNo">4445</span>      // success<a name="line.4445"></a>
-<span class="sourceLineNo">4446</span>    }<a name="line.4446"></a>
-<span class="sourceLineNo">4447</span>  }<a name="line.4447"></a>
+<span class="sourceLineNo">4423</span>      Result result = table.get(get);<a name="line.4423"></a>
+<span class="sourceLineNo">4424</span>      NavigableMap&lt;Long, byte[]&gt; navigableMap = result.getMap().get(FAMILY)<a name="line.4424"></a>
+<span class="sourceLineNo">4425</span>          .get(QUALIFIER);<a name="line.4425"></a>
+<span class="sourceLineNo">4426</span><a name="line.4426"></a>
+<span class="sourceLineNo">4427</span>      assertEquals("The number of versions of '" + FAMILY + ":" + QUALIFIER<a name="line.4427"></a>
+<span class="sourceLineNo">4428</span>          + " did not match " + versions, versions, navigableMap.size());<a name="line.4428"></a>
+<span class="sourceLineNo">4429</span>      for (Map.Entry&lt;Long, byte[]&gt; entry : navigableMap.entrySet()) {<a name="line.4429"></a>
+<span class="sourceLineNo">4430</span>        assertTrue("The value at time " + entry.getKey()<a name="line.4430"></a>
+<span class="sourceLineNo">4431</span>            + " did not match what was put",<a name="line.4431"></a>
+<span class="sourceLineNo">4432</span>            Bytes.equals(VALUE, entry.getValue()));<a name="line.4432"></a>
+<span class="sourceLineNo">4433</span>      }<a name="line.4433"></a>
+<span class="sourceLineNo">4434</span>    }<a name="line.4434"></a>
+<span class="sourceLineNo">4435</span>  }<a name="line.4435"></a>
+<span class="sourceLineNo">4436</span><a name="line.4436"></a>
+<span class="sourceLineNo">4437</span>  @Ignore ("Flakey: HBASE-8989") @Test<a name="line.4437"></a>
+<span class="sourceLineNo">4438</span>  public void testClientPoolThreadLocal() throws IOException {<a name="line.4438"></a>
+<span class="sourceLineNo">4439</span>    final TableName tableName = TableName.valueOf("testClientPoolThreadLocal");<a name="line.4439"></a>
+<span class="sourceLineNo">4440</span><a name="line.4440"></a>
+<span class="sourceLineNo">4441</span>    int poolSize = Integer.MAX_VALUE;<a name="line.4441"></a>
+<span class="sourceLineNo">4442</span>    int numVersions = 3;<a name="line.4442"></a>
+<span class="sourceLineNo">4443</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.4443"></a>
+<span class="sourceLineNo">4444</span>    conf.set(HConstants.HBASE_CLIENT_IPC_POOL_TYPE, "thread-local");<a name="line.4444"></a>
+<span class="sourceLineNo">4445</span>    conf.setInt(HConstants.HBASE_CLIENT_IPC_POOL_SIZE, poolSize);<a name="line.4445"></a>
+<span class="sourceLineNo">4446</span><a name="line.4446"></a>
+<span class="sourceLineNo">4447</span>    final Table table = TEST_UTIL.createTable(tableName, new byte[][] { FAMILY },  3);<a name="line.4447"></a>
 <span class="sourceLineNo">4448</span><a name="line.4448"></a>
-<span class="sourceLineNo">4449</span>  @Test<a name="line.4449"></a>
-<span class="sourceLineNo">4450</span>  public void testIncrementInvalidArguments() throws Exception {<a name="line.4450"></a>
-<span class="sourceLineNo">4451</span>    LOG.info("Starting testIncrementInvalidArguments");<a name="line.4451"></a>
-<span class="sourceLineNo">4452</span>    final TableName TABLENAME = TableName.valueOf("testIncrementInvalidArguments");<a name="line.4452"></a>
-<span class="sourceLineNo">4453</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.4453"></a>
-<span class="sourceLineNo">4454</span>    final byte[] COLUMN = Bytes.toBytes("column");<a name="line.4454"></a>
-<span class="sourceLineNo">4455</span>    try {<a name="line.4455"></a>
-<span class="sourceLineNo">4456</span>      // try null row<a name="line.4456"></a>
-<span class="sourceLineNo">4457</span>      ht.incrementColumnValue(null, FAMILY, COLUMN, 5);<a name="line.4457"></a>
-<span class="sourceLineNo">4458</span>      fail("Should have thrown IOException");<a name="line.4458"></a>
-<span class="sourceLineNo">4459</span>    } catch (IOException iox) {<a name="line.4459"></a>
-<span class="sourceLineNo">4460</span>      // success<a name="line.4460"></a>
-<span class="sourceLineNo">4461</span>    }<a name="line.4461"></a>
-<span class="sourceLineNo">4462</span>    try {<a name="line.4462"></a>
-<span class="sourceLineNo">4463</span>      // try null family<a name="line.4463"></a>
-<span class="sourceLineNo">4464</span>      ht.incrementColumnValue(ROW, null, COLUMN, 5);<a name="line.4464"></a>
-<span class="sourceLineNo">4465</span>      fail("Should have thrown IOException");<a name="line.4465"></a>
-<span class="sourceLineNo">4466</span>    } catch (IOException iox) {<a name="line.4466"></a>
-<span class="sourceLineNo">4467</span>      // success<a name="line.4467"></a>
-<span class="sourceLineNo">4468</span>    }<a name="line.4468"></a>
-<span class="sourceLineNo">4469</span>    try {<a name="line.4469"></a>
-<span class="sourceLineNo">4470</span>      // try null qualifier<a name="line.4470"></a>
-<span class="sourceLineNo">4471</span>      ht.incrementColumnValue(ROW, FAMILY, null, 5);<a name="line.4471"></a>
-<span class="sourceLineNo">4472</span>      fail("Should have thrown IOException");<a name="line.4472"></a>
-<span class="sourceLineNo">4473</span>    } catch (IOException iox) {<a name="line.4473"></a>
-<span class="sourceLineNo">4474</span>      // success<a name="line.4474"></a>
-<span class="sourceLineNo">4475</span>    }<a name="line.4475"></a>
-<span class="sourceLineNo">4476</span>    // try null row<a name="line.4476"></a>
-<span class="sourceLineNo">4477</span>    try {<a name="line.4477"></a>
-<span class="sourceLineNo">4478</span>      Increment incNoRow = new Increment((byte [])null);<a name="line.4478"></a>
-<span class="sourceLineNo">4479</span>      incNoRow.addColumn(FAMILY, COLUMN, 5);<a name="line.4479"></a>
-<span class="sourceLineNo">4480</span>      fail("Should have thrown IllegalArgumentException");<a name="line.4480"></a>
-<span class="sourceLineNo">4481</span>    } catch (IllegalArgumentException iax) {<a name="line.4481"></a>
-<span class="sourceLineNo">4482</span>      // success<a name="line.4482"></a>
-<span class="sourceLineNo">4483</span>    } catch (NullPointerException npe) {<a name="line.4483"></a>
-<span class="sourceLineNo">4484</span>      // success<a name="line.4484"></a>
-<span class="sourceLineNo">4485</span>    }<a name="line.4485"></a>
-<span class="sourceLineNo">4486</span>    // try null family<a name="line.4486"></a>
-<span class="sourceLineNo">4487</span>    try {<a name="line.4487"></a>
-<span class="sourceLineNo">4488</span>      Increment incNoFamily = new Increment(ROW);<a name="line.4488"></a>
-<span class="sourceLineNo">4489</span>      incNoFamily.addColumn(null, COLUMN, 5);<a name="line.4489"></a>
-<span class="sourceLineNo">4490</span>      fail("Should have thrown IllegalArgumentException");<a name="line.4490"></a>
-<span class="sourceLineNo">4491</span>    } catch (IllegalArgumentException iax) {<a name="line.4491"></a>
-<span class="sourceLineNo">4492</span>      // success<a name="line.4492"></a>
-<span class="sourceLineNo">4493</span>    }<a name="line.4493"></a>
-<span class="sourceLineNo">4494</span>    // try null qualifier<a name="line.4494"></a>
-<span class="sourceLineNo">4495</span>    try {<a name="line.4495"></a>
-<span class="sourceLineNo">4496</span>      Increment incNoQualifier = new Increment(ROW);<a name="line.4496"></a>
-<span class="sourceLineNo">4497</span>      incNoQualifier.addColumn(FAMILY, null, 5);<a name="line.4497"></a>
-<span class="sourceLineNo">4498</span>      fail("Should have thrown IllegalArgumentException");<a name="line.4498"></a>
-<span class="sourceLineNo">4499</span>    } catch (IllegalArgumentException iax) {<a name="line.4499"></a>
-<span class="sourceLineNo">4500</span>      // success<a name="line.4500"></a>
-<span class="sourceLineNo">4501</span>    }<a name="line.4501"></a>
-<span class="sourceLineNo">4502</span>  }<a name="line.4502"></a>
-<span class="sourceLineNo">4503</span><a name="line.4503"></a>
-<span class="sourceLineNo">4504</span>  @Test<a name="line.4504"></a>
-<span class="sourceLineNo">4505</span>  public void testIncrementOutOfOrder() throws Exception {<a name="line.4505"></a>
-<span class="sourceLineNo">4506</span>    LOG.info("Starting testIncrementOutOfOrder");<a name="line.4506"></a>
-<span class="sourceLineNo">4507</span>    final TableName TABLENAME = TableName.valueOf("testIncrementOutOfOrder");<a name="line.4507"></a>
-<span class="sourceLineNo">4508</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.4508"></a>
-<span class="sourceLineNo">4509</span><a name="line.4509"></a>
-<span class="sourceLineNo">4510</span>    byte [][] QUALIFIERS = new byte [][] {<a name="line.4510"></a>
-<span class="sourceLineNo">4511</span>      Bytes.toBytes("B"), Bytes.toBytes("A"), Bytes.toBytes("C")<a name="line.4511"></a>
-<span class="sourceLineNo">4512</span>    };<a name="line.4512"></a>
-<span class="sourceLineNo">4513</span><a name="line.4513"></a>
-<span class="sourceLineNo">4514</span>    Increment inc = new Increment(ROW);<a name="line.4514"></a>
-<span class="sourceLineNo">4515</span>    for (int i=0; i&lt;QUALIFIERS.length; i++) {<a name="line.4515"></a>
-<span class="sourceLineNo">4516</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.4516"></a>
-<span class="sourceLineNo">4517</span>    }<a name="line.4517"></a>
-<span class="sourceLineNo">4518</span>    ht.increment(inc);<a name="line.4518"></a>
-<span class="sourceLineNo">4519</span><a name="line.4519"></a>
-<span class="sourceLineNo">4520</span>    // Verify expected results<a name="line.4520"></a>
-<span class="sourceLineNo">4521</span>    Result r = ht.get(new Get(ROW));<a name="line.4521"></a>
-<span class="sourceLineNo">4522</span>    Cell [] kvs = r.rawCells();<a name="line.4522"></a>
-<span class="sourceLineNo">4523</span>    assertEquals(3, kvs.length);<a name="line.4523"></a>
-<span class="sourceLineNo">4524</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[1], 1);<a name="line.4524"></a>
-<span class="sourceLineNo">4525</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[0], 1);<a name="line.4525"></a>
-<span class="sourceLineNo">4526</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 1);<a name="line.4526"></a>
+<span class="sourceLineNo">4449</span>    final long ts = EnvironmentEdgeManager.currentTime();<a name="line.4449"></a>
+<span class="sourceLineNo">4450</span>    final Get get = new Get(ROW);<a name="line.4450"></a>
+<span class="sourceLineNo">4451</span>    get.addColumn(FAMILY, QUALIFIER);<a name="line.4451"></a>
+<span class="sourceLineNo">4452</span>    get.setMaxVersions();<a name="line.4452"></a>
+<span class="sourceLineNo">4453</span><a name="line.4453"></a>
+<span class="sourceLineNo">4454</span>    for (int versions = 1; versions &lt;= numVersions; versions++) {<a name="line.4454"></a>
+<span class="sourceLineNo">4455</span>      Put put = new Put(ROW);<a name="line.4455"></a>
+<span class="sourceLineNo">4456</span>      put.addColumn(FAMILY, QUALIFIER, ts + versions, VALUE);<a name="line.4456"></a>
+<span class="sourceLineNo">4457</span>      table.put(put);<a name="line.4457"></a>
+<span class="sourceLineNo">4458</span><a name="line.4458"></a>
+<span class="sourceLineNo">4459</span>      Result result = table.get(get);<a name="line.4459"></a>
+<span class="sourceLineNo">4460</span>      NavigableMap&lt;Long, byte[]&gt; navigableMap = result.getMap().get(FAMILY)<a name="line.4460"></a>
+<span class="sourceLineNo">4461</span>          .get(QUALIFIER);<a name="line.4461"></a>
+<span class="sourceLineNo">4462</span><a name="line.4462"></a>
+<span class="sourceLineNo">4463</span>      assertEquals("The number of versions of '" + FAMILY + ":" + QUALIFIER + " did not match " +<a name="line.4463"></a>
+<span class="sourceLineNo">4464</span>        versions + "; " + put.toString() + ", " + get.toString(), versions, navigableMap.size());<a name="line.4464"></a>
+<span class="sourceLineNo">4465</span>      for (Map.Entry&lt;Long, byte[]&gt; entry : navigableMap.entrySet()) {<a name="line.4465"></a>
+<span class="sourceLineNo">4466</span>        assertTrue("The value at time " + entry.getKey()<a name="line.4466"></a>
+<span class="sourceLineNo">4467</span>            + " did not match what was put",<a name="line.4467"></a>
+<span class="sourceLineNo">4468</span>            Bytes.equals(VALUE, entry.getValue()));<a name="line.4468"></a>
+<span class="sourceLineNo">4469</span>      }<a name="line.4469"></a>
+<span class="sourceLineNo">4470</span>    }<a name="line.4470"></a>
+<span class="sourceLineNo">4471</span><a name="line.4471"></a>
+<span class="sourceLineNo">4472</span>    final Object waitLock = new Object();<a name="line.4472"></a>
+<span class="sourceLineNo">4473</span>    ExecutorService executorService = Executors.newFixedThreadPool(numVersions);<a name="line.4473"></a>
+<span class="sourceLineNo">4474</span>    final AtomicReference&lt;AssertionError&gt; error = new AtomicReference&lt;AssertionError&gt;(null);<a name="line.4474"></a>
+<span class="sourceLineNo">4475</span>    for (int versions = numVersions; versions &lt; numVersions * 2; versions++) {<a name="line.4475"></a>
+<span class="sourceLineNo">4476</span>      final int versionsCopy = versions;<a name="line.4476"></a>
+<span class="sourceLineNo">4477</span>      executorService.submit(new Callable&lt;Void&gt;() {<a name="line.4477"></a>
+<span class="sourceLineNo">4478</span>        @Override<a name="line.4478"></a>
+<span class="sourceLineNo">4479</span>        public Void call() {<a name="line.4479"></a>
+<span class="sourceLineNo">4480</span>          try {<a name="line.4480"></a>
+<span class="sourceLineNo">4481</span>            Put put = new Put(ROW);<a name="line.4481"></a>
+<span class="sourceLineNo">4482</span>            put.addColumn(FAMILY, QUALIFIER, ts + versionsCopy, VALUE);<a name="line.4482"></a>
+<span class="sourceLineNo">4483</span>            table.put(put);<a name="line.4483"></a>
+<span class="sourceLineNo">4484</span><a name="line.4484"></a>
+<span class="sourceLineNo">4485</span>            Result result = table.get(get);<a name="line.4485"></a>
+<span class="sourceLineNo">4486</span>            NavigableMap&lt;Long, byte[]&gt; navigableMap = result.getMap()<a name="line.4486"></a>
+<span class="sourceLineNo">4487</span>                .get(FAMILY).get(QUALIFIER);<a name="line.4487"></a>
+<span class="sourceLineNo">4488</span><a name="line.4488"></a>
+<span class="sourceLineNo">4489</span>            assertEquals("The number of versions of '" + Bytes.toString(FAMILY) + ":"<a name="line.4489"></a>
+<span class="sourceLineNo">4490</span>                + Bytes.toString(QUALIFIER) + " did not match " + versionsCopy, versionsCopy,<a name="line.4490"></a>
+<span class="sourceLineNo">4491</span>                navigableMap.size());<a name="line.4491"></a>
+<span class="sourceLineNo">4492</span>            for (Map.Entry&lt;Long, byte[]&gt; entry : navigableMap.entrySet()) {<a name="line.4492"></a>
+<span class="sourceLineNo">4493</span>              assertTrue("The value at time " + entry.getKey()<a name="line.4493"></a>
+<span class="sourceLineNo">4494</span>                  + " did not match what was put",<a name="line.4494"></a>
+<span class="sourceLineNo">4495</span>                  Bytes.equals(VALUE, entry.getValue()));<a name="line.4495"></a>
+<span class="sourceLineNo">4496</span>            }<a name="line.4496"></a>
+<span class="sourceLineNo">4497</span>            synchronized (waitLock) {<a name="line.4497"></a>
+<span class="sourceLineNo">4498</span>              waitLock.wait();<a name="line.4498"></a>
+<span class="sourceLineNo">4499</span>            }<a name="line.4499"></a>
+<span class="sourceLineNo">4500</span>          } catch (Exception e) {<a name="line.4500"></a>
+<span class="sourceLineNo">4501</span>          } catch (AssertionError e) {<a name="line.4501"></a>
+<span class="sourceLineNo">4502</span>            // the error happens in a thread, it won't fail the test,<a name="line.4502"></a>
+<span class="sourceLineNo">4503</span>            // need to pass it to the caller for proper handling.<a name="line.4503"></a>
+<span class="sourceLineNo">4504</span>            error.set(e);<a name="line.4504"></a>
+<span class="sourceLineNo">4505</span>            LOG.error(e);<a name="line.4505"></a>
+<span class="sourceLineNo">4506</span>          }<a name="line.4506"></a>
+<span class="sourceLineNo">4507</span><a name="line.4507"></a>
+<span class="sourceLineNo">4508</span>          return null;<a name="line.4508"></a>
+<span class="sourceLineNo">4509</span>        }<a name="line.4509"></a>
+<span class="sourceLineNo">4510</span>      });<a name="line.4510"></a>
+<span class="sourceLineNo">4511</span>    }<a name="line.4511"></a>
+<span class="sourceLineNo">4512</span>    synchronized (waitLock) {<a name="line.4512"></a>
+<span class="sourceLineNo">4513</span>      waitLock.notifyAll();<a name="line.4513"></a>
+<span class="sourceLineNo">4514</span>    }<a name="line.4514"></a>
+<span class="sourceLineNo">4515</span>    executorService.shutdownNow();<a name="line.4515"></a>
+<span class="sourceLineNo">4516</span>    assertNull(error.get());<a name="line.4516"></a>
+<span class="sourceLineNo">4517</span>  }<a name="line.4517"></a>
+<span class="sourceLineNo">4518</span><a name="line.4518"></a>
+<span class="sourceLineNo">4519</span>  @Test<a name="line.4519"></a>
+<span class="sourceLineNo">4520</span>  public void testCheckAndPut() throws IOException {<a name="line.4520"></a>
+<span class="sourceLineNo">4521</span>    final byte [] anotherrow = Bytes.toBytes("anotherrow");<a name="line.4521"></a>
+<span class="sourceLineNo">4522</span>    final byte [] value2 = Bytes.toBytes("abcd");<a name="line.4522"></a>
+<span class="sourceLineNo">4523</span><a name="line.4523"></a>
+<span class="sourceLineNo">4524</span>    Table table = TEST_UTIL.createTable(TableName.valueOf("testCheckAndPut"), FAMILY);<a name="line.4524"></a>
+<span class="sourceLineNo">4525</span>    Put put1 = new Put(ROW);<a name="line.4525"></a>
+<span class="sourceLineNo">4526</span>    put1.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.4526"></a>
 <span class="sourceLineNo">4527</span><a name="line.4527"></a>
-<span class="sourceLineNo">4528</span>    // Now try multiple columns again<a name="line.4528"></a>
-<span class="sourceLineNo">4529</span>    inc = new Increment(ROW);<a name="line.4529"></a>
-<span class="sourceLineNo">4530</span>    for (int i=0; i&lt;QUALIFIERS.length; i++) {<a name="line.4530"></a>
-<span class="sourceLineNo">4531</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.4531"></a>
-<span class="sourceLineNo">4532</span>    }<a name="line.4532"></a>
-<span class="sourceLineNo">4533</span>    ht.increment(inc);<a name="line.4533"></a>
-<span class="sourceLineNo">4534</span><a name="line.4534"></a>
-<span class="sourceLineNo">4535</span>    // Verify<a name="line.4535"></a>
-<span class="sourceLineNo">4536</span>    r = ht.get(new Get(ROW));<a name="line.4536"></a>
-<span class="sourceLineNo">4537</span>    kvs = r.rawCells();<a name="line.4537"></a>
-<span class="sourceLineNo">4538</span>    assertEquals(3, kvs.length);<a name="line.4538"></a>
-<span class="sourceLineNo">4539</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[1], 2);<a name="line.4539"></a>
-<span class="sourceLineNo">4540</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[0], 2);<a name="line.4540"></a>
-<span class="sourceLineNo">4541</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 2);<a name="line.4541"></a>
-<span class="sourceLineNo">4542</span>  }<a name="line.4542"></a>
-<span class="sourceLineNo">4543</span><a name="line.4543"></a>
-<span class="sourceLineNo">4544</span>  @Test<a name="line.4544"></a>
-<span class="sourceLineNo">4545</span>  public void testIncrementOnSameColumn() throws Exception {<a name="line.4545"></a>
-<span class="sourceLineNo">4546</span>    LOG.info("Starting testIncrementOnSameColumn");<a name="line.4546"></a>
-<span class="sourceLineNo">4547</span>    final TableName TABLENAME = TableName.valueOf("testIncrementOnSameColumn");<a name="line.4547"></a>
-<span class="sourceLineNo">4548</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.4548"></a>
+<span class="sourceLineNo">4528</span>    // row doesn't exist, so using non-null value should be considered "not match".<a name="line.4528"></a>
+<span class="sourceLineNo">4529</span>    boolean ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, VALUE, put1);<a name="line.4529"></a>
+<span class="sourceLineNo">4530</span>    assertEquals(ok, false);<a name="line.4530"></a>
+<span class="sourceLineNo">4531</span><a name="line.4531"></a>
+<span class="sourceLineNo">4532</span>    // row doesn't exist, so using "null" to check for existence should be considered "match".<a name="line.4532"></a>
+<span class="sourceLineNo">4533</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, null, put1);<a name="line.4533"></a>
+<span class="sourceLineNo">4534</span>    assertEquals(ok, true);<a name="line.4534"></a>
+<span class="sourceLineNo">4535</span><a name="line.4535"></a>
+<span class="sourceLineNo">4536</span>    // row now exists, so using "null" to check for existence should be considered "not match".<a name="line.4536"></a>
+<span class="sourceLineNo">4537</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, null, put1);<a name="line.4537"></a>
+<span class="sourceLineNo">4538</span>    assertEquals(ok, false);<a name="line.4538"></a>
+<span class="sourceLineNo">4539</span><a name="line.4539"></a>
+<span class="sourceLineNo">4540</span>    Put put2 = new Put(ROW);<a name="line.4540"></a>
+<span class="sourceLineNo">4541</span>    put2.addColumn(FAMILY, QUALIFIER, value2);<a name="line.4541"></a>
+<span class="sourceLineNo">4542</span><a name="line.4542"></a>
+<span class="sourceLineNo">4543</span>    // row now exists, use the matching value to check<a name="line.4543"></a>
+<span class="sourceLineNo">4544</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, VALUE, put2);<a name="line.4544"></a>
+<span class="sourceLineNo">4545</span>    assertEquals(ok, true);<a name="line.4545"></a>
+<span class="sourceLineNo">4546</span><a name="line.4546"></a>
+<span class="sourceLineNo">4547</span>    Put put3 = new Put(anotherrow);<a name="line.4547"></a>
+<span class="sourceLineNo">4548</span>    put3.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.4548"></a>
 <span class="sourceLineNo">4549</span><a name="line.4549"></a>
-<span class="sourceLineNo">4550</span>    byte[][] QUALIFIERS =<a name="line.4550"></a>
-<span class="sourceLineNo">4551</span>        new byte[][] { Bytes.toBytes("A"), Bytes.toBytes("B"), Bytes.toBytes("C") };<a name="line.4551"></a>
-<span class="sourceLineNo">4552</span><a name="line.4552"></a>
-<span class="sourceLineNo">4553</span>    Increment inc = new Increment(ROW);<a name="line.4553"></a>
-<span class="sourceLineNo">4554</span>    for (int i = 0; i &lt; QUALIFIERS.length; i++) {<a name="line.4554"></a>
-<span class="sourceLineNo">4555</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.4555"></a>
-<span class="sourceLineNo">4556</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.4556"></a>
-<span class="sourceLineNo">4557</span>    }<a name="line.4557"></a>
-<span class="sourceLineNo">4558</span>    ht.increment(inc);<a name="line.4558"></a>
-<span class="sourceLineNo">4559</span><a name="line.4559"></a>
-<span class="sourceLineNo">4560</span>    // Verify expected results<a name="line.4560"></a>
-<span class="sourceLineNo">4561</span>    Result r = ht.get(new Get(ROW));<a name="line.4561"></a>
-<span class="sourceLineNo">4562</span>    Cell[] kvs = r.rawCells();<a name="line.4562"></a>
-<span class="sourceLineNo">4563</span>    assertEquals(3, kvs.length);<a name="line.4563"></a>
-<span class="sourceLineNo">4564</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[0], 1);<a name="line.4564"></a>
-<span class="sourceLineNo">4565</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[1], 1);<a name="line.4565"></a>
-<span class="sourceLineNo">4566</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 1);<a name="line.4566"></a>
-<span class="sourceLineNo">4567</span><a name="line.4567"></a>
-<span class="sourceLineNo">4568</span>    // Now try multiple columns again<a name="line.4568"></a>
-<span class="sourceLineNo">4569</span>    inc = new Increment(ROW);<a name="line.4569"></a>
-<span class="sourceLineNo">4570</span>    for (int i = 0; i &lt; QUALIFIERS.length; i++) {<a name="line.4570"></a>
-<span class="sourceLineNo">4571</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.4571"></a>
-<span class="sourceLineNo">4572</span>      inc.addColumn(FAMILY, QUALIFIERS[i], 1);<a name="line.4572"></a>
-<span class="sourceLineNo">4573</span>    }<a name="line.4573"></a>
-<span class="sourceLineNo">4574</span>    ht.increment(inc);<a name="line.4574"></a>
-<span class="sourceLineNo">4575</span><a name="line.4575"></a>
-<span class="sourceLineNo">4576</span>    // Verify<a name="line.4576"></a>
-<span class="sourceLineNo">4577</span>    r = ht.get(new Get(ROW));<a name="line.4577"></a>
-<span class="sourceLineNo">4578</span>    kvs = r.rawCells();<a name="line.4578"></a>
-<span class="sourceLineNo">4579</span>    assertEquals(3, kvs.length);<a name="line.4579"></a>
-<span class="sourceLineNo">4580</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[0], 2);<a name="line.4580"></a>
-<span class="sourceLineNo">4581</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[1], 2);<a name="line.4581"></a>
-<span class="sourceLineNo">4582</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 2);<a name="line.4582"></a>
-<span class="sourceLineNo">4583</span><a name="line.4583"></a>
-<span class="sourceLineNo">4584</span>    ht.close();<a name="line.4584"></a>
-<span class="sourceLineNo">4585</span>  }<a name="line.4585"></a>
-<span class="sourceLineNo">4586</span><a name="line.4586"></a>
-<span class="sourceLineNo">4587</span>  @Test<a name="line.4587"></a>
-<span class="sourceLineNo">4588</span>  public void testIncrement() throws Exception {<a name="line.4588"></a>
-<span class="sourceLineNo">4589</span>    LOG.info("Starting testIncrement");<a name="line.4589"></a>
-<span class="sourceLineNo">4590</span>    final TableName TABLENAME = TableName.valueOf("testIncrement");<a name="line.4590"></a>
-<span class="sourceLineNo">4591</span>    Table ht = TEST_UTIL.createTable(TABLENAME, FAMILY);<a name="line.4591"></a>
-<span class="sourceLineNo">4592</span><a name="line.4592"></a>
-<span class="sourceLineNo">4593</span>    byte [][] ROWS = new byte [][] {<a name="line.4593"></a>
-<span class="sourceLineNo">4594</span>        Bytes.toBytes("a"), Bytes.toBytes("b"), Bytes.toBytes("c"),<a name="line.4594"></a>
-<span class="sourceLineNo">4595</span>        Bytes.toBytes("d"), Bytes.toBytes("e"), Bytes.toBytes("f"),<a name="line.4595"></a>
-<span class="sourceLineNo">4596</span>        Bytes.toBytes("g"), Bytes.toBytes("h"), Bytes.toBytes("i")<a name="line.4596"></a>
-<span class="sourceLineNo">4597</span>    };<a name="line.4597"></a>
-<span class="sourceLineNo">4598</span>    byte [][] QUALIFIERS = new byte [][] {<a name="line.4598"></a>
-<span class="sourceLineNo">4599</span>        Bytes.toBytes("a"), Bytes.toBytes("b"), Bytes.toBytes("c"),<a name="line.4599"></a>
-<span class="sourceLineNo">4600</span>        Bytes.toBytes("d"), Bytes.toBytes("e"), Bytes.toBytes("f"),<a name="line.4600"></a>
-<span class="sourceLineNo">4601</span>        Bytes.toBytes("g"), Bytes.toBytes("h"), Bytes.toBytes("i")<a name="line.4601"></a>
-<span class="sourceLineNo">4602</span>    };<a name="line.4602"></a>
-<span class="sourceLineNo">4603</span><a name="line.4603"></a>
-<span class="sourceLineNo">4604</span>    // Do some simple single-column increments<a name="line.4604"></a>
-<span class="sourceLineNo">4605</span><a name="line.4605"></a>
-<span class="sourceLineNo">4606</span>    // First with old API<a name="line.4606"></a>
-<span class="sourceLineNo">4607</span>    ht.incrementColumnValue(ROW, FAMILY, QUALIFIERS[0], 1);<a name="line.4607"></a>
-<span class="sourceLineNo">4608</span>    ht.incrementColumnValue(ROW, FAMILY, QUALIFIERS[1], 2);<a name="line.4608"></a>
-<span class="sourceLineNo">4609</span>    ht.incrementColumnValue(ROW, FAMILY, QUALIFIERS[2], 3);<a name="line.4609"></a>
-<span class="sourceLineNo">4610</span>    ht.incrementColumnValue(ROW, FAMILY, QUALIFIERS[3], 4);<a name="line.4610"></a>
-<span class="sourceLineNo">4611</span><a name="line.4611"></a>
-<span class="sourceLineNo">4612</span>    // Now increment things incremented with old and do some new<a name="line.4612"></a>
-<span class="sourceLineNo">4613</span>    Increment inc = new Increment(ROW);<a name="line.4613"></a>
-<span class="sourceLineNo">4614</span>    inc.addColumn(FAMILY, QUALIFIERS[1], 1);<a name="line.4614"></a>
-<span class="sourceLineNo">4615</span>    inc.addColumn(FAMILY, QUALIFIERS[3], 1);<a name="line.4615"></a>
-<span class="sourceLineNo">4616</span>    inc.addColumn(FAMILY, QUALIFIERS[4], 1);<a name="line.4616"></a>
-<span class="sourceLineNo">4617</span>    ht.increment(inc);<a name="line.4617"></a>
-<span class="sourceLineNo">4618</span><a name="line.4618"></a>
-<span class="sourceLineNo">4619</span>    // Verify expected results<a name="line.4619"></a>
-<span class="sourceLineNo">4620</span>    Result r = ht.get(new Get(ROW));<a name="line.4620"></a>
-<span class="sourceLineNo">4621</span>    Cell [] kvs = r.rawCells();<a name="line.4621"></a>
-<span class="sourceLineNo">4622</span>    assertEquals(5, kvs.length);<a name="line.4622"></a>
-<span class="sourceLineNo">4623</span>    assertIncrementKey(kvs[0], ROW, FAMILY, QUALIFIERS[0], 1);<a name="line.4623"></a>
-<span class="sourceLineNo">4624</span>    assertIncrementKey(kvs[1], ROW, FAMILY, QUALIFIERS[1], 3);<a name="line.4624"></a>
-<span class="sourceLineNo">4625</span>    assertIncrementKey(kvs[2], ROW, FAMILY, QUALIFIERS[2], 3);<a name="line.4625"></a>
-<span class="sourceLineNo">4626</span>    assertIncrementKey(kvs[3], ROW, FAMILY, QUALIFIERS[3], 5);<a name="line.4626"></a>
-<span class="sourceLineNo">4627</span>    assertIncrementKey(kvs[4], ROW, FAMILY, QUALIFIERS[4], 1);<a name="line.4627"></a>
-<span class="sourceLineNo">4628</span><a name="line.4628"></a>
-<span class="sourceLineNo">4629</span>    // Now try multiple columns by different amounts<a name="line.4629"></a>
-<span class="sourceLineNo">4630</span>    inc = new Increment(ROWS[0]);<a name="line.4630"></a>
-<span class="sourceLineNo">4631</span>    for (int i=0;i&lt;QUALIFIERS.length;i++) {<a name="line.4631"></a>
-<span class="sourceLineNo">4632</span>      inc.addColumn(FAMILY, QUALIFIERS[i], i+1);<a name="line.4632"></a>
-<span class="sourceLineNo">4633</span>    }<a name="line.4633"></a>
-<span class="sourceLineNo">4634</span>    ht.increment(inc);<a name="line.4634"></a>
-<span class="sourceLineNo">4635</span>    // Verify<a name="line.4635"></a>
-<span class="sourceLineNo">4636</span>    r = ht.get(new Get(ROWS[0]));<a name="line.4636"></a>
-<span class="sourceLineNo">4637</span>    kvs = r.rawCells();<a name="line.4637"></a>
-<span class="sourceLineNo">4638</span>    assertEquals(QUALIFIERS.length, kvs.length);<a name="line.4638"></a>
-<span class="sourceLineNo">4639</span>    for (int i=0;i&lt;QUALIFIERS.length;i++) {<a name="line.4639"></a>
-<span class="sourceLineNo">4640</span>      assertIncrementKey(kvs[i], ROWS[0], FAMILY, QUALIFIERS[i], i+1);<a name="line.4640"></a>
-<span class="sourceLineNo">4641</span>    }<a name="line.4641"></a>
+<span class="sourceLineNo">4550</span>    // try to do CheckAndPut on different rows<a name="line.4550"></a>
+<span class="sourceLineNo">4551</span>    try {<a name="line.4551"></a>
+<span class="sourceLineNo">4552</span>        ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, value2, put3);<a name="line.4552"></a>
+<span class="sourceLineNo">4553</span>        fail("trying to check and modify different rows should have failed.");<a name="line.4553"></a>
+<span class="sourceLineNo">4554</span>    } catch(Exception e) {}<a name="line.4554"></a>
+<span class="sourceLineNo">4555</span><a name="line.4555"></a>
+<span class="sourceLineNo">4556</span>  }<a name="line.4556"></a>
+<span class="sourceLineNo">4557</span><a name="line.4557"></a>
+<span class="sourceLineNo">4558</span>  @Test<a name="line.4558"></a>
+<span class="sourceLineNo">4559</span>  public void testCheckAndPutWithCompareOp() throws IOException {<a name="line.4559"></a>
+<span class="sourceLineNo">4560</span>    final byte [] value1 = Bytes.toBytes("aaaa");<a name="line.4560"></a>
+<span class="sourceLineNo">4561</span>    final byte [] value2 = Bytes.toBytes("bbbb");<a name="line.4561"></a>
+<span class="sourceLineNo">4562</span>    final byte [] value3 = Bytes.toBytes("cccc");<a name="line.4562"></a>
+<span class="sourceLineNo">4563</span>    final byte [] value4 = Bytes.toBytes("dddd");<a name="line.4563"></a>
+<span class="sourceLineNo">4564</span><a name="line.4564"></a>
+<span class="sourceLineNo">4565</span>    Table table = TEST_UTIL.createTable(TableName.valueOf("testCheckAndPutWithCompareOp"), FAMILY);<a name="line.4565"></a>
+<span class="sourceLineNo">4566</span><a name="line.4566"></a>
+<span class="sourceLineNo">4567</span>    Put put2 = new Put(ROW);<a name="line.4567"></a>
+<span class="sourceLineNo">4568</span>    put2.addColumn(FAMILY, QUALIFIER, value2);<a name="line.4568"></a>
+<span class="sourceLineNo">4569</span><a name="line.4569"></a>
+<span class="sourceLineNo">4570</span>    Put put3 = new Put(ROW);<a name="line.4570"></a>
+<span class="sourceLineNo">4571</span>    put3.addColumn(FAMILY, QUALIFIER, value3);<a name="line.4571"></a>
+<span class="sourceLineNo">4572</span><a name="line.4572"></a>
+<span class="sourceLineNo">4573</span>    // row doesn't exist, so using "null" to check for existence should be considered "match".<a name="line.4573"></a>
+<span class="sourceLineNo">4574</span>    boolean ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, null, put2);<a name="line.4574"></a>
+<span class="sourceLineNo">4575</span>    assertEquals(ok, true);<a name="line.4575"></a>
+<span class="sourceLineNo">4576</span><a name="line.4576"></a>
+<span class="sourceLineNo">4577</span>    // cell = "bbbb", using "aaaa" to compare only LESS/LESS_OR_EQUAL/NOT_EQUAL<a name="line.4577"></a>
+<span class="sourceLineNo">4578</span>    // turns out "match"<a name="line.4578"></a>
+<span class="sourceLineNo">4579</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.GREATER, value1, put2);<a name="line.4579"></a>
+<span class="sourceLineNo">4580</span>    assertEquals(ok, false);<a name="line.4580"></a>
+<span class="sourceLineNo">4581</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.EQUAL, value1, put2);<a name="line.4581"></a>
+<span class="sourceLineNo">4582</span>    assertEquals(ok, false);<a name="line.4582"></a>
+<span class="sourceLineNo">4583</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.GREATER_OR_EQUAL, value1, put2);<a name="line.4583"></a>
+<span class="sourceLineNo">4584</span>    assertEquals(ok, false);<a name="line.4584"></a>
+<span class="sourceLineNo">4585</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.LESS, value1, put2);<a name="line.4585"></a>
+<span class="sourceLineNo">4586</span>    assertEquals(ok, true);<a name="line.4586"></a>
+<span class="sourceLineNo">4587</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.LESS_OR_EQUAL, value1, put2);<a name="line.4587"></a>
+<span class="sourceLineNo">4588</span>    assertEquals(ok, true);<a name="line.4588"></a>
+<span class="sourceLineNo">4589</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value1, put3);<a name="line.4589"></a>
+<span class="sourceLineNo">4590</span>    assertEquals(ok, true);<a name="line.4590"></a>
+<span class="sourceLineNo">4591</span><a name="line.4591"></a>
+<span class="sourceLineNo">4592</span>    // cell = "cccc", using "dddd" to compare only LARGER/LARGER_OR_EQUAL/NOT_EQUAL<a name="line.4592"></a>
+<span class="sourceLineNo">4593</span>    // turns out "match"<a name="line.4593"></a>
+<span class="sourceLineNo">4594</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.LESS, value4, put3);<a name="line.4594"></a>
+<span class="sourceLineNo">4595</span>    assertEquals(ok, false);<a name="line.4595"></a>
+<span class="sourceLineNo">4596</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.LESS_OR_EQUAL, value4, put3);<a name="line.4596"></a>
+<span class="sourceLineNo">4597</span>    assertEquals(ok, false);<a name="line.4597"></a>
+<span class="sourceLineNo">4598</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.EQUAL, value4, put3);<a name="line.4598"></a>
+<span class="sourceLineNo">4599</span>    assertEquals(ok, false);<a name="line.4599"></a>
+<span class="sourceLineNo">4600</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.GREATER, value4, put3);<a name="line.4600"></a>
+<span class="sourceLineNo">4601</span>    assertEquals(ok, true);<a name="line.4601"></a>
+<span class="sourceLineNo">4602</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.GREATER_OR_EQUAL, value4, put3);<a name="line.4602"></a>
+<span class="sourceLineNo">4603</span>    assertEquals(ok, true);<a name="line.4603"></a>
+<span class="sourceLineNo">4604</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value4, put2);<a name="line.4604"></a>
+<span class="sourceLineNo">4605</span>    assertEquals(ok, true);<a name="line.4605"></a>
+<span class="sourceLineNo">4606</span><a name="line.4606"></a>
+<span class="sourceLineNo">4607</span>    // cell = "bbbb", using "bbbb" to compare only GREATER_OR_EQUAL/LESS_OR_EQUAL/EQUAL<a name="line.4607"></a>
+<span class="sourceLineNo">4608</span>    // turns out "match"<a name="line.4608"></a>
+<span class="sourceLineNo">4609</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.GREATER, value2, put2);<a name="line.4609"></a>
+<span class="sourceLineNo">4610</span>    assertEquals(ok, false);<a name="line.4610"></a>
+<span class="sourceLineNo">4611</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value2, put2);<a name="line.4611"></a>
+<span class="sourceLineNo">4612</span>    assertEquals(ok, false);<a name="line.4612"></a>
+<span class="sourceLineNo">4613</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.LESS, value2, put2);<a name="line.4613"></a>
+<span class="sourceLineNo">4614</span>    assertEquals(ok, false);<a name="line.4614"></a>
+<span class="sourceLineNo">4615</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.GREATER_OR_EQUAL, value2, put2);<a name="line.4615"></a>
+<span class="sourceLineNo">4616</span>    assertEquals(ok, true);<a name="line.4616"></a>
+<span class="sourceLineNo">4617</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.LESS_OR_EQUAL, value2, put2);<a name="line.4617"></a>
+<span class="sourceLineNo">4618</span>    assertEquals(ok, true);<a name="line.4618"></a>
+<span class="sourceLineNo">4619</span>    ok = table.checkAndPut(ROW, FAMILY, QUALIFIER, CompareOp.EQUAL, value2, put3);<a name="line.4619"></a>
+<span class="sourceLineNo">4620</span>    assertEquals(ok, true);<a name="line.4620"></a>
+<span class="sourceLineNo">4621</span>  }<a name="line.4621"></a>
+<span class="sourceLineNo">4622</span><a name="line.4622"></a>
+<span class="sourceLineNo">4623</span>  @Test<a name="line.4623"></a>
+<span class="sourceLineNo">4624</span>  public void testCheckAndDeleteWithCompareOp() throws IOException {<a name="line.4624"></a>
+<span class="sourceLineNo">4625</span>    final byte [] value1 = Bytes.toBytes("aaaa");<a name="line.4625"></a>
+<span class="sourceLineNo">4626</span>    final byte [] value2 = Bytes.toBytes("bbbb");<a name="line.4626"></a>
+<span class="sourceLineNo">4627</span>    final byte [] value3 = Bytes.toBytes("cccc");<a name="line.4627"></a>
+<span class="sourceLineNo">4628</span>    final byte [] value4 = Bytes.toBytes("dddd");<a name="line.4628"></a>
+<span class="sourceLineNo">4629</span><a name="line.4629"></a>
+<span class="sourceLineNo">4630</span>    Table table = TEST_UTIL.createTable(TableName.valueOf("testCheckAndDeleteWithCompareOp"),<a name="line.4630"></a>
+<span class="sourceLineNo">4631</span>        FAMILY);<a name="line.4631"></a>
+<span class="sourceLineNo">4632</span><a name="line.4632"></a>
+<span class="sourceLineNo">4633</span>    Put put2 = new Put(ROW);<a name="line.4633"></a>
+<span class="sourceLineNo">4634</span>    put2.addColumn(FAMILY, QUALIFIER, value2);<a name="line.4634"></a>
+<span class="sourceLineNo">4635</span>    table.put(put2);<a name="line.4635"></a>
+<span class="sourceLineNo">4636</span><a name="line.4636"></a>
+<span class="sourceLineNo">4637</span>    Put put3 = new Put(ROW);<a name="line.4637"></a>
+<span class="sourceLineNo">4638</span>    put3.addColumn(FAMILY, QUALIFIER, value3);<a name="line.4638"></a>
+<span class="sourceLineNo">4639</span><a name="line.4639"></a>
+<span class="sourceLineNo">4640</span>    Delete delete = new Delete(ROW);<a name="line.4640"></a>
+<span class="sourceLineNo">4641</span>    delete.addColumns(FAMILY, QUALIFIER);<a name="line.4641"></a>
 <span class="sourceLineNo">4642</span><a name="line.4642"></a>
-<span class="sourceLineNo">4643</span>    // Re-increment them<a name="line.4643"></a>
-<span class="sourceLineNo">4644</span>    inc = new Increment(ROWS[0]);<a name="line.4644"></a>
-<span class="sourceLineNo">4645</span>    for (int i=0;i&lt;QUALIFIERS.length;i++) {<a name="line.4645"></a>
-<span class="sourceLineNo">4646</span>      inc.addColumn(FAMILY, QUALIFIERS[i], i+1);<a name="line.4646"></a>
-<span class="sourceLineNo">4647</span>    }<a name="line.4647"></a>
-<span class="sourceLineNo">4648</span>    ht.increment(inc);<a name="line.4648"></a>
-<span class="sourceLineNo">4649</span>    // Verify<a name="line.4649"></a>
-<span class="sourceLineNo">4650</span>    r = ht.get(new Get(ROWS[0]));<a name="line.4650"></a>
-<span class="sourceLineNo">4651</span>    kvs = r.rawCells();<a name="line.4651"></a>
-<span class="sourceLineNo">4652</span>    assertEquals(QUALIFIERS.length, kvs.length);<a name="line.4652"></a>
-<span class="sourceLineNo">4653</span>    for (int i=0;i&lt;QUALIFIERS.length;i++) {<a name="line.4653"></a>
-<span class="sourceLineNo">4654</span>      assertIncrementKey(kvs[i], ROWS[0], FAMILY, QUALIFIERS[i], 2*(i+1));<a name="line.4654"></a>
-<span class="sourceLineNo">4655</span>    }<a name="line.4655"></a>
-<span class="sourceLineNo">4656</span>  }<a name="line.4656"></a>
-<span class="sourceLineNo">4657</span><a name="line.4657"></a>
-<span class="sourceLineNo">4658</span><a name="line.4658"></a>
-<span class="sourceLineNo">4659</span>  @Test<a name="line.4659"></a>
-<span class="sourceLineNo">4660</span>  public void testClientPoolRoundRobin() throws IOException {<a name="line.4660"></a>
-<span class="sourceLineNo">4661</span>    final TableName tableName = TableName.valueOf("testClientPoolRoundRobin");<a name="line.4661"></a>
-<span class="sourceLineNo">4662</span><a name="line.4662"></a>
-<span class="sourceLineNo">4663</span>    int poolSize = 3;<a name="line.4663"></a>
-<span class="sourceLineNo">4664</span>    int numVersions = poolSize * 2;<a name="line.4664"></a>
-<span class="sourceLineNo">4665</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.4665"></a>
-<span class="sourceLineNo">4666</span>    conf.set(HConstants.HBASE_CLIENT_IPC_POOL_TYPE, "round-robin");<a name="line.4666"></a>
-<span class="sourceLineNo">4667</span>    conf.setInt(HConstants.HBASE_CLIENT_IPC_POOL_SIZE, poolSize);<a name="line.4667"></a>
-<span class="sourceLineNo">4668</span><a name="line.4668"></a>
-<span class="sourceLineNo">4669</span>    Table table = TEST_UTIL.createTable(tableName, new byte[][] { FAMILY }, Integer.MAX_VALUE);<a name="line.4669"></a>
-<span class="sourceLineNo">4670</span><a name="line.4670"></a>
-<span class="sourceLineNo">4671</span>    final long ts = EnvironmentEdgeManager.currentTime();<a name="line.4671"></a>
-<span class="sourceLineNo">4672</span>    Get get = new Get(ROW);<a name="line.4672"></a>
-<span class="sourceLineNo">4673</span>    get.addColumn(FAMILY, QUALIFIER);<a name="line.4673"></a>
-<span class="sourceLineNo">4674</span>    get.setMaxVersions();<a name="line.4674"></a>
-<span class="sourceLineNo">4675</span><a name="line.4675"></a>
-<span class="sourceLineNo">4676</span>    for (int versions = 1; versions &lt;= numVersions; versions++) {<a name="line.4676"></a>
-<span class="sourceLineNo">4677</span>      Put put = new Put(ROW);<a name="line.4677"></a>
-<span class="sourceLineNo">4678</span>      put.addColumn(FAMILY, QUALIFIER, ts + versions, VALUE);<a name="line.4678"></a>
-<span class="sourceLineNo">4679</span>      table.put(put);<a name="line.4679"></a>
-<span class="sourceLineNo">4680</span><a name="line.4680"></a>
-<span class="sourceLineNo">4681</span>      Result result = table.get(get);<a name="line.4681"></a>
-<span class="sourceLineNo">4682</span>      NavigableMap&lt;Long, byte[]&gt; navigableMap = result.getMap().get(FAMILY)<a name="line.4682"></a>
-<span class="sourceLineNo">4683</span>          .get(QUALIFIER);<a name="line.4683"></a>
-<span class="sourceLineNo">4684</span><a name="line.4684"></a>
-<span class="sourceLineNo">4685</span>      assertEquals("The number of versions of '" + FAMILY + ":" + QUALIFIER<a name="line.4685"></a>
-<span class="sourceLineNo">4686</span>          + " did not match " + versions, versions, navigableMap.size());<a name="line.4686"></a>
-<span class="sourceLineNo">4687</span>      for (Map.Entry&lt;Long, byte[]&gt; entry : navigableMap.entrySet()) {<a name="line.4687"></a>
-<span class="sourceLineNo">4688</span>        assertTrue("The value at time " + entry.getKey()<a name="line.4688"></a>
-<span class="sourceLineNo">4689</span>            + " did not match what was put",<a name="line.4689"></a>
-<span class="sourceLineNo">4690</span>            Bytes.equals(VALUE, entry.getValue()));<a name="line.4690"></a>
-<span class="sourceLineNo">4691</span>      }<a name="line.4691"></a>
-<span class="sourceLineNo">4692</span>    }<a name="line.4692"></a>
-<span class="sourceLineNo">4693</span>  }<a name="line.4693"></a>
-<span class="sourceLineNo">4694</span><a name="line.4694"></a>
-<span class="sourceLineNo">4695</span>  @Ignore ("Flakey: HBASE-8989") @Test<a name="line.4695"></a>
-<span class="sourceLineNo">4696</span>  public void testClientPoolThreadLocal() throws IOException {<a name="line.4696"></a>
-<span class="sourceLineNo">4697</span>    final TableName tableName = TableName.valueOf("testClientPoolThreadLocal");<a name="line.4697"></a>
-<span class="sourceLineNo">4698</span><a name="line.4698"></a>
-<span class="sourceLineNo">4699</span>    int poolSize = Integer.MAX_VALUE;<a name="line.4699"></a>
-<span class="sourceLineNo">4700</span>    int numVersions = 3;<a name="line.4700"></a>
-<span class="sourceLineNo">4701</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.4701"></a>
-<span class="sourceLineNo">4702</span>    conf.set(HConstants.HBASE_CLIENT_IPC_POOL_TYPE, "thread-local");<a name="line.4702"></a>
-<span class="sourceLineNo">4703</span>    conf.setInt(HConstants.HBASE_CLIENT_IPC_POOL_SIZE, poolSize);<a name="line.4703"></a>
-<span class="sourceLineNo">4704</span><a name="line.4704"></a>
-<span class="sourceLineNo">4705</span>    final Table table = TEST_UTIL.createTable(tableName, new byte[][] { FAMILY },  3);<a name="line.4705"></a>
-<span class="sourceLineNo">4706</span><a name="line.4706"></a>
-<span class="sourceLineNo">4707</span>    final long ts = EnvironmentEdgeManager.currentTime();<a name="line.4707"></a>
-<span class="sourceLineNo">4708</span>    final Get get = new Get(ROW);<a name="line.4708"></a>
-<span class="sourceLineNo">4709</span>    get.addColumn(FAMILY, QUALIFIER);<a name="line.4709"></a>
-<span class="sourceLineNo">4710</span>    get.setMaxVersions();<a name="line.4710"></a>
-<span class="sourceLineNo">4711</span><a name="line.4711"></a>
-<span class="sourceLineNo">4712</span>    for (int versions = 1; versions &lt;= numVersions; versions++) {<a name="line.4712"></a>
-<span class="sourceLineNo">4713</span>      Put put = new Put(ROW);<a name="line.4713"></a>
-<span class="sourceLineNo">4714</span>      put.addColumn(FAMILY, QUALIFIER, ts + versions, VALUE);<a name="line.4714"></a>
-<span class="sourceLineNo">4715</span>      table.put(put);<a name="line.4715"></a>
-<span class="sourceLineNo">4716</span><a name="line.4716"></a>
-<span class="sourceLineNo">4717</span>      Result result = table.get(get);<a name="line.4717"></a>
-<span class="sourceLineNo">4718</span>      NavigableMap&lt;Long, byte[]&gt; navigableMap = result.getMap().get(FAMILY)<a name="line.4718"></a>
-<span class="sourceLineNo">4719</span>          .get(QUALIFIER);<a name="line.4719"></a>
-<span class="sourceLineNo">4720</span><a name="line.4720"></a>
-<span class="sourceLineNo">4721</span>      assertEquals("The number of versions of '" + FAMILY + ":" + QUALIFIER + " did not match " +<a name="line.4721"></a>
-<span class="sourceLineNo">4722</span>        versions + "; " + put.toString() + ", " + get.toString(), versions, navigableMap.size());<a name="line.4722"></a>
-<span class="sourceLineNo">4723</span>      for (Map.Entry&lt;Long, byte[]&gt; entry : navigableMap.entrySet()) {<a name="line.4723"></a>
-<span class="sourceLineNo">4724</span>        assertTrue("The value at time " + entry.getKey()<a name="line.4724"></a>
-<span class="sourceLineNo">4725</span>            + " did not match what was put",<a name="line.4725"></a>
-<span class="sourceLineNo">4726</span>            Bytes.equals(VALUE, entry.getValue()));<a name="line.4726"></a>
-<span class="sourceLineNo">4727</span>      }<a name="line.4727"></a>
+<span class="sourceLineNo">4643</span>    // cell = "bbbb", using "aaaa" to compare only LESS/LESS_OR_EQUAL/NOT_EQUAL<a name="line.4643"></a>
+<span class="sourceLineNo">4644</span>    // turns out "match"<a name="line.4644"></a>
+<span class="sourceLineNo">4645</span>    boolean ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.GREATER, value1, delete);<a name="line.4645"></a>
+<span class="sourceLineNo">4646</span>    assertEquals(ok, false);<a name="line.4646"></a>
+<span class="sourceLineNo">4647</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.EQUAL, value1, delete);<a name="line.4647"></a>
+<span class="sourceLineNo">4648</span>    assertEquals(ok, false);<a name="line.4648"></a>
+<span class="sourceLineNo">4649</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.GREATER_OR_EQUAL, value1, delete);<a name="line.4649"></a>
+<span class="sourceLineNo">4650</span>    assertEquals(ok, false);<a name="line.4650"></a>
+<span class="sourceLineNo">4651</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.LESS, value1, delete);<a name="line.4651"></a>
+<span class="sourceLineNo">4652</span>    assertEquals(ok, true);<a name="line.4652"></a>
+<span class="sourceLineNo">4653</span>    table.put(put2);<a name="line.4653"></a>
+<span class="sourceLineNo">4654</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.LESS_OR_EQUAL, value1, delete);<a name="line.4654"></a>
+<span class="sourceLineNo">4655</span>    assertEquals(ok, true);<a name="line.4655"></a>
+<span class="sourceLineNo">4656</span>    table.put(put2);<a name="line.4656"></a>
+<span class="sourceLineNo">4657</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value1, delete);<a name="line.4657"></a>
+<span class="sourceLineNo">4658</span>    assertEquals(ok, true);<a name="line.4658"></a>
+<span class="sourceLineNo">4659</span><a name="line.4659"></a>
+<span class="sourceLineNo">4660</span>    // cell = "cccc", using "dddd" to compare only LARGER/LARGER_OR_EQUAL/NOT_EQUAL<a name="line.4660"></a>
+<span class="sourceLineNo">4661</span>    // turns out "match"<a name="line.4661"></a>
+<span class="sourceLineNo">4662</span>    table.put(put3);<a name="line.4662"></a>
+<span class="sourceLineNo">4663</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.LESS, value4, delete);<a name="line.4663"></a>
+<span class="sourceLineNo">4664</span>    assertEquals(ok, false);<a name="line.4664"></a>
+<span class="sourceLineNo">4665</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.LESS_OR_EQUAL, value4, delete);<a name="line.4665"></a>
+<span class="sourceLineNo">4666</span>    assertEquals(ok, false);<a name="line.4666"></a>
+<span class="sourceLineNo">4667</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.EQUAL, value4, delete);<a name="line.4667"></a>
+<span class="sourceLineNo">4668</span>    assertEquals(ok, false);<a name="line.4668"></a>
+<span class="sourceLineNo">4669</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.GREATER, value4, delete);<a name="line.4669"></a>
+<span class="sourceLineNo">4670</span>    assertEquals(ok, true);<a name="line.4670"></a>
+<span class="sourceLineNo">4671</span>    table.put(put3);<a name="line.4671"></a>
+<span class="sourceLineNo">4672</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.GREATER_OR_EQUAL, value4, delete);<a name="line.4672"></a>
+<span class="sourceLineNo">4673</span>    assertEquals(ok, true);<a name="line.4673"></a>
+<span class="sourceLineNo">4674</span>    table.put(put3);<a name="line.4674"></a>
+<span class="sourceLineNo">4675</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value4, delete);<a name="line.4675"></a>
+<span class="sourceLineNo">4676</span>    assertEquals(ok, true);<a name="line.4676"></a>
+<span class="sourceLineNo">4677</span><a name="line.4677"></a>
+<span class="sourceLineNo">4678</span>    // cell = "bbbb", using "bbbb" to compare only GREATER_OR_EQUAL/LESS_OR_EQUAL/EQUAL<a name="line.4678"></a>
+<span class="sourceLineNo">4679</span>    // turns out "match"<a name="line.4679"></a>
+<span class="sourceLineNo">4680</span>    table.put(put2);<a name="line.4680"></a>
+<span class="sourceLineNo">4681</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.GREATER, value2, delete);<a name="line.4681"></a>
+<span class="sourceLineNo">4682</span>    assertEquals(ok, false);<a name="line.4682"></a>
+<span class="sourceLineNo">4683</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.NOT_EQUAL, value2, delete);<a name="line.4683"></a>
+<span class="sourceLineNo">4684</span>    assertEquals(ok, false);<a name="line.4684"></a>
+<span class="sourceLineNo">4685</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.LESS, value2, delete);<a name="line.4685"></a>
+<span class="sourceLineNo">4686</span>    assertEquals(ok, false);<a name="line.4686"></a>
+<span class="sourceLineNo">4687</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.GREATER_OR_EQUAL, value2, delete);<a name="line.4687"></a>
+<span class="sourceLineNo">4688</span>    assertEquals(ok, true);<a name="line.4688"></a>
+<span class="sourceLineNo">4689</span>    table.put(put2);<a name="line.4689"></a>
+<span class="sourceLineNo">4690</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.LESS_OR_EQUAL, value2, delete);<a name="line.4690"></a>
+<span class="sourceLineNo">4691</span>    assertEquals(ok, true);<a name="line.4691"></a>
+<span class="sourceLineNo">4692</span>    table.put(put2);<a name="line.4692"></a>
+<span class="sourceLineNo">4693</span>    ok = table.checkAndDelete(ROW, FAMILY, QUALIFIER, CompareOp.EQUAL, value2, delete);<a name="line.4693"></a>
+<span class="sourceLineNo">4694</span>    assertEquals(ok, true);<a name="line.4694"></a>
+<span class="sourceLineNo">4695</span>  }<a name="line.4695"></a>
+<span class="sourceLineNo">4696</span><a name="line.4696"></a>
+<span class="sourceLineNo">4697</span>  /**<a name="line.4697"></a>
+<span class="sourceLineNo">4698</span>  * Test ScanMetrics<a name="line.4698"></a>
+<span class="sourceLineNo">4699</span>  * @throws Exception<a name="line.4699"></a>
+<span class="sourceLineNo">4700</span>  */<a name="line.4700"></a>
+<span class="sourceLineNo">4701</span>  @Test<a name="line.4701"></a>
+<span class="sourceLineNo">4702</span>  @SuppressWarnings ("unused")<a name="line.4702"></a>
+<span class="sourceLineNo">4703</span>  public void testScanMetrics() throws Exception {<a name="line.4703"></a>
+<span class="sourceLineNo">4704</span>    TableName TABLENAME = TableName.valueOf("testScanMetrics");<a name="line.4704"></a>
+<span class="sourceLineNo">4705</span><a name="line.4705"></a>
+<span class="sourceLineNo">4706</span>    // Set up test table:<a name="line.4706"></a>
+<span class="sourceLineNo">4707</span>    // Create table:<a name="line.4707"></a>
+<span class="sourceLineNo">4708</span>    Table ht = TEST_UTIL.createMultiRegionTable(TABLENAME, FAMILY);<a name="line.4708"></a>
+<span class="sourceLineNo">4709</span>    int numOfRegions = -1;<a name="line.4709"></a>
+<span class="sourceLineNo">4710</span>    try (RegionLocator r = TEST_UTIL.getConnection().getRegionLocator(TABLENAME)) {<a name="line.4710"></a>
+<span class="sourceLineNo">4711</span>      numOfRegions = r.getStartKeys().length;<a name="line.4711"></a>
+<span class="sourceLineNo">4712</span>    }<a name="line.4712"></a>
+<span class="sourceLineNo">4713</span>    // Create 3 rows in the table, with rowkeys starting with "zzz*" so that<a name="line.4713"></a>
+<span class="sourceLineNo">4714</span>    // scan are forced to hit all the regions.<a name="line.4714"></a>
+<span class="sourceLineNo">4715</span>    Put put1 = new Put(Bytes.toBytes("zzz1"));<a name="line.4715"></a>
+<span class="sourceLineNo">4716</span>    put1.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.4716"></a>
+<span class="sourceLineNo">4717</span>    Put put2 = new Put(Bytes.toBytes("zzz2"));<a name="line.4717"></a>
+<span class="sourceLineNo">4718</span>    put2.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.4718"></a>
+<span class="sourceLineNo">4719</span>    Put put3 = new Put(Bytes.toBytes("zzz3"));<a name="line.4719"></a>
+<span class="sourceLineNo">4720</span>    put3.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.4720"></a>
+<span class="sourceLineNo">4721</span>    ht.put(Arrays.asList(put1, put2, put3));<a name="line.4721"></a>
+<span class="sourceLineNo">4722</span><a name="line.4722"></a>
+<span class="sourceLineNo">4723</span>    Scan scan1 = new Scan();<a name="line.4723"></a>
+<span class="sourceLineNo">4724</span>    int numRecords = 0;<a name="line.4724"></a>
+<span class="sourceLineNo">4725</span>    ResultScanner scanner = ht.getScanner(scan1);<a name="line.4725"></a>
+<span class="sourceLineNo">4726</span>    for(Result result : scanner) {<a name="line.4726"></a>
+<span class="sourceLineNo">4727</span>      numRecords++;<a name="line.4727"></a>
 <span class="sourceLineNo">4728</span>    }<a name="line.4728"></a>
-<span class="sourceLineNo">4729</span><a name="line.4729"></a>
-<span class="sourceLineNo">4730</span>    final Object waitLock = new Object();<a name="line.4730"></a>
-<span class="sourceLineNo">4731</span>    ExecutorService executorService = Executors.newFixedThreadPool(numVersions);<a name="line.4731"></a>
-<span class="sourceLineNo">4732</span>    final AtomicReference&lt;AssertionError&gt; error = new AtomicReference&lt;AssertionError&gt;(null);<a name="line.4732"></a>
-<span class="sourceLineNo">4733</span>    for (int versions = numVersions; versions &lt; numVersions * 2; versions++) {<a name="line.4733"></a>
-<span class="sourceLineNo">4734</span>      final int versionsCopy = versions;<a name="line.4734"></a>
-<span class="sourceLineNo">4735</span>      executorService.submit(new Callable&lt;Void&gt;() {<a name="line.4735"></a>
-<span class="sourceLineNo">4736</span>        @Override<a name="line.4736"></a>
-<span class="sourceLineNo">4737</span>        public Void call() {<a name="line.4737"></a>
-<span class="sourceLineNo">4738</span>          try {<a name="line.4738"></a>
-<span class="sourceLineNo">4739</span>            Put put = new Put(ROW);<a name="line.4739"></a>
-<span class="sourceLineNo">4740</span>            put.addColumn(FAMILY, QUALIFIER, ts + versionsCopy, VALUE);<a name="line.4740"></a>
-<span class="sourceLineNo">4741</span>            table.put(put);<a name="line.4741"></a>
-<span class="sourceLineNo">4742</span><a name="line.4742"></a>
-<span class="sourceLineNo">4743</span>            Result result = table.get(get);<a name="line.4743"></a>
-<span class="sourceLineNo">4744</span>            NavigableMap&lt;Long, byte[]&gt; navigableMap = result.getMap()<a name="line.4744"></a>
-<span class="sourceLineNo">4745</span>                .get(FAMILY).get(QUALIFIER);<a name="line.4745"></a>
-<span class="sourceLineNo">4746</span><a name="line.4746"></a>
-<span class="sourceLineNo">4747</span>            assertEquals("The number of versions of '" + Bytes.toString(FAMILY) + ":"<a name="line.4747"></a>
-<span class="sourceLineNo">4748</span>                + Bytes.toString(QUALIFIER) + " did not match " + versionsCopy, versionsCopy,<a name="line.4748"></a>
-<span class="sourceLineNo">4749</span>                navigableMap.size());<a name="line.4749"></a>
-<span class="sourceLineNo">4750</span>            for (Map.Entry&lt;Long, byte[]&gt; entry : navigableMap.entrySet()) {<a name="line.4750"></a>
-<span class="sourceLineNo">4751</span>              assertTrue("The value at time " + entry.getKey()<a name="line.4751"></a>
-<span class="sourceLineNo">4752</span>                  + " did not match what was put",<a name="line.4752"></a>
-<span class="sourceLineNo">4753</span>                  Bytes.equals(VALUE, entry.getValue()));<a name="line.4753"></a>
-<span class="sourceLineNo">4754</span>            }<a name="line.4754"></a>
-<span class="sourceLineNo">4755</span>            synchronized (waitLock) {<a name="line.4755"></a>
-<span class="sourceLineNo">4756</span>              waitLock.wait();<a name="line.4756"></a>
-<span class="sourceLineNo">4757</span>            }<a name="line.4757"></a>
-<span class="sourceLineNo">4758</span>          } catch (Exception e) {<a name="line.4758"></a>
-<span class="sourceLineNo">4759</span>          } catch (AssertionError e) {<a name="line.4759"></a>
-<span class="sourceLineNo">4760</span>            // the error happens in a thread, it won't fail the test,<a name="line.4760"></a>
-<span class="sourceLineNo">4761</span>            // need to pass it to the caller for proper handling.<a name="line.4761"></a>
-<span class="sourceLineNo">4762</span>            error.set(e);<a name="line.4762"></a>
-<span class="sourceLineNo">4763</span>            LOG.error(e);<a name="line.4763"></a>
-<span class="sourceLineNo">4764</span>          }<a name="line.4764"></a>
-<span class="sourceLineNo">4765</span><a name="line.4765"></a>
-<span class="sourceLineNo">4766</span>          return null;<a name="line.4766"></a>
-<span class="sourceLineNo">4767</span>        }<a name="line.4767"></a>
-<span class="sourceLineNo">4768</span>      });<a name="line.4768"></a>
-<span class="sourceLineNo">4769</span>    }<a name="line.4769"></a>
-<span class="sourceLineNo">4770</span>    synchronized (waitLock) {<a name="line.4770"></a>
-<span class="sourceLineNo">4771</span>      waitLock.notifyAll()

<TRUNCATED>

[22/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html
new file mode 100644
index 0000000..b3d3176
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html
@@ -0,0 +1,373 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestRegionIncrement.CrossRowCellIncrementer (Apache HBase 2.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="TestRegionIncrement.CrossRowCellIncrementer (Apache HBase 2.0.0-SNAPSHOT Test API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestRegionIncrement.CrossRowCellIncrementer.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" target="_top">Frames</a></li>
+<li><a href="TestRegionIncrement.CrossRowCellIncrementer.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested_classes_inherited_from_class_java.lang.Thread">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_detail">Method</a></li>
+</ul>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.regionserver</div>
+<h2 title="Class TestRegionIncrement.CrossRowCellIncrementer" class="title">Class TestRegionIncrement.CrossRowCellIncrementer</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">java.lang.Thread</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.regionserver.TestRegionIncrement.CrossRowCellIncrementer</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dd>
+</dl>
+<hr>
+<br>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.139">TestRegionIncrement.CrossRowCellIncrementer</a>
+extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
+<div class="block">Increments a random row's Cell <code>count</code> times.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested_class_summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested_classes_inherited_from_class_java.lang.Thread">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.State.html?is-external=true" title="class or interface in java.lang">Thread.State</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field_summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#count">count</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.client.Increment[]</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#increments">increments</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.HRegion</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#region">region</a></strong></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields_inherited_from_class_java.lang.Thread">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#MAX_PRIORITY" title="class or interface in java.lang">MAX_PRIORITY</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#MIN_PRIORITY" title="class or interface in java.lang">MIN_PRIORITY</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#NORM_PRIORITY" title="class or interface in java.lang">NORM_PRIORITY</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#TestRegionIncrement.CrossRowCellIncrementer(int,%20int,%20org.apache.hadoop.hbase.regionserver.HRegion,%20int)">TestRegionIncrement.CrossRowCellIncrementer</a></strong>(int&nbsp;i,
+                                                                                      int&nbsp;count,
+                                                                                      org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+                                                                                      int&nbsp;range)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#run()">run</a></strong>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods_inherited_from_class_java.lang.Thread">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#activeCount()" title="class or interface in java.lang">activeCount</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#checkAccess()" title="class or interface in java.lang">checkAccess</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#countStackFrames()" title="class or interface in java.lang">countStackFrames</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#currentThread()" title="class or interface in java.lang">currentThread</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#destroy()" title="class or interface in java.lang">destroy</a>, <a href="http://docs.oracle.com
 /javase/7/docs/api/java/lang/Thread.html?is-external=true#dumpStack()" title="class or interface in java.lang">dumpStack</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#enumerate(java.lang.Thread[])" title="class or interface in java.lang">enumerate</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getAllStackTraces()" title="class or interface in java.lang">getAllStackTraces</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getContextClassLoader()" title="class or interface in java.lang">getContextClassLoader</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getDefaultUncaughtExceptionHandler()" title="class or interface in java.lang">getDefaultUncaughtExceptionHandler</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getId()" title="class or interface in java.lan
 g">getId</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getName()" title="class or interface in java.lang">getName</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getPriority()" title="class or interface in java.lang">getPriority</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getStackTrace()" title="class or interface in java.lang">getStackTrace</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getState()" title="class or interface in java.lang">getState</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getThreadGroup()" title="class or interface in java.lang">getThreadGroup</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getUncaughtExceptionHandler()" title="class or interface in java.lang">getUncaughtExceptionHa
 ndler</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#holdsLock(java.lang.Object)" title="class or interface in java.lang">holdsLock</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#interrupt()" title="class or interface in java.lang">interrupt</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#interrupted()" title="class or interface in java.lang">interrupted</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#isAlive()" title="class or interface in java.lang">isAlive</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#isDaemon()" title="class or interface in java.lang">isDaemon</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#isInterrupted()" title="class or interface in java.lang">isInterrupted</a>, <a href="http://docs.o
 racle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#join()" title="class or interface in java.lang">join</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#join(long)" title="class or interface in java.lang">join</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#join(long,%20int)" title="class or interface in java.lang">join</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#resume()" title="class or interface in java.lang">resume</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#setContextClassLoader(java.lang.ClassLoader)" title="class or interface in java.lang">setContextClassLoader</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#setDaemon(boolean)" title="class or interface in java.lang">setDaemon</a>, <a href="http://docs.oracle.com/javase/7/docs/
 api/java/lang/Thread.html?is-external=true#setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)" title="class or interface in java.lang">setDefaultUncaughtExceptionHandler</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#setName(java.lang.String)" title="class or interface in java.lang">setName</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#setPriority(int)" title="class or interface in java.lang">setPriority</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)" title="class or interface in java.lang">setUncaughtExceptionHandler</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#sleep(long)" title="class or interface in java.lang">sleep</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-
 external=true#sleep(long,%20int)" title="class or interface in java.lang">sleep</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#start()" title="class or interface in java.lang">start</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#stop()" title="class or interface in java.lang">stop</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#stop(java.lang.Throwable)" title="class or interface in java.lang">stop</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#suspend()" title="class or interface in java.lang">suspend</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#yield()" title="class or interface in java.lang">yiel
 d</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/j
 ava/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field_detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="count">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>count</h4>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#line.140">count</a></pre>
+</li>
+</ul>
+<a name="region">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>region</h4>
+<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#line.141">region</a></pre>
+</li>
+</ul>
+<a name="increments">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>increments</h4>
+<pre>private final&nbsp;org.apache.hadoop.hbase.client.Increment[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#line.142">increments</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestRegionIncrement.CrossRowCellIncrementer(int, int, org.apache.hadoop.hbase.regionserver.HRegion, int)">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestRegionIncrement.CrossRowCellIncrementer</h4>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#line.144">TestRegionIncrement.CrossRowCellIncrementer</a>(int&nbsp;i,
+                                           int&nbsp;count,
+                                           org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+                                           int&nbsp;range)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="run()">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>run</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#line.157">run</a>()</pre>
+<dl>
+<dt><strong>Specified by:</strong></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true#run()" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
+<dt><strong>Overrides:</strong></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#run()" title="class or interface in java.lang">run</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestRegionIncrement.CrossRowCellIncrementer.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" target="_top">Frames</a></li>
+<li><a href="TestRegionIncrement.CrossRowCellIncrementer.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested_classes_inherited_from_class_java.lang.Thread">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_detail">Method</a></li>
+</ul>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html
new file mode 100644
index 0000000..cdd05e0
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html
@@ -0,0 +1,373 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestRegionIncrement.SingleCellIncrementer (Apache HBase 2.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="TestRegionIncrement.SingleCellIncrementer (Apache HBase 2.0.0-SNAPSHOT Test API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestRegionIncrement.SingleCellIncrementer.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" target="_top">Frames</a></li>
+<li><a href="TestRegionIncrement.SingleCellIncrementer.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested_classes_inherited_from_class_java.lang.Thread">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_detail">Method</a></li>
+</ul>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.regionserver</div>
+<h2 title="Class TestRegionIncrement.SingleCellIncrementer" class="title">Class TestRegionIncrement.SingleCellIncrementer</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">java.lang.Thread</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.regionserver.TestRegionIncrement.SingleCellIncrementer</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dd>
+</dl>
+<hr>
+<br>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.109">TestRegionIncrement.SingleCellIncrementer</a>
+extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
+<div class="block">Increments a single cell a bunch of times.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested_class_summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested_classes_inherited_from_class_java.lang.Thread">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.State.html?is-external=true" title="class or interface in java.lang">Thread.State</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field_summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#count">count</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.client.Increment</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#increment">increment</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.HRegion</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#region">region</a></strong></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields_inherited_from_class_java.lang.Thread">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#MAX_PRIORITY" title="class or interface in java.lang">MAX_PRIORITY</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#MIN_PRIORITY" title="class or interface in java.lang">MIN_PRIORITY</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#NORM_PRIORITY" title="class or interface in java.lang">NORM_PRIORITY</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#TestRegionIncrement.SingleCellIncrementer(int,%20int,%20org.apache.hadoop.hbase.regionserver.HRegion,%20org.apache.hadoop.hbase.client.Increment)">TestRegionIncrement.SingleCellIncrementer</a></strong>(int&nbsp;i,
+                                                                                  int&nbsp;count,
+                                                                                  org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+                                                                                  org.apache.hadoop.hbase.client.Increment&nbsp;increment)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#run()">run</a></strong>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods_inherited_from_class_java.lang.Thread">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#activeCount()" title="class or interface in java.lang">activeCount</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#checkAccess()" title="class or interface in java.lang">checkAccess</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#countStackFrames()" title="class or interface in java.lang">countStackFrames</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#currentThread()" title="class or interface in java.lang">currentThread</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#destroy()" title="class or interface in java.lang">destroy</a>, <a href="http://docs.oracle.com
 /javase/7/docs/api/java/lang/Thread.html?is-external=true#dumpStack()" title="class or interface in java.lang">dumpStack</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#enumerate(java.lang.Thread[])" title="class or interface in java.lang">enumerate</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getAllStackTraces()" title="class or interface in java.lang">getAllStackTraces</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getContextClassLoader()" title="class or interface in java.lang">getContextClassLoader</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getDefaultUncaughtExceptionHandler()" title="class or interface in java.lang">getDefaultUncaughtExceptionHandler</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getId()" title="class or interface in java.lan
 g">getId</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getName()" title="class or interface in java.lang">getName</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getPriority()" title="class or interface in java.lang">getPriority</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getStackTrace()" title="class or interface in java.lang">getStackTrace</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getState()" title="class or interface in java.lang">getState</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getThreadGroup()" title="class or interface in java.lang">getThreadGroup</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#getUncaughtExceptionHandler()" title="class or interface in java.lang">getUncaughtExceptionHa
 ndler</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#holdsLock(java.lang.Object)" title="class or interface in java.lang">holdsLock</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#interrupt()" title="class or interface in java.lang">interrupt</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#interrupted()" title="class or interface in java.lang">interrupted</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#isAlive()" title="class or interface in java.lang">isAlive</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#isDaemon()" title="class or interface in java.lang">isDaemon</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#isInterrupted()" title="class or interface in java.lang">isInterrupted</a>, <a href="http://docs.o
 racle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#join()" title="class or interface in java.lang">join</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#join(long)" title="class or interface in java.lang">join</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#join(long,%20int)" title="class or interface in java.lang">join</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#resume()" title="class or interface in java.lang">resume</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#setContextClassLoader(java.lang.ClassLoader)" title="class or interface in java.lang">setContextClassLoader</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#setDaemon(boolean)" title="class or interface in java.lang">setDaemon</a>, <a href="http://docs.oracle.com/javase/7/docs/
 api/java/lang/Thread.html?is-external=true#setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)" title="class or interface in java.lang">setDefaultUncaughtExceptionHandler</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#setName(java.lang.String)" title="class or interface in java.lang">setName</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#setPriority(int)" title="class or interface in java.lang">setPriority</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)" title="class or interface in java.lang">setUncaughtExceptionHandler</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#sleep(long)" title="class or interface in java.lang">sleep</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-
 external=true#sleep(long,%20int)" title="class or interface in java.lang">sleep</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#start()" title="class or interface in java.lang">start</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#stop()" title="class or interface in java.lang">stop</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#stop(java.lang.Throwable)" title="class or interface in java.lang">stop</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#suspend()" title="class or interface in java.lang">suspend</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#yield()" title="class or interface in java.lang">yiel
 d</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/j
 ava/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field_detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="count">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>count</h4>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#line.110">count</a></pre>
+</li>
+</ul>
+<a name="region">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>region</h4>
+<pre>private final&nbsp;org.apache.hadoop.hbase.regionserver.HRegion <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#line.111">region</a></pre>
+</li>
+</ul>
+<a name="increment">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>increment</h4>
+<pre>private final&nbsp;org.apache.hadoop.hbase.client.Increment <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#line.112">increment</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestRegionIncrement.SingleCellIncrementer(int, int, org.apache.hadoop.hbase.regionserver.HRegion, org.apache.hadoop.hbase.client.Increment)">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestRegionIncrement.SingleCellIncrementer</h4>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#line.114">TestRegionIncrement.SingleCellIncrementer</a>(int&nbsp;i,
+                                         int&nbsp;count,
+                                         org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
+                                         org.apache.hadoop.hbase.client.Increment&nbsp;increment)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="run()">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>run</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#line.124">run</a>()</pre>
+<dl>
+<dt><strong>Specified by:</strong></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true#run()" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
+<dt><strong>Overrides:</strong></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true#run()" title="class or interface in java.lang">run</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestRegionIncrement.SingleCellIncrementer.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" target="_top">Frames</a></li>
+<li><a href="TestRegionIncrement.SingleCellIncrementer.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested_classes_inherited_from_class_java.lang.Thread">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_detail">Method</a></li>
+</ul>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html
new file mode 100644
index 0000000..79c9199
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html
@@ -0,0 +1,518 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestRegionIncrement (Apache HBase 2.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="TestRegionIncrement (Apache HBase 2.0.0-SNAPSHOT Test API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestRegionIncrement.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" target="_top">Frames</a></li>
+<li><a href="TestRegionIncrement.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_detail">Method</a></li>
+</ul>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.regionserver</div>
+<h2 title="Class TestRegionIncrement" class="title">Class TestRegionIncrement</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.regionserver.TestRegionIncrement</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.62">TestRegionIncrement</a>
+extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+<div class="block">Increments with some concurrency against a region to ensure we get the right answer.
+ Test is parameterized to run the fast and slow path increments; if fast,
+ HRegion.INCREMENT_FAST_BUT_NARROW_CONSISTENCY_KEY is true.
+
+ <p>There is similar test up in TestAtomicOperation. It does a test where it has 100 threads
+ doing increments across two column families all on one row and the increments are connected to
+ prove atomicity on row.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested_class_summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static class&nbsp;</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.CrossRowCellIncrementer</a></strong></code>
+<div class="block">Increments a random row's Cell <code>count</code> times.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static class&nbsp;</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.SingleCellIncrementer</a></strong></code>
+<div class="block">Increments a single cell a bunch of times.</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field_summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#INCREMENT_BYTES">INCREMENT_BYTES</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#INCREMENT_COUNT">INCREMENT_COUNT</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#LOG">LOG</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>org.junit.rules.TestName</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#name">name</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#THREAD_COUNT">THREAD_COUNT</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>org.junit.rules.TestRule</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#timeout">timeout</a></strong></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#TestRegionIncrement()">TestRegionIncrement</a></strong>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#closeRegion(org.apache.hadoop.hbase.regionserver.HRegion)">closeRegion</a></strong>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.hbase.regionserver.HRegion</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#getRegion(org.apache.hadoop.conf.Configuration,%20java.lang.String)">getRegion</a></strong>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                  <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;tableName)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#setUp()">setUp</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#tearDown()">tearDown</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#testContendedAcrossCellsIncrement()">testContendedAcrossCellsIncrement</a></strong>()</code>
+<div class="block">Have each thread update its own Cell.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#testMVCCCausingMisRead()">testMVCCCausingMisRead</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#testUnContendedSingleCellIncrement()">testUnContendedSingleCellIncrement</a></strong>()</code>
+<div class="block">Have each thread update its own Cell.</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang
 /Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field_detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="LOG">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.63">LOG</a></pre>
+</li>
+</ul>
+<a name="name">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>name</h4>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.64">name</a></pre>
+</li>
+</ul>
+<a name="timeout">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>timeout</h4>
+<pre>public final&nbsp;org.junit.rules.TestRule <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.65">timeout</a></pre>
+</li>
+</ul>
+<a name="TEST_UTIL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TEST_UTIL</h4>
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.68">TEST_UTIL</a></pre>
+</li>
+</ul>
+<a name="INCREMENT_BYTES">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>INCREMENT_BYTES</h4>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.69">INCREMENT_BYTES</a></pre>
+</li>
+</ul>
+<a name="THREAD_COUNT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THREAD_COUNT</h4>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.70">THREAD_COUNT</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRegionIncrement.THREAD_COUNT">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+<a name="INCREMENT_COUNT">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>INCREMENT_COUNT</h4>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.71">INCREMENT_COUNT</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestRegionIncrement.INCREMENT_COUNT">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestRegionIncrement()">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestRegionIncrement</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.62">TestRegionIncrement</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="setUp()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setUp</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.74">setUp</a>()
+           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+<a name="tearDown()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tearDown</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.79">tearDown</a>()
+              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+<a name="getRegion(org.apache.hadoop.conf.Configuration, java.lang.String)">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getRegion</h4>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HRegion&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.83">getRegion</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                                                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;tableName)
+                                                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
+</li>
+</ul>
+<a name="closeRegion(org.apache.hadoop.hbase.regionserver.HRegion)">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>closeRegion</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.91">closeRegion</a>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region)
+                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
+</li>
+</ul>
+<a name="testMVCCCausingMisRead()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testMVCCCausingMisRead</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.97">testMVCCCausingMisRead</a>()
+                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
+</li>
+</ul>
+<a name="testUnContendedSingleCellIncrement()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testUnContendedSingleCellIncrement</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.176">testUnContendedSingleCellIncrement</a>()
+                                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                               <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
+<div class="block">Have each thread update its own Cell. Avoid contention with another thread.</div>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd></dl>
+</li>
+</ul>
+<a name="testContendedAcrossCellsIncrement()">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testContendedAcrossCellsIncrement</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#line.216">testContendedAcrossCellsIncrement</a>()
+                                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                                              <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
+<div class="block">Have each thread update its own Cell. Avoid contention with another thread.
+ This is</div>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd></dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestRegionIncrement.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" target="_top">Frames</a></li>
+<li><a href="TestRegionIncrement.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested_class_summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_detail">Method</a></li>
+</ul>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html
index 8eb7be4..e16f7c8 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html
@@ -35,7 +35,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Prev Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.MockedFailedMergedRegionCreation.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -718,7 +718,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Prev Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.MockedFailedMergedRegionCreation.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
index bf33407..86f2968 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
@@ -118,7 +118,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.504">TestRegionMergeTransactionOnCluster.MyMaster</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#line.509">TestRegionMergeTransactionOnCluster.MyMaster</a>
 extends org.apache.hadoop.hbase.master.HMaster</pre>
 </li>
 </ul>
@@ -288,7 +288,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestRegionMergeTransactionOnCluster.MyMaster</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html#line.505">TestRegionMergeTransactionOnCluster.MyMaster</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html#line.510">TestRegionMergeTransactionOnCluster.MyMaster</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                             org.apache.hadoop.hbase.CoordinatedStateManager&nbsp;cp)
                                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                                     org.apache.zookeeper.KeeperException,
@@ -313,7 +313,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createRpcServices</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.RSRpcServices&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html#line.512">createRpcServices</a>()
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.RSRpcServices&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html#line.517">createRpcServices</a>()
                                                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>


[48/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 4d40ea3..ab9aff8 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -17424,6 +17424,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/monitoring/StateDumpServlet.html#DEFAULT_TAIL_KB">DEFAULT_TAIL_KB</a></span> - Static variable in class org.apache.hadoop.hbase.monitoring.<a href="./org/apache/hadoop/hbase/monitoring/StateDumpServlet.html" title="class in org.apache.hadoop.hbase.monitoring">StateDumpServlet</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HConstants.html#DEFAULT_TEMPORARY_HDFS_DIRECTORY">DEFAULT_TEMPORARY_HDFS_DIRECTORY</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html#DEFAULT_THREAD_KEEP_ALIVE_TIME_SEC">DEFAULT_THREAD_KEEP_ALIVE_TIME_SEC</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="./org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html" title="class in org.apache.hadoop.hbase.thrift">TBoundedThreadPoolServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/FSUtils.html#DEFAULT_THREAD_POOLSIZE">DEFAULT_THREAD_POOLSIZE</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/FSUtils.html" title="class in org.apache.hadoop.hbase.util">FSUtils</a></dt>
@@ -41938,7 +41940,7 @@
 <dt><a href="./org/apache/hadoop/hbase/regionserver/wal/HLogKey.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="strong">HLogKey</span></a> - Class in <a href="./org/apache/hadoop/hbase/regionserver/wal/package-summary.html">org.apache.hadoop.hbase.regionserver.wal</a></dt>
 <dd>
 <div class="block"><span class="strong">Deprecated.</span>
-<div class="block"><i>use WALKey.  as of 2.0.  Remove in 3.0</i></div>
+<div class="block"><i>use WALKey. Deprecated as of 1.0 (HBASE-12522). Remove in 2.0</i></div>
 </div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/wal/HLogKey.html#HLogKey()">HLogKey()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.wal.<a href="./org/apache/hadoop/hbase/regionserver/wal/HLogKey.html" title="class in org.apache.hadoop.hbase.regionserver.wal">HLogKey</a></dt>
@@ -85255,6 +85257,10 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html#tempFunctionCosts">tempFunctionCosts</a></span> - Variable in class org.apache.hadoop.hbase.master.balancer.<a href="./org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">StochasticLoadBalancer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HConstants.html#TEMPORARY_FS_DIRECTORY_KEY">TEMPORARY_FS_DIRECTORY_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>
+<div class="block">Config key for hbase temporary directory in hdfs</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/HFileLink.html#tempPath">tempPath</a></span> - Variable in class org.apache.hadoop.hbase.io.<a href="./org/apache/hadoop/hbase/io/HFileLink.html" title="class in org.apache.hadoop.hbase.io">HFileLink</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactor.html#tempPath">tempPath</a></span> - Variable in class org.apache.hadoop.hbase.mob.compactions.<a href="./org/apache/hadoop/hbase/mob/compactions/PartitionedMobCompactor.html" title="class in org.apache.hadoop.hbase.mob.compactions">PartitionedMobCompactor</a></dt>


[34/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html
index c5c052a..036de4d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html
@@ -7,1999 +7,1998 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span><a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver.wal;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.wal.DefaultWALProvider.WAL_FILE_NAME_DELIMITER;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.FileNotFoundException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.io.InterruptedIOException;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.io.OutputStream;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.lang.management.ManagementFactory;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.lang.management.MemoryUsage;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.lang.reflect.InvocationTargetException;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.net.URLEncoder;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.ArrayList;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Arrays;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Comparator;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.List;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Map;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.NavigableMap;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.BlockingQueue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.CountDownLatch;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.ExecutionException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.commons.logging.Log;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.commons.logging.LogFactory;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.conf.Configuration;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileStatus;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FileSystem;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.Path;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.PathFilter;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.Cell;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HConstants;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.io.util.HeapMemorySizeUtil;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.DrainBarrier;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.wal.DefaultWALProvider;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.wal.WALPrettyPrinter;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.wal.WALProvider.Writer;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hdfs.DFSOutputStream;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hdfs.client.HdfsDataOutputStream;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.util.StringUtils;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.htrace.NullScope;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.htrace.Span;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.htrace.Trace;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.htrace.TraceScope;<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>import com.google.common.annotations.VisibleForTesting;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import com.lmax.disruptor.BlockingWaitStrategy;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import com.lmax.disruptor.EventHandler;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import com.lmax.disruptor.ExceptionHandler;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.lmax.disruptor.LifecycleAware;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.lmax.disruptor.TimeoutException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.lmax.disruptor.dsl.Disruptor;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import com.lmax.disruptor.dsl.ProducerType;<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> * Implementation of {@link WAL} to go against {@link FileSystem}; i.e. keep WALs in HDFS.<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * Only one WAL is ever being written at a time.  When a WAL hits a configured maximum size,<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * it is rolled.  This is done internal to the implementation.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * &lt;p&gt;As data is flushed from the MemStore to other on-disk structures (files sorted by<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * key, hfiles), a WAL becomes obsolete. We can let go of all the log edits/entries for a given<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * HRegion-sequence id.  A bunch of work in the below is done keeping account of these region<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * sequence ids -- what is flushed out to hfiles, and what is yet in WAL and in memory only.<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * &lt;p&gt;It is only practical to delete entire files. Thus, we delete an entire on-disk file<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * &lt;code&gt;F&lt;/code&gt; when all of the edits in &lt;code&gt;F&lt;/code&gt; have a log-sequence-id that's older<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * (smaller) than the most-recent flush.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * &lt;p&gt;To read an WAL, call {@link WALFactory#createReader(org.apache.hadoop.fs.FileSystem,<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * org.apache.hadoop.fs.Path)}.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * &lt;h2&gt;Failure Semantic&lt;/h2&gt;<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * If an exception on append or sync, roll the WAL because the current WAL is now a lame duck;<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * any more appends or syncs will fail also with the same original exception. If we have made<a name="line.120"></a>
-<span class="sourceLineNo">121</span> * successful appends to the WAL and we then are unable to sync them, our current semantic is to<a name="line.121"></a>
-<span class="sourceLineNo">122</span> * return error to the client that the appends failed but also to abort the current context,<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * usually the hosting server. We need to replay the WALs. TODO: Change this semantic. A roll of<a name="line.123"></a>
-<span class="sourceLineNo">124</span> * WAL may be sufficient as long as we have flagged client that the append failed. TODO:<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * replication may pick up these last edits though they have been marked as failed append (Need to<a name="line.125"></a>
-<span class="sourceLineNo">126</span> * keep our own file lengths, not rely on HDFS).<a name="line.126"></a>
-<span class="sourceLineNo">127</span> */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>@InterfaceAudience.Private<a name="line.128"></a>
-<span class="sourceLineNo">129</span>public class FSHLog implements WAL {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  // IMPLEMENTATION NOTES:<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  //<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  // At the core is a ring buffer.  Our ring buffer is the LMAX Disruptor.  It tries to<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  // minimize synchronizations and volatile writes when multiple contending threads as is the case<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // here appending and syncing on a single WAL.  The Disruptor is configured to handle multiple<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  // producers but it has one consumer only (the producers in HBase are IPC Handlers calling append<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  // and then sync).  The single consumer/writer pulls the appends and syncs off the ring buffer.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  // When a handler calls sync, it is given back a future. The producer 'blocks' on the future so<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  // it does not return until the sync completes.  The future is passed over the ring buffer from<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  // the producer/handler to the consumer thread where it does its best to batch up the producer<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  // syncs so one WAL sync actually spans multiple producer sync invocations.  How well the<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  // batching works depends on the write rate; i.e. we tend to batch more in times of<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  // high writes/syncs.<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  //<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  // Calls to append now also wait until the append has been done on the consumer side of the<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  // disruptor.  We used to not wait but it makes the implemenation easier to grok if we have<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  // the region edit/sequence id after the append returns.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  //<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  // TODO: Handlers need to coordinate appending AND syncing.  Can we have the threads contend<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  // once only?  Probably hard given syncs take way longer than an append.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  //<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  // The consumer threads pass the syncs off to multiple syncing threads in a round robin fashion<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  // to ensure we keep up back-to-back FS sync calls (FS sync calls are the long poll writing the<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  // WAL).  The consumer thread passes the futures to the sync threads for it to complete<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  // the futures when done.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  //<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  // The 'sequence' in the below is the sequence of the append/sync on the ringbuffer.  It<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  // acts as a sort-of transaction id.  It is always incrementing.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  //<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  // The RingBufferEventHandler class hosts the ring buffer consuming code.  The threads that<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  // do the actual FS sync are implementations of SyncRunner.  SafePointZigZagLatch is a<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  // synchronization class used to halt the consumer at a safe point --  just after all outstanding<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  // syncs and appends have completed -- so the log roller can swap the WAL out under it.<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private static final Log LOG = LogFactory.getLog(FSHLog.class);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  private static final int DEFAULT_SLOW_SYNC_TIME_MS = 100; // in ms<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>   * The nexus at which all incoming handlers meet.  Does appends and sync with an ordering.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * Appends and syncs are each put on the ring which means handlers need to<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * smash up against the ring twice (can we make it once only? ... maybe not since time to append<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * is so different from time to sync and sometimes we don't want to sync or we want to async<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * the sync).  The ring is where we make sure of our ordering and it is also where we do<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * batching up of handler sync calls.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private final Disruptor&lt;RingBufferTruck&gt; disruptor;<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>   * An executorservice that runs the disruptor AppendEventHandler append executor.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  private final ExecutorService appendExecutor;<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * This fellow is run by the above appendExecutor service but it is all about batching up appends<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * and syncs; it may shutdown without cleaning out the last few appends or syncs.  To guard<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * against this, keep a reference to this handler and do explicit close on way out to make sure<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * all flushed out before we exit.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   */<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  private final RingBufferEventHandler ringBufferEventHandler;<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>   * Map of {@link SyncFuture}s keyed by Handler objects.  Used so we reuse SyncFutures.<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * TODO: Reus FSWALEntry's rather than create them anew each time as we do SyncFutures here.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * TODO: Add a FSWalEntry and SyncFuture as thread locals on handlers rather than have them<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * get them from this Map?<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private final Map&lt;Thread, SyncFuture&gt; syncFuturesByHandler;<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * The highest known outstanding unsync'd WALEdit sequence number where sequence number is the<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * ring buffer sequence.  Maintained by the ring buffer consumer.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   */<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  private volatile long highestUnsyncedSequence = -1;<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>   * Updated to the ring buffer sequence of the last successful sync call.  This can be less than<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * {@link #highestUnsyncedSequence} for case where we have an append where a sync has not yet<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * come in for it.  Maintained by the syncing threads.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  private final AtomicLong highestSyncedSequence = new AtomicLong(0);<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>   * file system instance<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  protected final FileSystem fs;<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>   * WAL directory, where all WAL files would be placed.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   */<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private final Path fullPathLogDir;<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * dir path where old logs are kept.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private final Path fullPathArchiveDir;<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * Matches just those wal files that belong to this wal instance.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   */<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  private final PathFilter ourFiles;<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>   * Prefix of a WAL file, usually the region server name it is hosted on.<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  private final String logFilePrefix;<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>   * Suffix included on generated wal file names<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   */<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  private final String logFileSuffix;<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * Prefix used when checking for wal membership.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  private final String prefixPathStr;<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  private final WALCoprocessorHost coprocessorHost;<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>   * conf object<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  protected final Configuration conf;<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  /** Listeners that are called on WAL events. */<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  private final List&lt;WALActionsListener&gt; listeners =<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    new CopyOnWriteArrayList&lt;WALActionsListener&gt;();<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  @Override<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public void registerWALActionsListener(final WALActionsListener listener) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    this.listeners.add(listener);<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>  @Override<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  public boolean unregisterWALActionsListener(final WALActionsListener listener) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    return this.listeners.remove(listener);<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>  @Override<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public WALCoprocessorHost getCoprocessorHost() {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    return coprocessorHost;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  /**<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * FSDataOutputStream associated with the current SequenceFile.writer<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   */<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  private FSDataOutputStream hdfs_out;<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span>  // All about log rolling if not enough replicas outstanding.<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  // Minimum tolerable replicas, if the actual value is lower than it, rollWriter will be triggered<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  private final int minTolerableReplication;<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  private final int slowSyncNs;<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  // If live datanode count is lower than the default replicas value,<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  // RollWriter will be triggered in each sync(So the RollWriter will be<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // triggered one by one in a short time). Using it as a workaround to slow<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  // down the roll frequency triggered by checkLowReplication().<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  private final AtomicInteger consecutiveLogRolls = new AtomicInteger(0);<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>  private final int lowReplicationRollLimit;<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  // If consecutiveLogRolls is larger than lowReplicationRollLimit,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  // then disable the rolling in checkLowReplication().<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // Enable it if the replications recover.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private volatile boolean lowReplicationRollEnabled = true;<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>   * Class that does accounting of sequenceids in WAL subsystem. Holds oldest outstanding<a name="line.299"></a>
-<span class="sourceLineNo">300</span>   * sequence id as yet not flushed as well as the most recent edit sequence id appended to the<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   * WAL. Has facility for answering questions such as "Is it safe to GC a WAL?".<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   */<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  private SequenceIdAccounting sequenceIdAccounting = new SequenceIdAccounting();<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>   * Current log file.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   */<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  volatile Writer writer;<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>  /** The barrier used to ensure that close() waits for all log rolls and flushes to finish. */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  private final DrainBarrier closeBarrier = new DrainBarrier();<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  /**<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * This lock makes sure only one log roll runs at a time. Should not be taken while any other<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * lock is held. We don't just use synchronized because that results in bogus and tedious<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * findbugs warning when it thinks synchronized controls writer thread safety.  It is held when<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * we are actually rolling the log.  It is checked when we are looking to see if we should roll<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * the log or not.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private final ReentrantLock rollWriterLock = new ReentrantLock(true);<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  private volatile boolean closed = false;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private final AtomicBoolean shutdown = new AtomicBoolean(false);<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // The timestamp (in ms) when the log file was created.<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private final AtomicLong filenum = new AtomicLong(-1);<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // Number of transactions in the current Wal.<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private final AtomicInteger numEntries = new AtomicInteger(0);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // If &gt; than this size, roll the log.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private final long logrollsize;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  /**<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * The total size of wal<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  private AtomicLong totalLogSize = new AtomicLong(0);<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  /*<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * If more than this many logs, force flush of oldest region to oldest edit<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * goes to disk.  If too many and we crash, then will take forever replaying.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * Keep the number of logs tidy.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private final int maxLogs;<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /** Number of log close errors tolerated before we abort */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private final int closeErrorsTolerated;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  private final AtomicInteger closeErrorCount = new AtomicInteger();<a name="line.349"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.regionserver.wal;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.wal.DefaultWALProvider.WAL_FILE_NAME_DELIMITER;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.FileNotFoundException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.InterruptedIOException;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.OutputStream;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.management.ManagementFactory;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.management.MemoryUsage;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.InvocationTargetException;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.URLEncoder;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.ArrayList;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.Arrays;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.Comparator;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.List;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Map;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.NavigableMap;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Set;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.concurrent.BlockingQueue;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.concurrent.CountDownLatch;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.concurrent.ExecutionException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ExecutorService;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.Executors;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.PathFilter;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HConstants;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.io.util.HeapMemorySizeUtil;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.DrainBarrier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.wal.DefaultWALProvider;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.wal.WALPrettyPrinter;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.wal.WALProvider.Writer;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hdfs.DFSOutputStream;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hdfs.client.HdfsDataOutputStream;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.util.StringUtils;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.htrace.NullScope;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.htrace.Span;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.htrace.Trace;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.htrace.TraceScope;<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>import com.google.common.annotations.VisibleForTesting;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import com.lmax.disruptor.BlockingWaitStrategy;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import com.lmax.disruptor.EventHandler;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import com.lmax.disruptor.ExceptionHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import com.lmax.disruptor.LifecycleAware;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import com.lmax.disruptor.TimeoutException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.lmax.disruptor.dsl.Disruptor;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.lmax.disruptor.dsl.ProducerType;<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> * Implementation of {@link WAL} to go against {@link FileSystem}; i.e. keep WALs in HDFS.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * Only one WAL is ever being written at a time.  When a WAL hits a configured maximum size,<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * it is rolled.  This is done internal to the implementation.<a name="line.103"></a>
+<span class="sourceLineNo">104</span> *<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * &lt;p&gt;As data is flushed from the MemStore to other on-disk structures (files sorted by<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * key, hfiles), a WAL becomes obsolete. We can let go of all the log edits/entries for a given<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * HRegion-sequence id.  A bunch of work in the below is done keeping account of these region<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * sequence ids -- what is flushed out to hfiles, and what is yet in WAL and in memory only.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> *<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * &lt;p&gt;It is only practical to delete entire files. Thus, we delete an entire on-disk file<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * &lt;code&gt;F&lt;/code&gt; when all of the edits in &lt;code&gt;F&lt;/code&gt; have a log-sequence-id that's older<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * (smaller) than the most-recent flush.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * &lt;p&gt;To read an WAL, call {@link WALFactory#createReader(org.apache.hadoop.fs.FileSystem,<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * org.apache.hadoop.fs.Path)}.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * &lt;h2&gt;Failure Semantic&lt;/h2&gt;<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * If an exception on append or sync, roll the WAL because the current WAL is now a lame duck;<a name="line.118"></a>
+<span class="sourceLineNo">119</span> * any more appends or syncs will fail also with the same original exception. If we have made<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * successful appends to the WAL and we then are unable to sync them, our current semantic is to<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * return error to the client that the appends failed but also to abort the current context,<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * usually the hosting server. We need to replay the WALs. TODO: Change this semantic. A roll of<a name="line.122"></a>
+<span class="sourceLineNo">123</span> * WAL may be sufficient as long as we have flagged client that the append failed. TODO:<a name="line.123"></a>
+<span class="sourceLineNo">124</span> * replication may pick up these last edits though they have been marked as failed append (Need to<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * keep our own file lengths, not rely on HDFS).<a name="line.125"></a>
+<span class="sourceLineNo">126</span> */<a name="line.126"></a>
+<span class="sourceLineNo">127</span>@InterfaceAudience.Private<a name="line.127"></a>
+<span class="sourceLineNo">128</span>public class FSHLog implements WAL {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  // IMPLEMENTATION NOTES:<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  //<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // At the core is a ring buffer.  Our ring buffer is the LMAX Disruptor.  It tries to<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  // minimize synchronizations and volatile writes when multiple contending threads as is the case<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  // here appending and syncing on a single WAL.  The Disruptor is configured to handle multiple<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  // producers but it has one consumer only (the producers in HBase are IPC Handlers calling append<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  // and then sync).  The single consumer/writer pulls the appends and syncs off the ring buffer.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  // When a handler calls sync, it is given back a future. The producer 'blocks' on the future so<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  // it does not return until the sync completes.  The future is passed over the ring buffer from<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  // the producer/handler to the consumer thread where it does its best to batch up the producer<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  // syncs so one WAL sync actually spans multiple producer sync invocations.  How well the<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  // batching works depends on the write rate; i.e. we tend to batch more in times of<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  // high writes/syncs.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  //<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  // Calls to append now also wait until the append has been done on the consumer side of the<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  // disruptor.  We used to not wait but it makes the implemenation easier to grok if we have<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  // the region edit/sequence id after the append returns.<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  //<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  // TODO: Handlers need to coordinate appending AND syncing.  Can we have the threads contend<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  // once only?  Probably hard given syncs take way longer than an append.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  //<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  // The consumer threads pass the syncs off to multiple syncing threads in a round robin fashion<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  // to ensure we keep up back-to-back FS sync calls (FS sync calls are the long poll writing the<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  // WAL).  The consumer thread passes the futures to the sync threads for it to complete<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  // the futures when done.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  //<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  // The 'sequence' in the below is the sequence of the append/sync on the ringbuffer.  It<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  // acts as a sort-of transaction id.  It is always incrementing.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  //<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  // The RingBufferEventHandler class hosts the ring buffer consuming code.  The threads that<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  // do the actual FS sync are implementations of SyncRunner.  SafePointZigZagLatch is a<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  // synchronization class used to halt the consumer at a safe point --  just after all outstanding<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  // syncs and appends have completed -- so the log roller can swap the WAL out under it.<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  private static final Log LOG = LogFactory.getLog(FSHLog.class);<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private static final int DEFAULT_SLOW_SYNC_TIME_MS = 100; // in ms<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>   * The nexus at which all incoming handlers meet.  Does appends and sync with an ordering.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * Appends and syncs are each put on the ring which means handlers need to<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * smash up against the ring twice (can we make it once only? ... maybe not since time to append<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * is so different from time to sync and sometimes we don't want to sync or we want to async<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * the sync).  The ring is where we make sure of our ordering and it is also where we do<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * batching up of handler sync calls.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   */<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private final Disruptor&lt;RingBufferTruck&gt; disruptor;<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  /**<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * An executorservice that runs the disruptor AppendEventHandler append executor.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   */<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  private final ExecutorService appendExecutor;<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>   * This fellow is run by the above appendExecutor service but it is all about batching up appends<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * and syncs; it may shutdown without cleaning out the last few appends or syncs.  To guard<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * against this, keep a reference to this handler and do explicit close on way out to make sure<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * all flushed out before we exit.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  private final RingBufferEventHandler ringBufferEventHandler;<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * Map of {@link SyncFuture}s keyed by Handler objects.  Used so we reuse SyncFutures.<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * TODO: Reus FSWALEntry's rather than create them anew each time as we do SyncFutures here.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * TODO: Add a FSWalEntry and SyncFuture as thread locals on handlers rather than have them<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * get them from this Map?<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  private final Map&lt;Thread, SyncFuture&gt; syncFuturesByHandler;<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>  /**<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * The highest known outstanding unsync'd WALEdit sequence number where sequence number is the<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * ring buffer sequence.  Maintained by the ring buffer consumer.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   */<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  private volatile long highestUnsyncedSequence = -1;<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Updated to the ring buffer sequence of the last successful sync call.  This can be less than<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * {@link #highestUnsyncedSequence} for case where we have an append where a sync has not yet<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * come in for it.  Maintained by the syncing threads.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   */<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  private final AtomicLong highestSyncedSequence = new AtomicLong(0);<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>   * file system instance<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  protected final FileSystem fs;<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>   * WAL directory, where all WAL files would be placed.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private final Path fullPathLogDir;<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>   * dir path where old logs are kept.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   */<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private final Path fullPathArchiveDir;<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  /**<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   * Matches just those wal files that belong to this wal instance.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private final PathFilter ourFiles;<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>   * Prefix of a WAL file, usually the region server name it is hosted on.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  private final String logFilePrefix;<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /**<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * Suffix included on generated wal file names<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   */<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  private final String logFileSuffix;<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  /**<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Prefix used when checking for wal membership.<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   */<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  private final String prefixPathStr;<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private final WALCoprocessorHost coprocessorHost;<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>   * conf object<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  protected final Configuration conf;<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /** Listeners that are called on WAL events. */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private final List&lt;WALActionsListener&gt; listeners =<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    new CopyOnWriteArrayList&lt;WALActionsListener&gt;();<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>  @Override<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public void registerWALActionsListener(final WALActionsListener listener) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    this.listeners.add(listener);<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>  @Override<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  public boolean unregisterWALActionsListener(final WALActionsListener listener) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    return this.listeners.remove(listener);<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>  @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public WALCoprocessorHost getCoprocessorHost() {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    return coprocessorHost;<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>  /**<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   * FSDataOutputStream associated with the current SequenceFile.writer<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  private FSDataOutputStream hdfs_out;<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  // All about log rolling if not enough replicas outstanding.<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>  // Minimum tolerable replicas, if the actual value is lower than it, rollWriter will be triggered<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  private final int minTolerableReplication;<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  private final int slowSyncNs;<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  // If live datanode count is lower than the default replicas value,<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  // RollWriter will be triggered in each sync(So the RollWriter will be<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  // triggered one by one in a short time). Using it as a workaround to slow<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // down the roll frequency triggered by checkLowReplication().<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private final AtomicInteger consecutiveLogRolls = new AtomicInteger(0);<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>  private final int lowReplicationRollLimit;<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  // If consecutiveLogRolls is larger than lowReplicationRollLimit,<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  // then disable the rolling in checkLowReplication().<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  // Enable it if the replications recover.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  private volatile boolean lowReplicationRollEnabled = true;<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  /**<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * Class that does accounting of sequenceids in WAL subsystem. Holds oldest outstanding<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * sequence id as yet not flushed as well as the most recent edit sequence id appended to the<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * WAL. Has facility for answering questions such as "Is it safe to GC a WAL?".<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private SequenceIdAccounting sequenceIdAccounting = new SequenceIdAccounting();<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Current log file.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  volatile Writer writer;<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>  /** The barrier used to ensure that close() waits for all log rolls and flushes to finish. */<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  private final DrainBarrier closeBarrier = new DrainBarrier();<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>  /**<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * This lock makes sure only one log roll runs at a time. Should not be taken while any other<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * lock is held. We don't just use synchronized because that results in bogus and tedious<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * findbugs warning when it thinks synchronized controls writer thread safety.  It is held when<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * we are actually rolling the log.  It is checked when we are looking to see if we should roll<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * the log or not.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   */<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private final ReentrantLock rollWriterLock = new ReentrantLock(true);<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  private volatile boolean closed = false;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private final AtomicBoolean shutdown = new AtomicBoolean(false);<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // The timestamp (in ms) when the log file was created.<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  private final AtomicLong filenum = new AtomicLong(-1);<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // Number of transactions in the current Wal.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private final AtomicInteger numEntries = new AtomicInteger(0);<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // If &gt; than this size, roll the log.<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  private final long logrollsize;<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   * The total size of wal<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   */<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  private AtomicLong totalLogSize = new AtomicLong(0);<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>   * If more than this many logs, force flush of oldest region to oldest edit<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * goes to disk.  If too many and we crash, then will take forever replaying.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * Keep the number of logs tidy.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  private final int maxLogs;<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>  /** Number of log close errors tolerated before we abort */<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private final int closeErrorsTolerated;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private final AtomicInteger closeErrorCount = new AtomicInteger();<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
 <span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  /**<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   * WAL Comparator; it compares the timestamp (log filenum), present in the log file name.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Throws an IllegalArgumentException if used to compare paths from different wals.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   */<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  final Comparator&lt;Path&gt; LOG_NAME_COMPARATOR = new Comparator&lt;Path&gt;() {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    @Override<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    public int compare(Path o1, Path o2) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      long t1 = getFileNumFromFileName(o1);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      long t2 = getFileNumFromFileName(o2);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      if (t1 == t2) return 0;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      return (t1 &gt; t2) ? 1 : -1;<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><a name="line.365"></a>
-<span class="sourceLineNo">366</span>  /**<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * Map of WAL log file to the latest sequence ids of all regions it has entries of.<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * The map is sorted by the log file creation timestamp (contained in the log file name).<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private NavigableMap&lt;Path, Map&lt;byte[], Long&gt;&gt; byWalRegionSequenceIds =<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    new ConcurrentSkipListMap&lt;Path, Map&lt;byte[], Long&gt;&gt;(LOG_NAME_COMPARATOR);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  /**<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * Exception handler to pass the disruptor ringbuffer.  Same as native implementation only it<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * logs using our logger instead of java native logger.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  static class RingBufferExceptionHandler implements ExceptionHandler {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    @Override<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    public void handleEventException(Throwable ex, long sequence, Object event) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      LOG.error("Sequence=" + sequence + ", event=" + event, ex);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      throw new RuntimeException(ex);<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 void handleOnStartException(Throwable ex) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      LOG.error(ex);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw new RuntimeException(ex);<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>    @Override<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    public void handleOnShutdownException(Throwable ex) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      LOG.error(ex);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      throw new RuntimeException(ex);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    }<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>  /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * Constructor.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   *<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @param fs filesystem handle<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param root path for stored and archived wals<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param logDir dir where wals are stored<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param conf configuration to use<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @throws IOException<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public FSHLog(final FileSystem fs, final Path root, final String logDir, final Configuration conf)<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      throws IOException {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    this(fs, root, logDir, HConstants.HREGION_OLDLOGDIR_NAME, conf, null, true, null, null);<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>  /**<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * Create an edit log at the given &lt;code&gt;dir&lt;/code&gt; location.<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   *<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * You should never have to load an existing log. If there is a log at<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * startup, it should have already been processed and deleted by the time the<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * WAL object is started up.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   *<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param fs filesystem handle<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @param rootDir path to where logs and oldlogs<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @param logDir dir where wals are stored<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * @param archiveDir dir where wals are archived<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * @param conf configuration to use<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param listeners Listeners on WAL events. Listeners passed here will<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * be registered before we do anything else; e.g. the<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * Constructor {@link #rollWriter()}.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * @param failIfWALExists If true IOException will be thrown if files related to this wal<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   *        already exist.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param prefix should always be hostname and port in distributed env and<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   *        it will be URL encoded before being used.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   *        If prefix is null, "wal" will be used<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @param suffix will be url encoded. null is treated as empty. non-empty must start with<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   *        {@link DefaultWALProvider#WAL_FILE_NAME_DELIMITER}<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @throws IOException<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  public FSHLog(final FileSystem fs, final Path rootDir, final String logDir,<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      final String archiveDir, final Configuration conf,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      final List&lt;WALActionsListener&gt; listeners,<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      final boolean failIfWALExists, final String prefix, final String suffix)<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      throws IOException {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    this.fs = fs;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    this.fullPathLogDir = new Path(rootDir, logDir);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    this.fullPathArchiveDir = new Path(rootDir, archiveDir);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    this.conf = conf;<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    if (!fs.exists(fullPathLogDir) &amp;&amp; !fs.mkdirs(fullPathLogDir)) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      throw new IOException("Unable to mkdir " + fullPathLogDir);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    if (!fs.exists(this.fullPathArchiveDir)) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      if (!fs.mkdirs(this.fullPathArchiveDir)) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        throw new IOException("Unable to mkdir " + this.fullPathArchiveDir);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // If prefix is null||empty then just name it wal<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    this.logFilePrefix =<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      prefix == null || prefix.isEmpty() ? "wal" : URLEncoder.encode(prefix, "UTF8");<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    // we only correctly differentiate suffices when numeric ones start with '.'<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    if (suffix != null &amp;&amp; !(suffix.isEmpty()) &amp;&amp; !(suffix.startsWith(WAL_FILE_NAME_DELIMITER))) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      throw new IllegalArgumentException("WAL suffix must start with '" + WAL_FILE_NAME_DELIMITER +<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          "' but instead was '" + suffix + "'");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    // Now that it exists, set the storage policy for the entire directory of wal files related to<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // this FSHLog instance<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    FSUtils.setStoragePolicy(fs, conf, this.fullPathLogDir, HConstants.WAL_STORAGE_POLICY,<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      HConstants.DEFAULT_WAL_STORAGE_POLICY);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    this.logFileSuffix = (suffix == null) ? "" : URLEncoder.encode(suffix, "UTF8");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.prefixPathStr = new Path(fullPathLogDir,<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        logFilePrefix + WAL_FILE_NAME_DELIMITER).toString();<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>    this.ourFiles = new PathFilter() {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      public boolean accept(final Path fileName) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        // The path should start with dir/&lt;prefix&gt; and end with our suffix<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        final String fileNameString = fileName.toString();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        if (!fileNameString.startsWith(prefixPathStr)) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          return false;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>        }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        if (logFileSuffix.isEmpty()) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          // in the case of the null suffix, we need to ensure the filename ends with a timestamp.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          return org.apache.commons.lang.StringUtils.isNumeric(<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              fileNameString.substring(prefixPathStr.length()));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        } else if (!fileNameString.endsWith(logFileSuffix)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>          return false;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        }<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        return true;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      }<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    };<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    if (failIfWALExists) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      final FileStatus[] walFiles = FSUtils.listStatus(fs, fullPathLogDir, ourFiles);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      if (null != walFiles &amp;&amp; 0 != walFiles.length) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        throw new IOException("Target WAL already exists within directory " + fullPathLogDir);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>    // Register listeners.  TODO: Should this exist anymore?  We have CPs?<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (listeners != null) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      for (WALActionsListener i: listeners) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        registerWALActionsListener(i);<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>    this.coprocessorHost = new WALCoprocessorHost(this, conf);<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>    // Get size to roll log at. Roll at 95% of HDFS block size so we avoid crossing HDFS blocks<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    // (it costs a little x'ing bocks)<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    final long blocksize = this.conf.getLong("hbase.regionserver.hlog.blocksize",<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        FSUtils.getDefaultBlockSize(this.fs, this.fullPathLogDir));<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    this.logrollsize =<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      (long)(blocksize * conf.getFloat("hbase.regionserver.logroll.multiplier", 0.95f));<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    <a name="line.511"></a>
-<span class="sourceLineNo">512</span>    float memstoreRatio = conf.getFloat(HeapMemorySizeUtil.MEMSTORE_SIZE_KEY,<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      conf.getFloat(HeapMemorySizeUtil.MEMSTORE_SIZE_

<TRUNCATED>

[30/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 9d1bf3f..3f45878 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <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" />
@@ -422,7 +422,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index d574db6..ebac656 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Continuous Integration</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -290,7 +290,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 0131612..5fad980 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Tracking</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -287,7 +287,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 528c622..3cbec9e 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project License</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -490,7 +490,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 6907247..71de976 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -340,7 +340,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 0dc2aec..539c057 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -458,7 +458,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/modules.html
----------------------------------------------------------------------
diff --git a/modules.html b/modules.html
index 38961a1..7f82eef 100644
--- a/modules.html
+++ b/modules.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Modules</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -366,7 +366,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 489c8c4..9be344a 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -413,7 +413,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 9e89c81..9c63441 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -423,7 +423,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 10370c7..998ccb0 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Build Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -366,7 +366,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 5250a5d..6ab5424 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <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" />
@@ -768,7 +768,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 11e32b1..755ab55 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -340,7 +340,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 8bfcefb..203e908 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -307,7 +307,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 1921311..1a7ea4c 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -302,7 +302,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 4a8db70..3158aa9 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -324,7 +324,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 26835a3..6efb7de 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -519,7 +519,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 3110f04..ed61c5c 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Team list</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -785,7 +785,7 @@ window.onLoad = init();
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 2506815..2be0c28 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -134,6 +134,7 @@
 <li><a href="org/apache/hadoop/hbase/util/HFileTestUtil.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">HFileTestUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/HTestConst.html" title="class in org.apache.hadoop.hbase" target="classFrame">HTestConst</a></li>
 <li><a href="org/apache/hadoop/hbase/http/HttpServerFunctionalTest.html" title="class in org.apache.hadoop.hbase.http" target="classFrame">HttpServerFunctionalTest</a></li>
+<li><a href="org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase" target="classFrame">IncrementPerformanceTest</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/InstrumentedLogWriter.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">InstrumentedLogWriter</a></li>
 <li><a href="org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html" title="class in org.apache.hadoop.hbase" target="classFrame">IntegrationTestAcidGuarantees</a></li>
 <li><a href="org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase" target="classFrame">IntegrationTestBase</a></li>
@@ -914,7 +915,9 @@
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestImportTSVWithVisibilityLabels.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">TestImportTSVWithVisibilityLabels</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestInclusiveStopFilter.html" title="class in org.apache.hadoop.hbase.filter" target="classFrame">TestInclusiveStopFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestIncrement</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestIncrementFromClientSideWithCoprocessor</a></li>
 <li><a href="org/apache/hadoop/hbase/util/TestIncrementingEnvironmentEdge.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">TestIncrementingEnvironmentEdge</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestIncrementsFromClientSide</a></li>
 <li><a href="org/apache/hadoop/hbase/TestInfoServers.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestInfoServers</a></li>
 <li><a href="org/apache/hadoop/hbase/TestInterfaceAudienceAnnotations.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestInterfaceAudienceAnnotations</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestIntraRowPagination</a></li>
@@ -1197,6 +1200,9 @@
 <li><a href="org/apache/hadoop/hbase/filter/TestRegexComparator.html" title="class in org.apache.hadoop.hbase.filter" target="classFrame">TestRegexComparator</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestRegexComparator.TestCase.html" title="class in org.apache.hadoop.hbase.filter" target="classFrame">TestRegexComparator.TestCase</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionFavoredNodes</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionIncrement</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionIncrement.CrossRowCellIncrementer</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionIncrement.SingleCellIncrementer</a></li>
 <li><a href="org/apache/hadoop/hbase/master/balancer/TestRegionLocationFinder.html" title="class in org.apache.hadoop.hbase.master.balancer" target="classFrame">TestRegionLocationFinder</a></li>
 <li><a href="org/apache/hadoop/hbase/TestRegionLocations.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestRegionLocations</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRegionMergeTransaction</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 2eb8b70..36470db 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -134,6 +134,7 @@
 <li><a href="org/apache/hadoop/hbase/util/HFileTestUtil.html" title="class in org.apache.hadoop.hbase.util">HFileTestUtil</a></li>
 <li><a href="org/apache/hadoop/hbase/HTestConst.html" title="class in org.apache.hadoop.hbase">HTestConst</a></li>
 <li><a href="org/apache/hadoop/hbase/http/HttpServerFunctionalTest.html" title="class in org.apache.hadoop.hbase.http">HttpServerFunctionalTest</a></li>
+<li><a href="org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/InstrumentedLogWriter.html" title="class in org.apache.hadoop.hbase.regionserver.wal">InstrumentedLogWriter</a></li>
 <li><a href="org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html" title="class in org.apache.hadoop.hbase">IntegrationTestAcidGuarantees</a></li>
 <li><a href="org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></li>
@@ -914,7 +915,9 @@
 <li><a href="org/apache/hadoop/hbase/mapreduce/TestImportTSVWithVisibilityLabels.html" title="class in org.apache.hadoop.hbase.mapreduce">TestImportTSVWithVisibilityLabels</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestInclusiveStopFilter.html" title="class in org.apache.hadoop.hbase.filter">TestInclusiveStopFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client">TestIncrement</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestIncrementFromClientSideWithCoprocessor</a></li>
 <li><a href="org/apache/hadoop/hbase/util/TestIncrementingEnvironmentEdge.html" title="class in org.apache.hadoop.hbase.util">TestIncrementingEnvironmentEdge</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></li>
 <li><a href="org/apache/hadoop/hbase/TestInfoServers.html" title="class in org.apache.hadoop.hbase">TestInfoServers</a></li>
 <li><a href="org/apache/hadoop/hbase/TestInterfaceAudienceAnnotations.html" title="class in org.apache.hadoop.hbase">TestInterfaceAudienceAnnotations</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client">TestIntraRowPagination</a></li>
@@ -1197,6 +1200,9 @@
 <li><a href="org/apache/hadoop/hbase/filter/TestRegexComparator.html" title="class in org.apache.hadoop.hbase.filter">TestRegexComparator</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestRegexComparator.TestCase.html" title="class in org.apache.hadoop.hbase.filter">TestRegexComparator.TestCase</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionFavoredNodes</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.CrossRowCellIncrementer</a></li>
+<li><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.SingleCellIncrementer</a></li>
 <li><a href="org/apache/hadoop/hbase/master/balancer/TestRegionLocationFinder.html" title="class in org.apache.hadoop.hbase.master.balancer">TestRegionLocationFinder</a></li>
 <li><a href="org/apache/hadoop/hbase/TestRegionLocations.html" title="class in org.apache.hadoop.hbase">TestRegionLocations</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransaction</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/constant-values.html b/testdevapidocs/constant-values.html
index 4775c4c..2052555 100644
--- a/testdevapidocs/constant-values.html
+++ b/testdevapidocs/constant-values.html
@@ -376,6 +376,60 @@
 </li>
 <li class="blockList">
 <table border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.IncrementPerformanceTest.COLUMN_FAMILY">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/hadoop/hbase/IncrementPerformanceTest.html#COLUMN_FAMILY">COLUMN_FAMILY</a></code></td>
+<td class="colLast"><code>"columnFamilyName"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.IncrementPerformanceTest.DEFAULT_INCREMENT_COUNT">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/IncrementPerformanceTest.html#DEFAULT_INCREMENT_COUNT">DEFAULT_INCREMENT_COUNT</a></code></td>
+<td class="colLast"><code>10000</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.IncrementPerformanceTest.DEFAULT_THREAD_COUNT">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/IncrementPerformanceTest.html#DEFAULT_THREAD_COUNT">DEFAULT_THREAD_COUNT</a></code></td>
+<td class="colLast"><code>80</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.IncrementPerformanceTest.INCREMENT_COUNT">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/hadoop/hbase/IncrementPerformanceTest.html#INCREMENT_COUNT">INCREMENT_COUNT</a></code></td>
+<td class="colLast"><code>"incrementCount"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.IncrementPerformanceTest.TABLENAME">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/hadoop/hbase/IncrementPerformanceTest.html#TABLENAME">TABLENAME</a></code></td>
+<td class="colLast"><code>"tableName"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.IncrementPerformanceTest.THREAD_COUNT">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/hadoop/hbase/IncrementPerformanceTest.html#THREAD_COUNT">THREAD_COUNT</a></code></td>
+<td class="colLast"><code>"threadCount"</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html" title="class in org.apache.hadoop.hbase">IntegrationTestAcidGuarantees</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
@@ -7212,6 +7266,32 @@
 </li>
 <li class="blockList">
 <table border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.TestRegionIncrement.INCREMENT_COUNT">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#INCREMENT_COUNT">INCREMENT_COUNT</a></code></td>
+<td class="colLast"><code>10000</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.regionserver.TestRegionIncrement.THREAD_COUNT">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#THREAD_COUNT">THREAD_COUNT</a></code></td>
+<td class="colLast"><code>10</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>


[38/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html
index c5c052a..036de4d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html
@@ -7,1999 +7,1998 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span><a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver.wal;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.wal.DefaultWALProvider.WAL_FILE_NAME_DELIMITER;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.FileNotFoundException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.io.InterruptedIOException;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.io.OutputStream;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.lang.management.ManagementFactory;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.lang.management.MemoryUsage;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.lang.reflect.InvocationTargetException;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.net.URLEncoder;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.ArrayList;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Arrays;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Comparator;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.List;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Map;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.NavigableMap;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.BlockingQueue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.CountDownLatch;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.ExecutionException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.commons.logging.Log;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.commons.logging.LogFactory;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.conf.Configuration;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileStatus;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FileSystem;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.Path;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.PathFilter;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.Cell;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HConstants;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.io.util.HeapMemorySizeUtil;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.DrainBarrier;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.wal.DefaultWALProvider;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.wal.WALPrettyPrinter;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.wal.WALProvider.Writer;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hdfs.DFSOutputStream;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hdfs.client.HdfsDataOutputStream;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.util.StringUtils;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.htrace.NullScope;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.htrace.Span;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.htrace.Trace;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.htrace.TraceScope;<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>import com.google.common.annotations.VisibleForTesting;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import com.lmax.disruptor.BlockingWaitStrategy;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import com.lmax.disruptor.EventHandler;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import com.lmax.disruptor.ExceptionHandler;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.lmax.disruptor.LifecycleAware;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.lmax.disruptor.TimeoutException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.lmax.disruptor.dsl.Disruptor;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import com.lmax.disruptor.dsl.ProducerType;<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> * Implementation of {@link WAL} to go against {@link FileSystem}; i.e. keep WALs in HDFS.<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * Only one WAL is ever being written at a time.  When a WAL hits a configured maximum size,<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * it is rolled.  This is done internal to the implementation.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * &lt;p&gt;As data is flushed from the MemStore to other on-disk structures (files sorted by<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * key, hfiles), a WAL becomes obsolete. We can let go of all the log edits/entries for a given<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * HRegion-sequence id.  A bunch of work in the below is done keeping account of these region<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * sequence ids -- what is flushed out to hfiles, and what is yet in WAL and in memory only.<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * &lt;p&gt;It is only practical to delete entire files. Thus, we delete an entire on-disk file<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * &lt;code&gt;F&lt;/code&gt; when all of the edits in &lt;code&gt;F&lt;/code&gt; have a log-sequence-id that's older<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * (smaller) than the most-recent flush.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * &lt;p&gt;To read an WAL, call {@link WALFactory#createReader(org.apache.hadoop.fs.FileSystem,<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * org.apache.hadoop.fs.Path)}.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * &lt;h2&gt;Failure Semantic&lt;/h2&gt;<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * If an exception on append or sync, roll the WAL because the current WAL is now a lame duck;<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * any more appends or syncs will fail also with the same original exception. If we have made<a name="line.120"></a>
-<span class="sourceLineNo">121</span> * successful appends to the WAL and we then are unable to sync them, our current semantic is to<a name="line.121"></a>
-<span class="sourceLineNo">122</span> * return error to the client that the appends failed but also to abort the current context,<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * usually the hosting server. We need to replay the WALs. TODO: Change this semantic. A roll of<a name="line.123"></a>
-<span class="sourceLineNo">124</span> * WAL may be sufficient as long as we have flagged client that the append failed. TODO:<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * replication may pick up these last edits though they have been marked as failed append (Need to<a name="line.125"></a>
-<span class="sourceLineNo">126</span> * keep our own file lengths, not rely on HDFS).<a name="line.126"></a>
-<span class="sourceLineNo">127</span> */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>@InterfaceAudience.Private<a name="line.128"></a>
-<span class="sourceLineNo">129</span>public class FSHLog implements WAL {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  // IMPLEMENTATION NOTES:<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  //<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  // At the core is a ring buffer.  Our ring buffer is the LMAX Disruptor.  It tries to<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  // minimize synchronizations and volatile writes when multiple contending threads as is the case<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // here appending and syncing on a single WAL.  The Disruptor is configured to handle multiple<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  // producers but it has one consumer only (the producers in HBase are IPC Handlers calling append<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  // and then sync).  The single consumer/writer pulls the appends and syncs off the ring buffer.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  // When a handler calls sync, it is given back a future. The producer 'blocks' on the future so<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  // it does not return until the sync completes.  The future is passed over the ring buffer from<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  // the producer/handler to the consumer thread where it does its best to batch up the producer<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  // syncs so one WAL sync actually spans multiple producer sync invocations.  How well the<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  // batching works depends on the write rate; i.e. we tend to batch more in times of<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  // high writes/syncs.<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  //<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  // Calls to append now also wait until the append has been done on the consumer side of the<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  // disruptor.  We used to not wait but it makes the implemenation easier to grok if we have<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  // the region edit/sequence id after the append returns.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  //<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  // TODO: Handlers need to coordinate appending AND syncing.  Can we have the threads contend<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  // once only?  Probably hard given syncs take way longer than an append.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  //<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  // The consumer threads pass the syncs off to multiple syncing threads in a round robin fashion<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  // to ensure we keep up back-to-back FS sync calls (FS sync calls are the long poll writing the<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  // WAL).  The consumer thread passes the futures to the sync threads for it to complete<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  // the futures when done.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  //<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  // The 'sequence' in the below is the sequence of the append/sync on the ringbuffer.  It<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  // acts as a sort-of transaction id.  It is always incrementing.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  //<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  // The RingBufferEventHandler class hosts the ring buffer consuming code.  The threads that<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  // do the actual FS sync are implementations of SyncRunner.  SafePointZigZagLatch is a<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  // synchronization class used to halt the consumer at a safe point --  just after all outstanding<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  // syncs and appends have completed -- so the log roller can swap the WAL out under it.<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private static final Log LOG = LogFactory.getLog(FSHLog.class);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  private static final int DEFAULT_SLOW_SYNC_TIME_MS = 100; // in ms<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>   * The nexus at which all incoming handlers meet.  Does appends and sync with an ordering.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * Appends and syncs are each put on the ring which means handlers need to<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * smash up against the ring twice (can we make it once only? ... maybe not since time to append<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * is so different from time to sync and sometimes we don't want to sync or we want to async<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * the sync).  The ring is where we make sure of our ordering and it is also where we do<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * batching up of handler sync calls.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private final Disruptor&lt;RingBufferTruck&gt; disruptor;<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>   * An executorservice that runs the disruptor AppendEventHandler append executor.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  private final ExecutorService appendExecutor;<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * This fellow is run by the above appendExecutor service but it is all about batching up appends<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * and syncs; it may shutdown without cleaning out the last few appends or syncs.  To guard<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * against this, keep a reference to this handler and do explicit close on way out to make sure<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * all flushed out before we exit.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   */<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  private final RingBufferEventHandler ringBufferEventHandler;<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>   * Map of {@link SyncFuture}s keyed by Handler objects.  Used so we reuse SyncFutures.<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * TODO: Reus FSWALEntry's rather than create them anew each time as we do SyncFutures here.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * TODO: Add a FSWalEntry and SyncFuture as thread locals on handlers rather than have them<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * get them from this Map?<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private final Map&lt;Thread, SyncFuture&gt; syncFuturesByHandler;<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * The highest known outstanding unsync'd WALEdit sequence number where sequence number is the<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * ring buffer sequence.  Maintained by the ring buffer consumer.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   */<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  private volatile long highestUnsyncedSequence = -1;<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>   * Updated to the ring buffer sequence of the last successful sync call.  This can be less than<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * {@link #highestUnsyncedSequence} for case where we have an append where a sync has not yet<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * come in for it.  Maintained by the syncing threads.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  private final AtomicLong highestSyncedSequence = new AtomicLong(0);<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>   * file system instance<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  protected final FileSystem fs;<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>   * WAL directory, where all WAL files would be placed.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   */<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private final Path fullPathLogDir;<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * dir path where old logs are kept.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private final Path fullPathArchiveDir;<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * Matches just those wal files that belong to this wal instance.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   */<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  private final PathFilter ourFiles;<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>   * Prefix of a WAL file, usually the region server name it is hosted on.<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  private final String logFilePrefix;<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>   * Suffix included on generated wal file names<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   */<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  private final String logFileSuffix;<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * Prefix used when checking for wal membership.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  private final String prefixPathStr;<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  private final WALCoprocessorHost coprocessorHost;<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>   * conf object<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  protected final Configuration conf;<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  /** Listeners that are called on WAL events. */<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  private final List&lt;WALActionsListener&gt; listeners =<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    new CopyOnWriteArrayList&lt;WALActionsListener&gt;();<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  @Override<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public void registerWALActionsListener(final WALActionsListener listener) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    this.listeners.add(listener);<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>  @Override<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  public boolean unregisterWALActionsListener(final WALActionsListener listener) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    return this.listeners.remove(listener);<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>  @Override<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public WALCoprocessorHost getCoprocessorHost() {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    return coprocessorHost;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  /**<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * FSDataOutputStream associated with the current SequenceFile.writer<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   */<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  private FSDataOutputStream hdfs_out;<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span>  // All about log rolling if not enough replicas outstanding.<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  // Minimum tolerable replicas, if the actual value is lower than it, rollWriter will be triggered<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  private final int minTolerableReplication;<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  private final int slowSyncNs;<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  // If live datanode count is lower than the default replicas value,<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  // RollWriter will be triggered in each sync(So the RollWriter will be<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // triggered one by one in a short time). Using it as a workaround to slow<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  // down the roll frequency triggered by checkLowReplication().<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  private final AtomicInteger consecutiveLogRolls = new AtomicInteger(0);<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>  private final int lowReplicationRollLimit;<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  // If consecutiveLogRolls is larger than lowReplicationRollLimit,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  // then disable the rolling in checkLowReplication().<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // Enable it if the replications recover.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private volatile boolean lowReplicationRollEnabled = true;<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>   * Class that does accounting of sequenceids in WAL subsystem. Holds oldest outstanding<a name="line.299"></a>
-<span class="sourceLineNo">300</span>   * sequence id as yet not flushed as well as the most recent edit sequence id appended to the<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   * WAL. Has facility for answering questions such as "Is it safe to GC a WAL?".<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   */<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  private SequenceIdAccounting sequenceIdAccounting = new SequenceIdAccounting();<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>   * Current log file.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   */<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  volatile Writer writer;<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>  /** The barrier used to ensure that close() waits for all log rolls and flushes to finish. */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  private final DrainBarrier closeBarrier = new DrainBarrier();<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  /**<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * This lock makes sure only one log roll runs at a time. Should not be taken while any other<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * lock is held. We don't just use synchronized because that results in bogus and tedious<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * findbugs warning when it thinks synchronized controls writer thread safety.  It is held when<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * we are actually rolling the log.  It is checked when we are looking to see if we should roll<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * the log or not.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private final ReentrantLock rollWriterLock = new ReentrantLock(true);<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  private volatile boolean closed = false;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private final AtomicBoolean shutdown = new AtomicBoolean(false);<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // The timestamp (in ms) when the log file was created.<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private final AtomicLong filenum = new AtomicLong(-1);<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // Number of transactions in the current Wal.<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private final AtomicInteger numEntries = new AtomicInteger(0);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // If &gt; than this size, roll the log.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private final long logrollsize;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  /**<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * The total size of wal<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  private AtomicLong totalLogSize = new AtomicLong(0);<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  /*<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * If more than this many logs, force flush of oldest region to oldest edit<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * goes to disk.  If too many and we crash, then will take forever replaying.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * Keep the number of logs tidy.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private final int maxLogs;<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /** Number of log close errors tolerated before we abort */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private final int closeErrorsTolerated;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  private final AtomicInteger closeErrorCount = new AtomicInteger();<a name="line.349"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.regionserver.wal;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.wal.DefaultWALProvider.WAL_FILE_NAME_DELIMITER;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.FileNotFoundException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.InterruptedIOException;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.OutputStream;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.management.ManagementFactory;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.management.MemoryUsage;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.InvocationTargetException;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.URLEncoder;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.ArrayList;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.Arrays;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.Comparator;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.List;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Map;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.NavigableMap;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Set;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.concurrent.BlockingQueue;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.concurrent.CountDownLatch;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.concurrent.ExecutionException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ExecutorService;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.Executors;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.PathFilter;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HConstants;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.io.util.HeapMemorySizeUtil;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.DrainBarrier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.wal.DefaultWALProvider;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.wal.WALPrettyPrinter;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.wal.WALProvider.Writer;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hdfs.DFSOutputStream;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hdfs.client.HdfsDataOutputStream;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.util.StringUtils;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.htrace.NullScope;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.htrace.Span;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.htrace.Trace;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.htrace.TraceScope;<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>import com.google.common.annotations.VisibleForTesting;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import com.lmax.disruptor.BlockingWaitStrategy;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import com.lmax.disruptor.EventHandler;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import com.lmax.disruptor.ExceptionHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import com.lmax.disruptor.LifecycleAware;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import com.lmax.disruptor.TimeoutException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.lmax.disruptor.dsl.Disruptor;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.lmax.disruptor.dsl.ProducerType;<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> * Implementation of {@link WAL} to go against {@link FileSystem}; i.e. keep WALs in HDFS.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * Only one WAL is ever being written at a time.  When a WAL hits a configured maximum size,<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * it is rolled.  This is done internal to the implementation.<a name="line.103"></a>
+<span class="sourceLineNo">104</span> *<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * &lt;p&gt;As data is flushed from the MemStore to other on-disk structures (files sorted by<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * key, hfiles), a WAL becomes obsolete. We can let go of all the log edits/entries for a given<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * HRegion-sequence id.  A bunch of work in the below is done keeping account of these region<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * sequence ids -- what is flushed out to hfiles, and what is yet in WAL and in memory only.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> *<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * &lt;p&gt;It is only practical to delete entire files. Thus, we delete an entire on-disk file<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * &lt;code&gt;F&lt;/code&gt; when all of the edits in &lt;code&gt;F&lt;/code&gt; have a log-sequence-id that's older<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * (smaller) than the most-recent flush.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * &lt;p&gt;To read an WAL, call {@link WALFactory#createReader(org.apache.hadoop.fs.FileSystem,<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * org.apache.hadoop.fs.Path)}.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * &lt;h2&gt;Failure Semantic&lt;/h2&gt;<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * If an exception on append or sync, roll the WAL because the current WAL is now a lame duck;<a name="line.118"></a>
+<span class="sourceLineNo">119</span> * any more appends or syncs will fail also with the same original exception. If we have made<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * successful appends to the WAL and we then are unable to sync them, our current semantic is to<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * return error to the client that the appends failed but also to abort the current context,<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * usually the hosting server. We need to replay the WALs. TODO: Change this semantic. A roll of<a name="line.122"></a>
+<span class="sourceLineNo">123</span> * WAL may be sufficient as long as we have flagged client that the append failed. TODO:<a name="line.123"></a>
+<span class="sourceLineNo">124</span> * replication may pick up these last edits though they have been marked as failed append (Need to<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * keep our own file lengths, not rely on HDFS).<a name="line.125"></a>
+<span class="sourceLineNo">126</span> */<a name="line.126"></a>
+<span class="sourceLineNo">127</span>@InterfaceAudience.Private<a name="line.127"></a>
+<span class="sourceLineNo">128</span>public class FSHLog implements WAL {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  // IMPLEMENTATION NOTES:<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  //<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // At the core is a ring buffer.  Our ring buffer is the LMAX Disruptor.  It tries to<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  // minimize synchronizations and volatile writes when multiple contending threads as is the case<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  // here appending and syncing on a single WAL.  The Disruptor is configured to handle multiple<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  // producers but it has one consumer only (the producers in HBase are IPC Handlers calling append<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  // and then sync).  The single consumer/writer pulls the appends and syncs off the ring buffer.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  // When a handler calls sync, it is given back a future. The producer 'blocks' on the future so<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  // it does not return until the sync completes.  The future is passed over the ring buffer from<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  // the producer/handler to the consumer thread where it does its best to batch up the producer<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  // syncs so one WAL sync actually spans multiple producer sync invocations.  How well the<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  // batching works depends on the write rate; i.e. we tend to batch more in times of<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  // high writes/syncs.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  //<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  // Calls to append now also wait until the append has been done on the consumer side of the<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  // disruptor.  We used to not wait but it makes the implemenation easier to grok if we have<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  // the region edit/sequence id after the append returns.<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  //<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  // TODO: Handlers need to coordinate appending AND syncing.  Can we have the threads contend<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  // once only?  Probably hard given syncs take way longer than an append.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  //<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  // The consumer threads pass the syncs off to multiple syncing threads in a round robin fashion<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  // to ensure we keep up back-to-back FS sync calls (FS sync calls are the long poll writing the<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  // WAL).  The consumer thread passes the futures to the sync threads for it to complete<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  // the futures when done.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  //<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  // The 'sequence' in the below is the sequence of the append/sync on the ringbuffer.  It<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  // acts as a sort-of transaction id.  It is always incrementing.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  //<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  // The RingBufferEventHandler class hosts the ring buffer consuming code.  The threads that<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  // do the actual FS sync are implementations of SyncRunner.  SafePointZigZagLatch is a<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  // synchronization class used to halt the consumer at a safe point --  just after all outstanding<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  // syncs and appends have completed -- so the log roller can swap the WAL out under it.<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  private static final Log LOG = LogFactory.getLog(FSHLog.class);<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private static final int DEFAULT_SLOW_SYNC_TIME_MS = 100; // in ms<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>   * The nexus at which all incoming handlers meet.  Does appends and sync with an ordering.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * Appends and syncs are each put on the ring which means handlers need to<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * smash up against the ring twice (can we make it once only? ... maybe not since time to append<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * is so different from time to sync and sometimes we don't want to sync or we want to async<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * the sync).  The ring is where we make sure of our ordering and it is also where we do<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * batching up of handler sync calls.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   */<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private final Disruptor&lt;RingBufferTruck&gt; disruptor;<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  /**<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * An executorservice that runs the disruptor AppendEventHandler append executor.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   */<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  private final ExecutorService appendExecutor;<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>   * This fellow is run by the above appendExecutor service but it is all about batching up appends<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * and syncs; it may shutdown without cleaning out the last few appends or syncs.  To guard<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * against this, keep a reference to this handler and do explicit close on way out to make sure<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * all flushed out before we exit.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  private final RingBufferEventHandler ringBufferEventHandler;<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * Map of {@link SyncFuture}s keyed by Handler objects.  Used so we reuse SyncFutures.<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * TODO: Reus FSWALEntry's rather than create them anew each time as we do SyncFutures here.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * TODO: Add a FSWalEntry and SyncFuture as thread locals on handlers rather than have them<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * get them from this Map?<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  private final Map&lt;Thread, SyncFuture&gt; syncFuturesByHandler;<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>  /**<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * The highest known outstanding unsync'd WALEdit sequence number where sequence number is the<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * ring buffer sequence.  Maintained by the ring buffer consumer.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   */<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  private volatile long highestUnsyncedSequence = -1;<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Updated to the ring buffer sequence of the last successful sync call.  This can be less than<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * {@link #highestUnsyncedSequence} for case where we have an append where a sync has not yet<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * come in for it.  Maintained by the syncing threads.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   */<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  private final AtomicLong highestSyncedSequence = new AtomicLong(0);<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>   * file system instance<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  protected final FileSystem fs;<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>   * WAL directory, where all WAL files would be placed.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private final Path fullPathLogDir;<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>   * dir path where old logs are kept.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   */<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private final Path fullPathArchiveDir;<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  /**<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   * Matches just those wal files that belong to this wal instance.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private final PathFilter ourFiles;<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>   * Prefix of a WAL file, usually the region server name it is hosted on.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  private final String logFilePrefix;<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /**<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * Suffix included on generated wal file names<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   */<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  private final String logFileSuffix;<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  /**<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Prefix used when checking for wal membership.<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   */<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  private final String prefixPathStr;<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private final WALCoprocessorHost coprocessorHost;<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>   * conf object<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  protected final Configuration conf;<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /** Listeners that are called on WAL events. */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private final List&lt;WALActionsListener&gt; listeners =<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    new CopyOnWriteArrayList&lt;WALActionsListener&gt;();<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>  @Override<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public void registerWALActionsListener(final WALActionsListener listener) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    this.listeners.add(listener);<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>  @Override<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  public boolean unregisterWALActionsListener(final WALActionsListener listener) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    return this.listeners.remove(listener);<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>  @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public WALCoprocessorHost getCoprocessorHost() {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    return coprocessorHost;<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>  /**<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   * FSDataOutputStream associated with the current SequenceFile.writer<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  private FSDataOutputStream hdfs_out;<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  // All about log rolling if not enough replicas outstanding.<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>  // Minimum tolerable replicas, if the actual value is lower than it, rollWriter will be triggered<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  private final int minTolerableReplication;<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  private final int slowSyncNs;<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  // If live datanode count is lower than the default replicas value,<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  // RollWriter will be triggered in each sync(So the RollWriter will be<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  // triggered one by one in a short time). Using it as a workaround to slow<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // down the roll frequency triggered by checkLowReplication().<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private final AtomicInteger consecutiveLogRolls = new AtomicInteger(0);<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>  private final int lowReplicationRollLimit;<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  // If consecutiveLogRolls is larger than lowReplicationRollLimit,<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  // then disable the rolling in checkLowReplication().<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  // Enable it if the replications recover.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  private volatile boolean lowReplicationRollEnabled = true;<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  /**<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * Class that does accounting of sequenceids in WAL subsystem. Holds oldest outstanding<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * sequence id as yet not flushed as well as the most recent edit sequence id appended to the<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * WAL. Has facility for answering questions such as "Is it safe to GC a WAL?".<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private SequenceIdAccounting sequenceIdAccounting = new SequenceIdAccounting();<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Current log file.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  volatile Writer writer;<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>  /** The barrier used to ensure that close() waits for all log rolls and flushes to finish. */<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  private final DrainBarrier closeBarrier = new DrainBarrier();<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>  /**<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * This lock makes sure only one log roll runs at a time. Should not be taken while any other<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * lock is held. We don't just use synchronized because that results in bogus and tedious<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * findbugs warning when it thinks synchronized controls writer thread safety.  It is held when<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * we are actually rolling the log.  It is checked when we are looking to see if we should roll<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * the log or not.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   */<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private final ReentrantLock rollWriterLock = new ReentrantLock(true);<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  private volatile boolean closed = false;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private final AtomicBoolean shutdown = new AtomicBoolean(false);<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // The timestamp (in ms) when the log file was created.<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  private final AtomicLong filenum = new AtomicLong(-1);<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // Number of transactions in the current Wal.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private final AtomicInteger numEntries = new AtomicInteger(0);<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // If &gt; than this size, roll the log.<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  private final long logrollsize;<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   * The total size of wal<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   */<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  private AtomicLong totalLogSize = new AtomicLong(0);<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>   * If more than this many logs, force flush of oldest region to oldest edit<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * goes to disk.  If too many and we crash, then will take forever replaying.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * Keep the number of logs tidy.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  private final int maxLogs;<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>  /** Number of log close errors tolerated before we abort */<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private final int closeErrorsTolerated;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private final AtomicInteger closeErrorCount = new AtomicInteger();<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
 <span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  /**<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   * WAL Comparator; it compares the timestamp (log filenum), present in the log file name.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Throws an IllegalArgumentException if used to compare paths from different wals.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   */<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  final Comparator&lt;Path&gt; LOG_NAME_COMPARATOR = new Comparator&lt;Path&gt;() {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    @Override<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    public int compare(Path o1, Path o2) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      long t1 = getFileNumFromFileName(o1);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      long t2 = getFileNumFromFileName(o2);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      if (t1 == t2) return 0;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      return (t1 &gt; t2) ? 1 : -1;<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><a name="line.365"></a>
-<span class="sourceLineNo">366</span>  /**<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * Map of WAL log file to the latest sequence ids of all regions it has entries of.<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * The map is sorted by the log file creation timestamp (contained in the log file name).<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private NavigableMap&lt;Path, Map&lt;byte[], Long&gt;&gt; byWalRegionSequenceIds =<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    new ConcurrentSkipListMap&lt;Path, Map&lt;byte[], Long&gt;&gt;(LOG_NAME_COMPARATOR);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  /**<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * Exception handler to pass the disruptor ringbuffer.  Same as native implementation only it<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * logs using our logger instead of java native logger.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  static class RingBufferExceptionHandler implements ExceptionHandler {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    @Override<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    public void handleEventException(Throwable ex, long sequence, Object event) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      LOG.error("Sequence=" + sequence + ", event=" + event, ex);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      throw new RuntimeException(ex);<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 void handleOnStartException(Throwable ex) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      LOG.error(ex);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw new RuntimeException(ex);<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>    @Override<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    public void handleOnShutdownException(Throwable ex) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      LOG.error(ex);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      throw new RuntimeException(ex);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    }<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>  /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * Constructor.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   *<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @param fs filesystem handle<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param root path for stored and archived wals<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param logDir dir where wals are stored<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param conf configuration to use<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @throws IOException<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public FSHLog(final FileSystem fs, final Path root, final String logDir, final Configuration conf)<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      throws IOException {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    this(fs, root, logDir, HConstants.HREGION_OLDLOGDIR_NAME, conf, null, true, null, null);<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>  /**<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * Create an edit log at the given &lt;code&gt;dir&lt;/code&gt; location.<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   *<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * You should never have to load an existing log. If there is a log at<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * startup, it should have already been processed and deleted by the time the<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * WAL object is started up.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   *<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param fs filesystem handle<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @param rootDir path to where logs and oldlogs<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @param logDir dir where wals are stored<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * @param archiveDir dir where wals are archived<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * @param conf configuration to use<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param listeners Listeners on WAL events. Listeners passed here will<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * be registered before we do anything else; e.g. the<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * Constructor {@link #rollWriter()}.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * @param failIfWALExists If true IOException will be thrown if files related to this wal<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   *        already exist.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param prefix should always be hostname and port in distributed env and<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   *        it will be URL encoded before being used.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   *        If prefix is null, "wal" will be used<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @param suffix will be url encoded. null is treated as empty. non-empty must start with<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   *        {@link DefaultWALProvider#WAL_FILE_NAME_DELIMITER}<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @throws IOException<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  public FSHLog(final FileSystem fs, final Path rootDir, final String logDir,<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      final String archiveDir, final Configuration conf,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      final List&lt;WALActionsListener&gt; listeners,<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      final boolean failIfWALExists, final String prefix, final String suffix)<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      throws IOException {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    this.fs = fs;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    this.fullPathLogDir = new Path(rootDir, logDir);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    this.fullPathArchiveDir = new Path(rootDir, archiveDir);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    this.conf = conf;<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    if (!fs.exists(fullPathLogDir) &amp;&amp; !fs.mkdirs(fullPathLogDir)) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      throw new IOException("Unable to mkdir " + fullPathLogDir);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    if (!fs.exists(this.fullPathArchiveDir)) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      if (!fs.mkdirs(this.fullPathArchiveDir)) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        throw new IOException("Unable to mkdir " + this.fullPathArchiveDir);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // If prefix is null||empty then just name it wal<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    this.logFilePrefix =<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      prefix == null || prefix.isEmpty() ? "wal" : URLEncoder.encode(prefix, "UTF8");<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    // we only correctly differentiate suffices when numeric ones start with '.'<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    if (suffix != null &amp;&amp; !(suffix.isEmpty()) &amp;&amp; !(suffix.startsWith(WAL_FILE_NAME_DELIMITER))) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      throw new IllegalArgumentException("WAL suffix must start with '" + WAL_FILE_NAME_DELIMITER +<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          "' but instead was '" + suffix + "'");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    // Now that it exists, set the storage policy for the entire directory of wal files related to<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // this FSHLog instance<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    FSUtils.setStoragePolicy(fs, conf, this.fullPathLogDir, HConstants.WAL_STORAGE_POLICY,<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      HConstants.DEFAULT_WAL_STORAGE_POLICY);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    this.logFileSuffix = (suffix == null) ? "" : URLEncoder.encode(suffix, "UTF8");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.prefixPathStr = new Path(fullPathLogDir,<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        logFilePrefix + WAL_FILE_NAME_DELIMITER).toString();<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>    this.ourFiles = new PathFilter() {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      public boolean accept(final Path fileName) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        // The path should start with dir/&lt;prefix&gt; and end with our suffix<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        final String fileNameString = fileName.toString();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        if (!fileNameString.startsWith(prefixPathStr)) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          return false;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>        }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        if (logFileSuffix.isEmpty()) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          // in the case of the null suffix, we need to ensure the filename ends with a timestamp.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          return org.apache.commons.lang.StringUtils.isNumeric(<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              fileNameString.substring(prefixPathStr.length()));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        } else if (!fileNameString.endsWith(logFileSuffix)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>          return false;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        }<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        return true;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      }<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    };<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    if (failIfWALExists) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      final FileStatus[] walFiles = FSUtils.listStatus(fs, fullPathLogDir, ourFiles);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      if (null != walFiles &amp;&amp; 0 != walFiles.length) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        throw new IOException("Target WAL already exists within directory " + fullPathLogDir);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>    // Register listeners.  TODO: Should this exist anymore?  We have CPs?<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (listeners != null) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      for (WALActionsListener i: listeners) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        registerWALActionsListener(i);<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>    this.coprocessorHost = new WALCoprocessorHost(this, conf);<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>    // Get size to roll log at. Roll at 95% of HDFS block size so we avoid crossing HDFS blocks<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    // (it costs a little x'ing bocks)<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    final long blocksize = this.conf.getLong("hbase.regionserver.hlog.blocksize",<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        FSUtils.getDefaultBlockSize(this.fs, this.fullPathLogDir));<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    this.logrollsize =<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      (long)(blocksize * conf.getFloat("hbase.regionserver.logroll.multiplier", 0.95f));<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    <a name="line.511"></a>
-<span class="sourceLineNo">512</span>    float memstoreRatio = conf.getFloat(HeapMemorySizeUtil.MEMSTORE_SIZE_KEY,

<TRUNCATED>

[44/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html
index 0f6f2dd..1b44a8a 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html
@@ -100,7 +100,7 @@
 <hr>
 <br>
 <pre><a href="../../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.129">FSHLog</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.128">FSHLog</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a></pre>
 <div class="block">Implementation of <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal"><code>WAL</code></a> to go against <code>FileSystem</code>; i.e. keep WALs in HDFS.
@@ -818,7 +818,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.164">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.163">LOG</a></pre>
 </li>
 </ul>
 <a name="DEFAULT_SLOW_SYNC_TIME_MS">
@@ -827,7 +827,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_SLOW_SYNC_TIME_MS</h4>
-<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.166">DEFAULT_SLOW_SYNC_TIME_MS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.165">DEFAULT_SLOW_SYNC_TIME_MS</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.wal.FSHLog.DEFAULT_SLOW_SYNC_TIME_MS">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -837,7 +837,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>disruptor</h4>
-<pre>private final&nbsp;com.lmax.disruptor.dsl.Disruptor&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.html" title="class in org.apache.hadoop.hbase.regionserver.wal">RingBufferTruck</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.176">disruptor</a></pre>
+<pre>private final&nbsp;com.lmax.disruptor.dsl.Disruptor&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.html" title="class in org.apache.hadoop.hbase.regionserver.wal">RingBufferTruck</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.175">disruptor</a></pre>
 <div class="block">The nexus at which all incoming handlers meet.  Does appends and sync with an ordering.
  Appends and syncs are each put on the ring which means handlers need to
  smash up against the ring twice (can we make it once only? ... maybe not since time to append
@@ -852,7 +852,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>appendExecutor</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.181">appendExecutor</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.180">appendExecutor</a></pre>
 <div class="block">An executorservice that runs the disruptor AppendEventHandler append executor.</div>
 </li>
 </ul>
@@ -862,7 +862,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>ringBufferEventHandler</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FSHLog.RingBufferEventHandler</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.189">ringBufferEventHandler</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FSHLog.RingBufferEventHandler</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.188">ringBufferEventHandler</a></pre>
 <div class="block">This fellow is run by the above appendExecutor service but it is all about batching up appends
  and syncs; it may shutdown without cleaning out the last few appends or syncs.  To guard
  against this, keep a reference to this handler and do explicit close on way out to make sure
@@ -875,7 +875,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>syncFuturesByHandler</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a>,<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.197">syncFuturesByHandler</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a>,<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.196">syncFuturesByHandler</a></pre>
 <div class="block">Map of <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><code>SyncFuture</code></a>s keyed by Handler objects.  Used so we reuse SyncFutures.
  TODO: Reus FSWALEntry's rather than create them anew each time as we do SyncFutures here.
  TODO: Add a FSWalEntry and SyncFuture as thread locals on handlers rather than have them
@@ -888,7 +888,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>highestUnsyncedSequence</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.203">highestUnsyncedSequence</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.202">highestUnsyncedSequence</a></pre>
 <div class="block">The highest known outstanding unsync'd WALEdit sequence number where sequence number is the
  ring buffer sequence.  Maintained by the ring buffer consumer.</div>
 </li>
@@ -899,7 +899,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>highestSyncedSequence</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.210">highestSyncedSequence</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.209">highestSyncedSequence</a></pre>
 <div class="block">Updated to the ring buffer sequence of the last successful sync call.  This can be less than
  <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#highestUnsyncedSequence"><code>highestUnsyncedSequence</code></a> for case where we have an append where a sync has not yet
  come in for it.  Maintained by the syncing threads.</div>
@@ -911,7 +911,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>protected final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.215">fs</a></pre>
+<pre>protected final&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.214">fs</a></pre>
 <div class="block">file system instance</div>
 </li>
 </ul>
@@ -921,7 +921,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>fullPathLogDir</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.220">fullPathLogDir</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.219">fullPathLogDir</a></pre>
 <div class="block">WAL directory, where all WAL files would be placed.</div>
 </li>
 </ul>
@@ -931,7 +931,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>fullPathArchiveDir</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.225">fullPathArchiveDir</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.224">fullPathArchiveDir</a></pre>
 <div class="block">dir path where old logs are kept.</div>
 </li>
 </ul>
@@ -941,7 +941,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>ourFiles</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.PathFilter <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.230">ourFiles</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.PathFilter <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.229">ourFiles</a></pre>
 <div class="block">Matches just those wal files that belong to this wal instance.</div>
 </li>
 </ul>
@@ -951,7 +951,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>logFilePrefix</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.235">logFilePrefix</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.234">logFilePrefix</a></pre>
 <div class="block">Prefix of a WAL file, usually the region server name it is hosted on.</div>
 </li>
 </ul>
@@ -961,7 +961,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>logFileSuffix</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.240">logFileSuffix</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.239">logFileSuffix</a></pre>
 <div class="block">Suffix included on generated wal file names</div>
 </li>
 </ul>
@@ -971,7 +971,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>prefixPathStr</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.245">prefixPathStr</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.244">prefixPathStr</a></pre>
 <div class="block">Prefix used when checking for wal membership.</div>
 </li>
 </ul>
@@ -981,7 +981,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorHost</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCoprocessorHost</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.247">coprocessorHost</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCoprocessorHost</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.246">coprocessorHost</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -990,7 +990,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>protected final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.252">conf</a></pre>
+<pre>protected final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.251">conf</a></pre>
 <div class="block">conf object</div>
 </li>
 </ul>
@@ -1000,7 +1000,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>listeners</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.255">listeners</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.254">listeners</a></pre>
 <div class="block">Listeners that are called on WAL events.</div>
 </li>
 </ul>
@@ -1010,7 +1010,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>hdfs_out</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.FSDataOutputStream <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.276">hdfs_out</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.FSDataOutputStream <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.275">hdfs_out</a></pre>
 <div class="block">FSDataOutputStream associated with the current SequenceFile.writer</div>
 </li>
 </ul>
@@ -1020,7 +1020,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>minTolerableReplication</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.281">minTolerableReplication</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.280">minTolerableReplication</a></pre>
 </li>
 </ul>
 <a name="slowSyncNs">
@@ -1029,7 +1029,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>slowSyncNs</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.283">slowSyncNs</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.282">slowSyncNs</a></pre>
 </li>
 </ul>
 <a name="consecutiveLogRolls">
@@ -1038,7 +1038,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>consecutiveLogRolls</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.289">consecutiveLogRolls</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.288">consecutiveLogRolls</a></pre>
 </li>
 </ul>
 <a name="lowReplicationRollLimit">
@@ -1047,7 +1047,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>lowReplicationRollLimit</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.291">lowReplicationRollLimit</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.290">lowReplicationRollLimit</a></pre>
 </li>
 </ul>
 <a name="lowReplicationRollEnabled">
@@ -1056,7 +1056,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>lowReplicationRollEnabled</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.296">lowReplicationRollEnabled</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.295">lowReplicationRollEnabled</a></pre>
 </li>
 </ul>
 <a name="sequenceIdAccounting">
@@ -1065,7 +1065,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>sequenceIdAccounting</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SequenceIdAccounting.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SequenceIdAccounting</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.303">sequenceIdAccounting</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SequenceIdAccounting.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SequenceIdAccounting</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.302">sequenceIdAccounting</a></pre>
 <div class="block">Class that does accounting of sequenceids in WAL subsystem. Holds oldest outstanding
  sequence id as yet not flushed as well as the most recent edit sequence id appended to the
  WAL. Has facility for answering questions such as "Is it safe to GC a WAL?".</div>
@@ -1077,7 +1077,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>writer</h4>
-<pre>volatile&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/wal/WALProvider.Writer.html" title="interface in org.apache.hadoop.hbase.wal">WALProvider.Writer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.308">writer</a></pre>
+<pre>volatile&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/wal/WALProvider.Writer.html" title="interface in org.apache.hadoop.hbase.wal">WALProvider.Writer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.307">writer</a></pre>
 <div class="block">Current log file.</div>
 </li>
 </ul>
@@ -1087,7 +1087,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>closeBarrier</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/util/DrainBarrier.html" title="class in org.apache.hadoop.hbase.util">DrainBarrier</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.311">closeBarrier</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/util/DrainBarrier.html" title="class in org.apache.hadoop.hbase.util">DrainBarrier</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.310">closeBarrier</a></pre>
 <div class="block">The barrier used to ensure that close() waits for all log rolls and flushes to finish.</div>
 </li>
 </ul>
@@ -1097,7 +1097,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>rollWriterLock</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/wal/FSHLog.html#line.320">rollWriterLock</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/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/wal/FSHLog.html#line.319">rollWriterLock</a></pre>
 <div class="block">This lock makes sure only one log roll runs at a time. Should not be taken while any other
  lock is held. We don't just use synchronized because that results in bogus and tedious
  findbugs warning when it thinks synchronized controls writer thread safety.  It is held when
@@ -1111,7 +1111,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>closed</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.322">closed</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.321">closed</a></pre>
 </li>
 </ul>
 <a name="shutdown">
@@ -1120,7 +1120,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.323">shutdown</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.322">shutdown</a></pre>
 </li>
 </ul>
 <a name="filenum">
@@ -1129,7 +1129,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>filenum</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.326">filenum</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.325">filenum</a></pre>
 </li>
 </ul>
 <a name="numEntries">
@@ -1138,7 +1138,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>numEntries</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.329">numEntries</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.328">numEntries</a></pre>
 </li>
 </ul>
 <a name="logrollsize">
@@ -1147,7 +1147,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>logrollsize</h4>
-<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.332">logrollsize</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.331">logrollsize</a></pre>
 </li>
 </ul>
 <a name="totalLogSize">
@@ -1156,7 +1156,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>totalLogSize</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.337">totalLogSize</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.336">totalLogSize</a></pre>
 <div class="block">The total size of wal</div>
 </li>
 </ul>
@@ -1166,7 +1166,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>maxLogs</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.344">maxLogs</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.343">maxLogs</a></pre>
 </li>
 </ul>
 <a name="closeErrorsTolerated">
@@ -1175,7 +1175,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>closeErrorsTolerated</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.347">closeErrorsTolerated</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.346">closeErrorsTolerated</a></pre>
 <div class="block">Number of log close errors tolerated before we abort</div>
 </li>
 </ul>
@@ -1185,7 +1185,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>closeErrorCount</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.349">closeErrorCount</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.348">closeErrorCount</a></pre>
 </li>
 </ul>
 <a name="LOG_NAME_COMPARATOR">
@@ -1194,7 +1194,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG_NAME_COMPARATOR</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.356">LOG_NAME_COMPARATOR</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.355">LOG_NAME_COMPARATOR</a></pre>
 <div class="block">WAL Comparator; it compares the timestamp (log filenum), present in the log file name.
  Throws an IllegalArgumentException if used to compare paths from different wals.</div>
 </li>
@@ -1205,7 +1205,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>byWalRegionSequenceIds</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;org.apache.hadoop.fs.Path,<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.370">byWalRegionSequenceIds</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;org.apache.hadoop.fs.Path,<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.369">byWalRegionSequenceIds</a></pre>
 <div class="block">Map of WAL log file to the latest sequence ids of all regions it has entries of.
  The map is sorted by the log file creation timestamp (contained in the log file name).</div>
 </li>
@@ -1216,7 +1216,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FIXED_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1541">FIXED_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1540">FIXED_OVERHEAD</a></pre>
 </li>
 </ul>
 </li>
@@ -1233,7 +1233,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>FSHLog</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.406">FSHLog</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.405">FSHLog</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
       org.apache.hadoop.fs.Path&nbsp;root,
       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;logDir,
       org.apache.hadoop.conf.Configuration&nbsp;conf)
@@ -1250,7 +1250,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FSHLog</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.435">FSHLog</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.434">FSHLog</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
       org.apache.hadoop.fs.Path&nbsp;rootDir,
       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;logDir,
       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;archiveDir,
@@ -1290,7 +1290,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>registerWALActionsListener</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.259">registerWALActionsListener</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>&nbsp;listener)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.258">registerWALActionsListener</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>&nbsp;listener)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#registerWALActionsListener(org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)">WAL</a></code></strong></div>
 <div class="block">Registers WALActionsListener</div>
 <dl>
@@ -1305,7 +1305,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>unregisterWALActionsListener</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.264">unregisterWALActionsListener</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>&nbsp;listener)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.263">unregisterWALActionsListener</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>&nbsp;listener)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#unregisterWALActionsListener(org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)">WAL</a></code></strong></div>
 <div class="block">Unregisters WALActionsListener</div>
 <dl>
@@ -1320,7 +1320,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getCoprocessorHost</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCoprocessorHost</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.269">getCoprocessorHost</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCoprocessorHost</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.268">getCoprocessorHost</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#getCoprocessorHost()">getCoprocessorHost</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a></code></dd>
@@ -1333,7 +1333,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>calculateMaxLogFiles</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.570">calculateMaxLogFiles</a>(float&nbsp;memstoreSizeRatio,
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.569">calculateMaxLogFiles</a>(float&nbsp;memstoreSizeRatio,
                        long&nbsp;logRollSize)</pre>
 </li>
 </ul>
@@ -1343,7 +1343,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getFiles</h4>
-<pre>protected&nbsp;org.apache.hadoop.fs.FileStatus[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.580">getFiles</a>()
+<pre>protected&nbsp;org.apache.hadoop.fs.FileStatus[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.579">getFiles</a>()
                                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the backing files associated with this WAL.</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>may be null if there are no files.</dd>
@@ -1357,7 +1357,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getOutputStream</h4>
-<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.593">getOutputStream</a>()</pre>
+<pre><a href="http://docs.oracle.com/javase/7/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.592">getOutputStream</a>()</pre>
 <div class="block">Currently, we need to expose the writer's OutputStream to tests so that they can manipulate
  the default behavior (such as setting the maxRecoveryErrorCount value for example (see
  <code>TestWALReplay.testReplayEditsWrittenIntoWAL()</code>). This is done using reflection on the
@@ -1372,7 +1372,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>rollWriter</h4>
-<pre>public&nbsp;byte[][]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.600">rollWriter</a>()
+<pre>public&nbsp;byte[][]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.599">rollWriter</a>()
                     throws <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FailedLogCloseException.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FailedLogCloseException</a>,
                            <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#rollWriter()">WAL</a></code></strong></div>
@@ -1398,7 +1398,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getNewPath</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.608">getNewPath</a>()
+<pre>private&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.607">getNewPath</a>()
                                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">retrieve the next path to use for writing.
  Increments the internal filenum.</div>
@@ -1412,7 +1412,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getOldPath</h4>
-<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.618">getOldPath</a>()</pre>
+<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.617">getOldPath</a>()</pre>
 </li>
 </ul>
 <a name="tellListenersAboutPreLogRoll(org.apache.hadoop.fs.Path, org.apache.hadoop.fs.Path)">
@@ -1421,7 +1421,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>tellListenersAboutPreLogRoll</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.632">tellListenersAboutPreLogRoll</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.631">tellListenersAboutPreLogRoll</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
                                 org.apache.hadoop.fs.Path&nbsp;newPath)
                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tell listeners about pre log roll.</div>
@@ -1435,7 +1435,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>tellListenersAboutPostLogRoll</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.645">tellListenersAboutPostLogRoll</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.644">tellListenersAboutPostLogRoll</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
                                  org.apache.hadoop.fs.Path&nbsp;newPath)
                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tell listeners about post log roll.</div>
@@ -1449,7 +1449,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>preemptiveSync</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.659">preemptiveSync</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.html" title="class in org.apache.hadoop.hbase.regionserver.wal">ProtobufLogWriter</a>&nbsp;nextWriter)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.658">preemptiveSync</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogWriter.html" title="class in org.apache.hadoop.hbase.regionserver.wal">ProtobufLogWriter</a>&nbsp;nextWriter)</pre>
 <div class="block">Run a sync after opening to set up the pipeline.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>nextWriter</code> - </dd><dd><code>startTimeNanos</code> - </dd></dl>
 </li>
@@ -1460,7 +1460,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>rollWriter</h4>
-<pre>public&nbsp;byte[][]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.671">rollWriter</a>(boolean&nbsp;force)
+<pre>public&nbsp;byte[][]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.670">rollWriter</a>(boolean&nbsp;force)
                     throws <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FailedLogCloseException.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FailedLogCloseException</a>,
                            <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#rollWriter(boolean)">WAL</a></code></strong></div>
@@ -1488,7 +1488,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>createWriterInstance</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/wal/WALProvider.Writer.html" title="interface in org.apache.hadoop.hbase.wal">WALProvider.Writer</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.724">createWriterInstance</a>(org.apache.hadoop.fs.Path&nbsp;path)
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/wal/WALProvider.Writer.html" title="interface in org.apache.hadoop.hbase.wal">WALProvider.Writer</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.723">createWriterInstance</a>(org.apache.hadoop.fs.Path&nbsp;path)
                                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">This method allows subclasses to inject different writers without having to
  extend other methods like rollWriter().</div>
@@ -1503,7 +1503,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanOldLogs</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.732">cleanOldLogs</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.731">cleanOldLogs</a>()
                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Archive old logs. A WAL is eligible for archiving if all its WALEdits have been flushed.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -1516,7 +1516,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>findRegionsToForceFlush</h4>
-<pre>byte[][]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.761">findRegionsToForceFlush</a>()
+<pre>byte[][]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.760">findRegionsToForceFlush</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">If the number of un-archived WAL files is greater than maximum allowed, check the first
  (oldest) WAL file, and returns those regions which should be flushed so that it can
@@ -1532,7 +1532,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>afterCreatingZigZagLatch</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.786">afterCreatingZigZagLatch</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.785">afterCreatingZigZagLatch</a>()</pre>
 <div class="block">Used to manufacture race condition reliably. For testing only.</div>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#beforeWaitOnSafePoint()"><code>beforeWaitOnSafePoint()</code></a></dd></dl>
 </li>
@@ -1543,7 +1543,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>beforeWaitOnSafePoint</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.792">beforeWaitOnSafePoint</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.791">beforeWaitOnSafePoint</a>()</pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#afterCreatingZigZagLatch()"><code>afterCreatingZigZagLatch()</code></a></dd></dl>
 </li>
 </ul>
@@ -1553,7 +1553,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>replaceWriter</h4>
-<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.812">replaceWriter</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
+<pre>org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.811">replaceWriter</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
                                       org.apache.hadoop.fs.Path&nbsp;newPath,
                                       <a href="../../../../../../org/apache/hadoop/hbase/wal/WALProvider.Writer.html" title="interface in org.apache.hadoop.hbase.wal">WALProvider.Writer</a>&nbsp;nextWriter,
                                       org.apache.hadoop.fs.FSDataOutputStream&nbsp;nextHdfsOut)
@@ -1579,7 +1579,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getUnflushedEntriesCount</h4>
-<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.910">getUnflushedEntriesCount</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.909">getUnflushedEntriesCount</a>()</pre>
 </li>
 </ul>
 <a name="isUnflushedEntries()">
@@ -1588,7 +1588,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>isUnflushedEntries</h4>
-<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.916">isUnflushedEntries</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.915">isUnflushedEntries</a>()</pre>
 </li>
 </ul>
 <a name="getWALArchivePath(org.apache.hadoop.fs.Path, org.apache.hadoop.fs.Path)">
@@ -1597,7 +1597,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALArchivePath</h4>
-<pre>public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.924">getWALArchivePath</a>(org.apache.hadoop.fs.Path&nbsp;archiveDir,
+<pre>public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.923">getWALArchivePath</a>(org.apache.hadoop.fs.Path&nbsp;archiveDir,
                                           org.apache.hadoop.fs.Path&nbsp;p)</pre>
 </li>
 </ul>
@@ -1607,7 +1607,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>archiveLogFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.928">archiveLogFile</a>(org.apache.hadoop.fs.Path&nbsp;p)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.927">archiveLogFile</a>(org.apache.hadoop.fs.Path&nbsp;p)
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -1619,7 +1619,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>computeFilename</h4>
-<pre>protected&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.954">computeFilename</a>(long&nbsp;filenum)</pre>
+<pre>protected&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.953">computeFilename</a>(long&nbsp;filenum)</pre>
 <div class="block">This is a convenience method that computes a new filename with a given
  file-number.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>filenum</code> - to use</dd>
@@ -1632,7 +1632,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentFileName</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.967">getCurrentFileName</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.966">getCurrentFileName</a>()</pre>
 <div class="block">This is a convenience method that computes a new filename with a given
  using the current WAL file-number</div>
 <dl><dt><span class="strong">Returns:</span></dt><dd>Path</dd></dl>
@@ -1644,7 +1644,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.972">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.971">toString</a>()</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#toString()">WAL</a></code></strong></div>
 <div class="block">Human readable identifying information about the state of this WAL.
  Implementors are encouraged to include information appropriate for debugging.
@@ -1664,7 +1664,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileNumFromFileName</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.984">getFileNumFromFileName</a>(org.apache.hadoop.fs.Path&nbsp;fileName)</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.983">getFileNumFromFileName</a>(org.apache.hadoop.fs.Path&nbsp;fileName)</pre>
 <div class="block">A log file has a creation timestamp (in ms) in its file name (<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#filenum"><code>filenum</code></a>.
  This helper method returns the creation timestamp from a given log file.
  It extracts the timestamp assuming the filename is created with the
@@ -1679,7 +1679,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.997">close</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.996">close</a>()
            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#close()">WAL</a></code></strong></div>
 <div class="block">Caller no longer needs any edits from this WAL. Implementers are free to reclaim
@@ -1698,7 +1698,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1027">shutdown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1026">shutdown</a>()
               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#shutdown()">WAL</a></code></strong></div>
 <div class="block">Stop accepting new writes. If we have unsynced writes still in buffer, sync them.
@@ -1716,7 +1716,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>append</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1087">append</a>(<a href="../../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;htd,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1086">append</a>(<a href="../../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;htd,
           <a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;hri,
           <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;key,
           <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALEdit</a>&nbsp;edits,
@@ -1753,7 +1753,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>checkLogRoll</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1284">checkLogRoll</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1283">checkLogRoll</a>()</pre>
 <div class="block">Schedule a log roll if needed.</div>
 </li>
 </ul>
@@ -1763,7 +1763,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>checkLowReplication</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1305">checkLowReplication</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1304">checkLowReplication</a>()</pre>
 </li>
 </ul>
 <a name="publishSyncOnRingBuffer()">
@@ -1772,7 +1772,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>publishSyncOnRingBuffer</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1352">publishSyncOnRingBuffer</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1351">publishSyncOnRingBuffer</a>()</pre>
 </li>
 </ul>
 <a name="publishSyncOnRingBuffer(org.apache.htrace.Span)">
@@ -1781,7 +1781,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>publishSyncOnRingBuffer</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1356">publishSyncOnRingBuffer</a>(org.apache.htrace.Span&nbsp;span)</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1355">publishSyncOnRingBuffer</a>(org.apache.htrace.Span&nbsp;span)</pre>
 </li>
 </ul>
 <a name="publishSyncThenBlockOnCompletion(org.apache.htrace.Span)">
@@ -1790,7 +1790,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>publishSyncThenBlockOnCompletion</h4>
-<pre>private&nbsp;org.apache.htrace.Span&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1369">publishSyncThenBlockOnCompletion</a>(org.apache.htrace.Span&nbsp;span)
+<pre>private&nbsp;org.apache.htrace.Span&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1368">publishSyncThenBlockOnCompletion</a>(org.apache.htrace.Span&nbsp;span)
                                                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -1802,7 +1802,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>blockOnSync</h4>
-<pre>private&nbsp;org.apache.htrace.Span&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1373">blockOnSync</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;syncFuture)
+<pre>private&nbsp;org.apache.htrace.Span&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1372">blockOnSync</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;syncFuture)
                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -1814,7 +1814,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>convertInterruptedExceptionToIOException</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1386">convertInterruptedExceptionToIOException</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>&nbsp;ie)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1385">convertInterruptedExceptionToIOException</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>&nbsp;ie)</pre>
 </li>
 </ul>
 <a name="getSyncFuture(long, org.apache.htrace.Span)">
@@ -1823,7 +1823,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getSyncFuture</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1393">getSyncFuture</a>(long&nbsp;sequence,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1392">getSyncFuture</a>(long&nbsp;sequence,
                        org.apache.htrace.Span&nbsp;span)</pre>
 </li>
 </ul>
@@ -1833,7 +1833,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>postSync</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1402">postSync</a>(long&nbsp;timeInNanos,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1401">postSync</a>(long&nbsp;timeInNanos,
             int&nbsp;handlerSyncs)</pre>
 </li>
 </ul>
@@ -1843,7 +1843,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>postAppend</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1418">postAppend</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;e,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1417">postAppend</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a>&nbsp;e,
               long&nbsp;elapsedTime)</pre>
 </li>
 </ul>
@@ -1853,7 +1853,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getLogReplication</h4>
-<pre>int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1445">getLogReplication</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1444">getLogReplication</a>()</pre>
 <div class="block">This method gets the datanode replication count for the current WAL.
 
  If the pipeline isn't started yet or is empty, you will get the default
@@ -1872,7 +1872,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>sync</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1458">sync</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1457">sync</a>()
           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#sync()">WAL</a></code></strong></div>
 <div class="block">Sync what we have in the WAL.</div>
@@ -1889,7 +1889,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>sync</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1469">sync</a>(long&nbsp;txid)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1468">sync</a>(long&nbsp;txid)
           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#sync(long)">WAL</a></code></strong></div>
 <div class="block">Sync the WAL if the txId was not already sync'd.</div>
@@ -1907,7 +1907,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>requestLogRoll</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1484">requestLogRoll</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1483">requestLogRoll</a>()</pre>
 </li>
 </ul>
 <a name="requestLogRoll(boolean)">
@@ -1916,7 +1916,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>requestLogRoll</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1488">requestLogRoll</a>(boolean&nbsp;tooFewReplicas)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1487">requestLogRoll</a>(boolean&nbsp;tooFewReplicas)</pre>
 </li>
 </ul>
 <a name="getNumRolledLogFiles()">
@@ -1925,7 +1925,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumRolledLogFiles</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1498">getNumRolledLogFiles</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1497">getNumRolledLogFiles</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the number of rolled log files</dd></dl>
 </li>
 </ul>
@@ -1935,7 +1935,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumLogFiles</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1504">getNumLogFiles</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1503">getNumLogFiles</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the number of log files in use</dd></dl>
 </li>
 </ul>
@@ -1945,7 +1945,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getLogFileSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1511">getLogFileSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1510">getLogFileSize</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>the size of log files in use</dd></dl>
 </li>
 </ul>
@@ -1955,7 +1955,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>startCacheFlush</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1516">startCacheFlush</a>(byte[]&nbsp;encodedRegionName,
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1515">startCacheFlush</a>(byte[]&nbsp;encodedRegionName,
                    <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;byte[]&gt;&nbsp;families)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#startCacheFlush(byte[],%20java.util.Set)">WAL</a></code></strong></div>
 <div class="block">WAL keeps track of the sequence numbers that are as yet not flushed im memstores
@@ -1983,7 +1983,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>completeCacheFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1525">completeCacheFlush</a>(byte[]&nbsp;encodedRegionName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1524">completeCacheFlush</a>(byte[]&nbsp;encodedRegionName)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#completeCacheFlush(byte[])">WAL</a></code></strong></div>
 <div class="block">Complete the cache flush.</div>
 <dl>
@@ -1999,7 +1999,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>abortCacheFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1531">abortCacheFlush</a>(byte[]&nbsp;encodedRegionName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1530">abortCacheFlush</a>(byte[]&nbsp;encodedRegionName)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#abortCacheFlush(byte[])">WAL</a></code></strong></div>
 <div class="block">Abort a cache flush. Call if the flush fails. Note that the only recovery
  for an aborted flush currently is a restart of the regionserver so the
@@ -2016,7 +2016,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>isLowReplicationRollEnabled</h4>
-<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1537">isLowReplicationRollEnabled</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1536">isLowReplicationRollEnabled</a>()</pre>
 </li>
 </ul>
 <a name="split(org.apache.hadoop.conf.Configuration, org.apache.hadoop.fs.Path)">
@@ -2025,7 +2025,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>split</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1545">split</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1544">split</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
          org.apache.hadoop.fs.Path&nbsp;p)
                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -2038,7 +2038,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getEarliestMemstoreSeqNum</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1562">getEarliestMemstoreSeqNum</a>(byte[]&nbsp;encodedRegionName)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1561">getEarliestMemstoreSeqNum</a>(byte[]&nbsp;encodedRegionName)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#getEarliestMemstoreSeqNum(byte[])">WAL</a></code></strong></div>
 <div class="block">Gets the earliest unflushed sequence id in the memstore for the region.</div>
 <dl>
@@ -2054,7 +2054,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>getEarliestMemstoreSeqNum</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1568">getEarliestMemstoreSeqNum</a>(byte[]&nbsp;encodedRegionName,
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1567">getEarliestMemstoreSeqNum</a>(byte[]&nbsp;encodedRegionName,
                              byte[]&nbsp;familyName)</pre>
 <div class="block"><strong>Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html#getEarliestMemstoreSeqNum(byte[],%20byte[])">WAL</a></code></strong></div>
 <div class="block">Gets the earliest unflushed sequence id in the memstore for the store.</div>
@@ -2071,7 +2071,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>atHeadOfRingBufferEventHandlerAppend</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1925">atHeadOfRingBufferEventHandlerAppend</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1924">atHeadOfRingBufferEventHandlerAppend</a>()</pre>
 <div class="block">Exposed for testing only.  Use to tricks like halt the ring buffer appending.</div>
 </li>
 </ul>
@@ -2081,7 +2081,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>ensureIOException</h4>
-<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1929">ensureIOException</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)</pre>
+<pre>private static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1928">ensureIOException</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)</pre>
 </li>
 </ul>
 <a name="usage()">
@@ -2090,7 +2090,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>usage</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1933">usage</a>()</pre>
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1932">usage</a>()</pre>
 </li>
 </ul>
 <a name="main(java.lang.String[])">
@@ -2099,7 +2099,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1951">main</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1950">main</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Pass one or more log file names and it will either dump out a text version
  on <code>stdout</code> or split the specified log files.</div>
@@ -2114,7 +2114,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" titl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getPipeLine</h4>
-<pre>org.apache.hadoop.hdfs.protocol.DatanodeInfo[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1986">getPipeLine</a>()</pre>
+<pre>org.apache.hadoop.hdfs.protocol.DatanodeInfo[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1985">getPipeLine</a>()</pre>
 <div class="block">This method gets the pipeline for the current WAL.</div>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/wal/HLogKey.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/HLogKey.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/HLogKey.html
index 6afe33d..901a6ce 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/HLogKey.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/HLogKey.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <div class="block"><strong>Deprecated.</strong>&nbsp;
-<div class="block"><i>use WALKey.  as of 2.0.  Remove in 3.0</i></div>
+<div class="block"><i>use WALKey. Deprecated as of 1.0 (HBASE-12522). Remove in 2.0</i></div>
 </div>
 <br>
 <pre><a href="../../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.LimitedPrivate</a>(<a href="../../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.LimitedPrivate.html#value()">value</a>="Replication")


[15/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.RandomKVGeneratingMapper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.RandomKVGeneratingMapper.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.RandomKVGeneratingMapper.html
index f045a97..5692397 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.RandomKVGeneratingMapper.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.RandomKVGeneratingMapper.html
@@ -357,817 +357,818 @@
 <span class="sourceLineNo">349</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.349"></a>
 <span class="sourceLineNo">350</span>  public void testJobConfiguration() throws Exception {<a name="line.350"></a>
 <span class="sourceLineNo">351</span>    Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    conf.set("hbase.fs.tmp.dir", util.getDataTestDir("testJobConfiguration").toString());<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    Job job = new Job(conf);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    job.setWorkingDirectory(util.getDataTestDir("testJobConfiguration"));<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    Table table = Mockito.mock(Table.class);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    RegionLocator regionLocator = Mockito.mock(RegionLocator.class);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    setupMockStartKeys(regionLocator);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    setupMockTableName(regionLocator);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals(job.getNumReduceTasks(), 4);<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>  private byte [][] generateRandomStartKeys(int numKeys) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    Random random = new Random();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    byte[][] ret = new byte[numKeys][];<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    // first region start key is always empty<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    ret[0] = HConstants.EMPTY_BYTE_ARRAY;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    for (int i = 1; i &lt; numKeys; i++) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      ret[i] =<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        PerformanceEvaluation.generateData(random, PerformanceEvaluation.DEFAULT_VALUE_LENGTH);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    return ret;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private byte[][] generateRandomSplitKeys(int numKeys) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    Random random = new Random();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    byte[][] ret = new byte[numKeys][];<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    for (int i = 0; i &lt; numKeys; i++) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ret[i] =<a name="line.379"></a>
-<span class="sourceLineNo">380</span>          PerformanceEvaluation.generateData(random, PerformanceEvaluation.DEFAULT_VALUE_LENGTH);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    return ret;<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>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public void testMRIncrementalLoad() throws Exception {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    LOG.info("\nStarting test testMRIncrementalLoad\n");<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    doIncrementalLoadTest(false, false);<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>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  public void testMRIncrementalLoadWithSplit() throws Exception {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    LOG.info("\nStarting test testMRIncrementalLoadWithSplit\n");<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    doIncrementalLoadTest(true, false);<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>  /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * Test for HFileOutputFormat2.LOCALITY_SENSITIVE_CONF_KEY = true<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * This test could only check the correctness of original logic if LOCALITY_SENSITIVE_CONF_KEY<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * is set to true. Because MiniHBaseCluster always run with single hostname (and different ports),<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * it's not possible to check the region locality by comparing region locations and DN hostnames.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * When MiniHBaseCluster supports explicit hostnames parameter (just like MiniDFSCluster does),<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * we could test region locality features more easily.<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   */<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public void testMRIncrementalLoadWithLocality() throws Exception {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    LOG.info("\nStarting test testMRIncrementalLoadWithLocality\n");<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    doIncrementalLoadTest(false, true);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    doIncrementalLoadTest(true, true);<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>  private void doIncrementalLoadTest(boolean shouldChangeRegions, boolean shouldKeepLocality)<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      throws Exception {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    util = new HBaseTestingUtility();<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    Configuration conf = util.getConfiguration();<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    conf.setBoolean(HFileOutputFormat2.LOCALITY_SENSITIVE_CONF_KEY, shouldKeepLocality);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    int hostCount = 1;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    int regionNum = 5;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    if(shouldKeepLocality) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      // We should change host count higher than hdfs replica count when MiniHBaseCluster supports<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      // explicit hostnames parameter just like MiniDFSCluster does.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      hostCount = 3;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      regionNum = 20;<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>    byte[][] splitKeys = generateRandomSplitKeys(regionNum - 1);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    String[] hostnames = new String[hostCount];<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    for(int i = 0; i &lt; hostCount; ++i) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      hostnames[i] = "datanode_" + i;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    util.startMiniCluster(1, hostCount, hostnames);<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>    Table table = util.createTable(TABLE_NAME, FAMILIES, splitKeys);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Path testDir = util.getDataTestDirOnTestFS("testLocalMRIncrementalLoad");<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    try (RegionLocator r = util.getConnection().getRegionLocator(TABLE_NAME); Admin admin =<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        util.getConnection().getAdmin();) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      assertEquals("Should start with empty table", 0, util.countRows(table));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      int numRegions = r.getStartKeys().length;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      assertEquals("Should make " + regionNum + " regions", numRegions, regionNum);<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>      // Generate the bulk load files<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      runIncrementalPELoad(conf, table.getTableDescriptor(), r, testDir);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // This doesn't write into the table, just makes files<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      assertEquals("HFOF should not touch actual table", 0, util.countRows(table));<a name="line.444"></a>
-<span class="sourceLineNo">445</span><a name="line.445"></a>
-<span class="sourceLineNo">446</span>      // Make sure that a directory was created for every CF<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      int dir = 0;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      for (FileStatus f : testDir.getFileSystem(conf).listStatus(testDir)) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        for (byte[] family : FAMILIES) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          if (Bytes.toString(family).equals(f.getPath().getName())) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>            ++dir;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        }<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      assertEquals("Column family not found in FS.", FAMILIES.length, dir);<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>      // handle the split case<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      if (shouldChangeRegions) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        LOG.info("Changing regions in table");<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        admin.disableTable(table.getName());<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        while(util.getMiniHBaseCluster().getMaster().getAssignmentManager().<a name="line.461"></a>
-<span class="sourceLineNo">462</span>            getRegionStates().isRegionsInTransition()) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>          Threads.sleep(200);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          LOG.info("Waiting on table to finish disabling");<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        }<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        util.deleteTable(table.getName());<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        byte[][] newSplitKeys = generateRandomSplitKeys(14);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        table = util.createTable(TABLE_NAME, FAMILIES, newSplitKeys);<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>        while (util.getConnection().getRegionLocator(TABLE_NAME)<a name="line.470"></a>
-<span class="sourceLineNo">471</span>            .getAllRegionLocations().size() != 15 ||<a name="line.471"></a>
-<span class="sourceLineNo">472</span>            !admin.isTableAvailable(table.getName())) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          Thread.sleep(200);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          LOG.info("Waiting for new region assignment to happen");<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>      // Perform the actual load<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      new LoadIncrementalHFiles(conf).doBulkLoad(testDir, admin, table, r);<a name="line.479"></a>
-<span class="sourceLineNo">480</span><a name="line.480"></a>
-<span class="sourceLineNo">481</span>      // Ensure data shows up<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      int expectedRows = NMapInputFormat.getNumMapTasks(conf) * ROWSPERSPLIT;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      assertEquals("LoadIncrementalHFiles should put expected data in table",<a name="line.483"></a>
-<span class="sourceLineNo">484</span>          expectedRows, util.countRows(table));<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      Scan scan = new Scan();<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      ResultScanner results = table.getScanner(scan);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      for (Result res : results) {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        assertEquals(FAMILIES.length, res.rawCells().length);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        Cell first = res.rawCells()[0];<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        for (Cell kv : res.rawCells()) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>          assertTrue(CellUtil.matchingRow(first, kv));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          assertTrue(Bytes.equals(CellUtil.cloneValue(first), CellUtil.cloneValue(kv)));<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      results.close();<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      String tableDigestBefore = util.checksumRows(table);<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>      // Check region locality<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      HDFSBlocksDistribution hbd = new HDFSBlocksDistribution();<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      for (HRegion region : util.getHBaseCluster().getRegions(TABLE_NAME)) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        hbd.add(region.getHDFSBlocksDistribution());<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      }<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      for (String hostname : hostnames) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        float locality =  hbd.getBlockLocalityIndex(hostname);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        LOG.info("locality of [" + hostname + "]: " + locality);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        assertEquals(100, (int) (locality * 100));<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      }<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>      // Cause regions to reopen<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      admin.disableTable(TABLE_NAME);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      while (!admin.isTableDisabled(TABLE_NAME)) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        Thread.sleep(200);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        LOG.info("Waiting for table to disable");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      admin.enableTable(TABLE_NAME);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      util.waitTableAvailable(TABLE_NAME);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      assertEquals("Data should remain after reopening of regions",<a name="line.517"></a>
-<span class="sourceLineNo">518</span>          tableDigestBefore, util.checksumRows(table));<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    } finally {<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      testDir.getFileSystem(conf).delete(testDir, true);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      util.deleteTable(TABLE_NAME);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      util.shutdownMiniCluster();<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span>  }<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>  private void runIncrementalPELoad(Configuration conf, HTableDescriptor tableDescriptor,<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      RegionLocator regionLocator, Path outDir) throws IOException, UnsupportedEncodingException,<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      InterruptedException, ClassNotFoundException {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    Job job = new Job(conf, "testLocalMRIncrementalLoad");<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    job.setWorkingDirectory(util.getDataTestDirOnTestFS("runIncrementalPELoad"));<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    job.getConfiguration().setStrings("io.serializations", conf.get("io.serializations"),<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        MutationSerialization.class.getName(), ResultSerialization.class.getName(),<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        KeyValueSerialization.class.getName());<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    setupRandomGeneratorMapper(job);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    HFileOutputFormat2.configureIncrementalLoad(job, tableDescriptor, regionLocator);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    FileOutputFormat.setOutputPath(job, outDir);<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>    assertFalse(util.getTestFileSystem().exists(outDir)) ;<a name="line.538"></a>
-<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span>    assertEquals(regionLocator.getAllRegionLocations().size(), job.getNumReduceTasks());<a name="line.540"></a>
-<span class="sourceLineNo">541</span><a name="line.541"></a>
-<span class="sourceLineNo">542</span>    assertTrue(job.waitForCompletion(true));<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>  /**<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * Test for {@link HFileOutputFormat2#configureCompression(org.apache.hadoop.hbase.client.Table,<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * Configuration)} and {@link HFileOutputFormat2#createFamilyCompressionMap<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * (Configuration)}.<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * Tests that the compression map is correctly serialized into<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * and deserialized from configuration<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   *<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @throws IOException<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.554"></a>
-<span class="sourceLineNo">555</span>  public void testSerializeDeserializeFamilyCompressionMap() throws IOException {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    for (int numCfs = 0; numCfs &lt;= 3; numCfs++) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      Map&lt;String, Compression.Algorithm&gt; familyToCompression =<a name="line.558"></a>
-<span class="sourceLineNo">559</span>          getMockColumnFamiliesForCompression(numCfs);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      Table table = Mockito.mock(HTable.class);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      setupMockColumnFamiliesForCompression(table, familyToCompression);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      HFileOutputFormat2.configureCompression(conf, table.getTableDescriptor());<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span>      // read back family specific compression setting from the configuration<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      Map&lt;byte[], Algorithm&gt; retrievedFamilyToCompressionMap = HFileOutputFormat2<a name="line.565"></a>
-<span class="sourceLineNo">566</span>          .createFamilyCompressionMap(conf);<a name="line.566"></a>
-<span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>      // test that we have a value for all column families that matches with the<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      // used mock values<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      for (Entry&lt;String, Algorithm&gt; entry : familyToCompression.entrySet()) {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        assertEquals("Compression configuration incorrect for column family:"<a name="line.571"></a>
-<span class="sourceLineNo">572</span>            + entry.getKey(), entry.getValue(),<a name="line.572"></a>
-<span class="sourceLineNo">573</span>            retrievedFamilyToCompressionMap.get(entry.getKey().getBytes()));<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>
-<span class="sourceLineNo">576</span>  }<a name="line.576"></a>
-<span class="sourceLineNo">577</span><a name="line.577"></a>
-<span class="sourceLineNo">578</span>  private void setupMockColumnFamiliesForCompression(Table table,<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      Map&lt;String, Compression.Algorithm&gt; familyToCompression) throws IOException {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    HTableDescriptor mockTableDescriptor = new HTableDescriptor(TABLE_NAME);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    for (Entry&lt;String, Compression.Algorithm&gt; entry : familyToCompression.entrySet()) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      mockTableDescriptor.addFamily(new HColumnDescriptor(entry.getKey())<a name="line.582"></a>
-<span class="sourceLineNo">583</span>          .setMaxVersions(1)<a name="line.583"></a>
-<span class="sourceLineNo">584</span>          .setCompressionType(entry.getValue())<a name="line.584"></a>
-<span class="sourceLineNo">585</span>          .setBlockCacheEnabled(false)<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          .setTimeToLive(0));<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    }<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    Mockito.doReturn(mockTableDescriptor).when(table).getTableDescriptor();<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
-<span class="sourceLineNo">590</span><a name="line.590"></a>
-<span class="sourceLineNo">591</span>  /**<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   * @return a map from column family names to compression algorithms for<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   *         testing column family compression. Column family names have special characters<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   */<a name="line.594"></a>
-<span class="sourceLineNo">595</span>  private Map&lt;String, Compression.Algorithm&gt;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      getMockColumnFamiliesForCompression (int numCfs) {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    Map&lt;String, Compression.Algorithm&gt; familyToCompression<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      = new HashMap&lt;String, Compression.Algorithm&gt;();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    // use column family names having special characters<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    if (numCfs-- &gt; 0) {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      familyToCompression.put("Family1!@#!@#&amp;", Compression.Algorithm.LZO);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    }<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    if (numCfs-- &gt; 0) {<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      familyToCompression.put("Family2=asdads&amp;!AASD", Compression.Algorithm.SNAPPY);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    if (numCfs-- &gt; 0) {<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      familyToCompression.put("Family2=asdads&amp;!AASD", Compression.Algorithm.GZ);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    }<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    if (numCfs-- &gt; 0) {<a name="line.609"></a>
-<span class="sourceLineNo">610</span>      familyToCompression.put("Family3", Compression.Algorithm.NONE);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    }<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    return familyToCompression;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  }<a name="line.613"></a>
-<span class="sourceLineNo">614</span><a name="line.614"></a>
+<span class="sourceLineNo">352</span>    conf.set(HConstants.TEMPORARY_FS_DIRECTORY_KEY, util.getDataTestDir("testJobConfiguration")<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        .toString());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Job job = new Job(conf);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    job.setWorkingDirectory(util.getDataTestDir("testJobConfiguration"));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    Table table = Mockito.mock(Table.class);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    RegionLocator regionLocator = Mockito.mock(RegionLocator.class);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    setupMockStartKeys(regionLocator);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    setupMockTableName(regionLocator);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    assertEquals(job.getNumReduceTasks(), 4);<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>  private byte [][] generateRandomStartKeys(int numKeys) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    Random random = new Random();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    byte[][] ret = new byte[numKeys][];<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // first region start key is always empty<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    ret[0] = HConstants.EMPTY_BYTE_ARRAY;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    for (int i = 1; i &lt; numKeys; i++) {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      ret[i] =<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        PerformanceEvaluation.generateData(random, PerformanceEvaluation.DEFAULT_VALUE_LENGTH);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    return ret;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>  private byte[][] generateRandomSplitKeys(int numKeys) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    Random random = new Random();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    byte[][] ret = new byte[numKeys][];<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    for (int i = 0; i &lt; numKeys; i++) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      ret[i] =<a name="line.380"></a>
+<span class="sourceLineNo">381</span>          PerformanceEvaluation.generateData(random, PerformanceEvaluation.DEFAULT_VALUE_LENGTH);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    return ret;<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>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  public void testMRIncrementalLoad() throws Exception {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    LOG.info("\nStarting test testMRIncrementalLoad\n");<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    doIncrementalLoadTest(false, false);<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>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public void testMRIncrementalLoadWithSplit() throws Exception {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    LOG.info("\nStarting test testMRIncrementalLoadWithSplit\n");<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    doIncrementalLoadTest(true, false);<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>  /**<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * Test for HFileOutputFormat2.LOCALITY_SENSITIVE_CONF_KEY = true<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * This test could only check the correctness of original logic if LOCALITY_SENSITIVE_CONF_KEY<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * is set to true. Because MiniHBaseCluster always run with single hostname (and different ports),<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * it's not possible to check the region locality by comparing region locations and DN hostnames.<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * When MiniHBaseCluster supports explicit hostnames parameter (just like MiniDFSCluster does),<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * we could test region locality features more easily.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  public void testMRIncrementalLoadWithLocality() throws Exception {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    LOG.info("\nStarting test testMRIncrementalLoadWithLocality\n");<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    doIncrementalLoadTest(false, true);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    doIncrementalLoadTest(true, true);<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>  private void doIncrementalLoadTest(boolean shouldChangeRegions, boolean shouldKeepLocality)<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      throws Exception {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    util = new HBaseTestingUtility();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    Configuration conf = util.getConfiguration();<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    conf.setBoolean(HFileOutputFormat2.LOCALITY_SENSITIVE_CONF_KEY, shouldKeepLocality);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    int hostCount = 1;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    int regionNum = 5;<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    if(shouldKeepLocality) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      // We should change host count higher than hdfs replica count when MiniHBaseCluster supports<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      // explicit hostnames parameter just like MiniDFSCluster does.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      hostCount = 3;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      regionNum = 20;<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>    byte[][] splitKeys = generateRandomSplitKeys(regionNum - 1);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    String[] hostnames = new String[hostCount];<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    for(int i = 0; i &lt; hostCount; ++i) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      hostnames[i] = "datanode_" + i;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    }<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    util.startMiniCluster(1, hostCount, hostnames);<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    Table table = util.createTable(TABLE_NAME, FAMILIES, splitKeys);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    Path testDir = util.getDataTestDirOnTestFS("testLocalMRIncrementalLoad");<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    try (RegionLocator r = util.getConnection().getRegionLocator(TABLE_NAME); Admin admin =<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        util.getConnection().getAdmin();) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      assertEquals("Should start with empty table", 0, util.countRows(table));<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      int numRegions = r.getStartKeys().length;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      assertEquals("Should make " + regionNum + " regions", numRegions, regionNum);<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>      // Generate the bulk load files<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      runIncrementalPELoad(conf, table.getTableDescriptor(), r, testDir);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      // This doesn't write into the table, just makes files<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      assertEquals("HFOF should not touch actual table", 0, util.countRows(table));<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // Make sure that a directory was created for every CF<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      int dir = 0;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      for (FileStatus f : testDir.getFileSystem(conf).listStatus(testDir)) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>        for (byte[] family : FAMILIES) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>          if (Bytes.toString(family).equals(f.getPath().getName())) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>            ++dir;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      assertEquals("Column family not found in FS.", FAMILIES.length, dir);<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>      // handle the split case<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      if (shouldChangeRegions) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        LOG.info("Changing regions in table");<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        admin.disableTable(table.getName());<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        while(util.getMiniHBaseCluster().getMaster().getAssignmentManager().<a name="line.462"></a>
+<span class="sourceLineNo">463</span>            getRegionStates().isRegionsInTransition()) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>          Threads.sleep(200);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>          LOG.info("Waiting on table to finish disabling");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        }<a name="line.466"></a>
+<span class="sourceLineNo">467</span>        util.deleteTable(table.getName());<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        byte[][] newSplitKeys = generateRandomSplitKeys(14);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        table = util.createTable(TABLE_NAME, FAMILIES, newSplitKeys);<a name="line.469"></a>
+<span class="sourceLineNo">470</span><a name="line.470"></a>
+<span class="sourceLineNo">471</span>        while (util.getConnection().getRegionLocator(TABLE_NAME)<a name="line.471"></a>
+<span class="sourceLineNo">472</span>            .getAllRegionLocations().size() != 15 ||<a name="line.472"></a>
+<span class="sourceLineNo">473</span>            !admin.isTableAvailable(table.getName())) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>          Thread.sleep(200);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>          LOG.info("Waiting for new region assignment to happen");<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        }<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>      // Perform the actual load<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      new LoadIncrementalHFiles(conf).doBulkLoad(testDir, admin, table, r);<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>      // Ensure data shows up<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      int expectedRows = NMapInputFormat.getNumMapTasks(conf) * ROWSPERSPLIT;<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      assertEquals("LoadIncrementalHFiles should put expected data in table",<a name="line.484"></a>
+<span class="sourceLineNo">485</span>          expectedRows, util.countRows(table));<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      Scan scan = new Scan();<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      ResultScanner results = table.getScanner(scan);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      for (Result res : results) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>        assertEquals(FAMILIES.length, res.rawCells().length);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>        Cell first = res.rawCells()[0];<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        for (Cell kv : res.rawCells()) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          assertTrue(CellUtil.matchingRow(first, kv));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>          assertTrue(Bytes.equals(CellUtil.cloneValue(first), CellUtil.cloneValue(kv)));<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      }<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      results.close();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      String tableDigestBefore = util.checksumRows(table);<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>      // Check region locality<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      HDFSBlocksDistribution hbd = new HDFSBlocksDistribution();<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      for (HRegion region : util.getHBaseCluster().getRegions(TABLE_NAME)) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        hbd.add(region.getHDFSBlocksDistribution());<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      for (String hostname : hostnames) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>        float locality =  hbd.getBlockLocalityIndex(hostname);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>        LOG.info("locality of [" + hostname + "]: " + locality);<a name="line.506"></a>
+<span class="sourceLineNo">507</span>        assertEquals(100, (int) (locality * 100));<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      }<a name="line.508"></a>
+<span class="sourceLineNo">509</span><a name="line.509"></a>
+<span class="sourceLineNo">510</span>      // Cause regions to reopen<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      admin.disableTable(TABLE_NAME);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      while (!admin.isTableDisabled(TABLE_NAME)) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>        Thread.sleep(200);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>        LOG.info("Waiting for table to disable");<a name="line.514"></a>
+<span class="sourceLineNo">515</span>      }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>      admin.enableTable(TABLE_NAME);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      util.waitTableAvailable(TABLE_NAME);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      assertEquals("Data should remain after reopening of regions",<a name="line.518"></a>
+<span class="sourceLineNo">519</span>          tableDigestBefore, util.checksumRows(table));<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    } finally {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      testDir.getFileSystem(conf).delete(testDir, true);<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      util.deleteTable(TABLE_NAME);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>      util.shutdownMiniCluster();<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
+<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
+<span class="sourceLineNo">526</span><a name="line.526"></a>
+<span class="sourceLineNo">527</span>  private void runIncrementalPELoad(Configuration conf, HTableDescriptor tableDescriptor,<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      RegionLocator regionLocator, Path outDir) throws IOException, UnsupportedEncodingException,<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      InterruptedException, ClassNotFoundException {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    Job job = new Job(conf, "testLocalMRIncrementalLoad");<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    job.setWorkingDirectory(util.getDataTestDirOnTestFS("runIncrementalPELoad"));<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    job.getConfiguration().setStrings("io.serializations", conf.get("io.serializations"),<a name="line.532"></a>
+<span class="sourceLineNo">533</span>        MutationSerialization.class.getName(), ResultSerialization.class.getName(),<a name="line.533"></a>
+<span class="sourceLineNo">534</span>        KeyValueSerialization.class.getName());<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    setupRandomGeneratorMapper(job);<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    HFileOutputFormat2.configureIncrementalLoad(job, tableDescriptor, regionLocator);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    FileOutputFormat.setOutputPath(job, outDir);<a name="line.537"></a>
+<span class="sourceLineNo">538</span><a name="line.538"></a>
+<span class="sourceLineNo">539</span>    assertFalse(util.getTestFileSystem().exists(outDir)) ;<a name="line.539"></a>
+<span class="sourceLineNo">540</span><a name="line.540"></a>
+<span class="sourceLineNo">541</span>    assertEquals(regionLocator.getAllRegionLocations().size(), job.getNumReduceTasks());<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>    assertTrue(job.waitForCompletion(true));<a name="line.543"></a>
+<span class="sourceLineNo">544</span>  }<a name="line.544"></a>
+<span class="sourceLineNo">545</span><a name="line.545"></a>
+<span class="sourceLineNo">546</span>  /**<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   * Test for {@link HFileOutputFormat2#configureCompression(org.apache.hadoop.hbase.client.Table,<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   * Configuration)} and {@link HFileOutputFormat2#createFamilyCompressionMap<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * (Configuration)}.<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * Tests that the compression map is correctly serialized into<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * and deserialized from configuration<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   *<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @throws IOException<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   */<a name="line.554"></a>
+<span class="sourceLineNo">555</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.555"></a>
+<span class="sourceLineNo">556</span>  public void testSerializeDeserializeFamilyCompressionMap() throws IOException {<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    for (int numCfs = 0; numCfs &lt;= 3; numCfs++) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      Map&lt;String, Compression.Algorithm&gt; familyToCompression =<a name="line.559"></a>
+<span class="sourceLineNo">560</span>          getMockColumnFamiliesForCompression(numCfs);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      Table table = Mockito.mock(HTable.class);<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      setupMockColumnFamiliesForCompression(table, familyToCompression);<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      HFileOutputFormat2.configureCompression(conf, table.getTableDescriptor());<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>      // read back family specific compression setting from the configuration<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      Map&lt;byte[], Algorithm&gt; retrievedFamilyToCompressionMap = HFileOutputFormat2<a name="line.566"></a>
+<span class="sourceLineNo">567</span>          .createFamilyCompressionMap(conf);<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>      // test that we have a value for all column families that matches with the<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      // used mock values<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      for (Entry&lt;String, Algorithm&gt; entry : familyToCompression.entrySet()) {<a name="line.571"></a>
+<span class="sourceLineNo">572</span>        assertEquals("Compression configuration incorrect for column family:"<a name="line.572"></a>
+<span class="sourceLineNo">573</span>            + entry.getKey(), entry.getValue(),<a name="line.573"></a>
+<span class="sourceLineNo">574</span>            retrievedFamilyToCompressionMap.get(entry.getKey().getBytes()));<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    }<a name="line.576"></a>
+<span class="sourceLineNo">577</span>  }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>  private void setupMockColumnFamiliesForCompression(Table table,<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      Map&lt;String, Compression.Algorithm&gt; familyToCompression) throws IOException {<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    HTableDescriptor mockTableDescriptor = new HTableDescriptor(TABLE_NAME);<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    for (Entry&lt;String, Compression.Algorithm&gt; entry : familyToCompression.entrySet()) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      mockTableDescriptor.addFamily(new HColumnDescriptor(entry.getKey())<a name="line.583"></a>
+<span class="sourceLineNo">584</span>          .setMaxVersions(1)<a name="line.584"></a>
+<span class="sourceLineNo">585</span>          .setCompressionType(entry.getValue())<a name="line.585"></a>
+<span class="sourceLineNo">586</span>          .setBlockCacheEnabled(false)<a name="line.586"></a>
+<span class="sourceLineNo">587</span>          .setTimeToLive(0));<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    Mockito.doReturn(mockTableDescriptor).when(table).getTableDescriptor();<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  }<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @return a map from column family names to compression algorithms for<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   *         testing column family compression. Column family names have special characters<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
+<span class="sourceLineNo">596</span>  private Map&lt;String, Compression.Algorithm&gt;<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      getMockColumnFamiliesForCompression (int numCfs) {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    Map&lt;String, Compression.Algorithm&gt; familyToCompression<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      = new HashMap&lt;String, Compression.Algorithm&gt;();<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    // use column family names having special characters<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    if (numCfs-- &gt; 0) {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      familyToCompression.put("Family1!@#!@#&amp;", Compression.Algorithm.LZO);<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    }<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    if (numCfs-- &gt; 0) {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      familyToCompression.put("Family2=asdads&amp;!AASD", Compression.Algorithm.SNAPPY);<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    if (numCfs-- &gt; 0) {<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      familyToCompression.put("Family2=asdads&amp;!AASD", Compression.Algorithm.GZ);<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    if (numCfs-- &gt; 0) {<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      familyToCompression.put("Family3", Compression.Algorithm.NONE);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    }<a name="line.612"></a>
+<span class="sourceLineNo">613</span>    return familyToCompression;<a name="line.613"></a>
+<span class="sourceLineNo">614</span>  }<a name="line.614"></a>
 <span class="sourceLineNo">615</span><a name="line.615"></a>
-<span class="sourceLineNo">616</span>  /**<a name="line.616"></a>
-<span class="sourceLineNo">617</span>   * Test for {@link HFileOutputFormat2#configureBloomType(org.apache.hadoop.hbase.client.Table,<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * Configuration)} and {@link HFileOutputFormat2#createFamilyBloomTypeMap<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * (Configuration)}.<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * Tests that the compression map is correctly serialized into<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * and deserialized from configuration<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   *<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * @throws IOException<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   */<a name="line.624"></a>
-<span class="sourceLineNo">625</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.625"></a>
-<span class="sourceLineNo">626</span>  public void testSerializeDeserializeFamilyBloomTypeMap() throws IOException {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    for (int numCfs = 0; numCfs &lt;= 2; numCfs++) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      Map&lt;String, BloomType&gt; familyToBloomType =<a name="line.629"></a>
-<span class="sourceLineNo">630</span>          getMockColumnFamiliesForBloomType(numCfs);<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      Table table = Mockito.mock(HTable.class);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      setupMockColumnFamiliesForBloomType(table,<a name="line.632"></a>
-<span class="sourceLineNo">633</span>          familyToBloomType);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      HFileOutputFormat2.configureBloomType(table.getTableDescriptor(), conf);<a name="line.634"></a>
-<span class="sourceLineNo">635</span><a name="line.635"></a>
-<span class="sourceLineNo">636</span>      // read back family specific data block encoding settings from the<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      // configuration<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      Map&lt;byte[], BloomType&gt; retrievedFamilyToBloomTypeMap =<a name="line.638"></a>
-<span class="sourceLineNo">639</span>          HFileOutputFormat2<a name="line.639"></a>
-<span class="sourceLineNo">640</span>              .createFamilyBloomTypeMap(conf);<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>      // test that we have a value for all column families that matches with the<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      // used mock values<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      for (Entry&lt;String, BloomType&gt; entry : familyToBloomType.entrySet()) {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        assertEquals("BloomType configuration incorrect for column family:"<a name="line.645"></a>
-<span class="sourceLineNo">646</span>            + entry.getKey(), entry.getValue(),<a name="line.646"></a>
-<span class="sourceLineNo">647</span>            retrievedFamilyToBloomTypeMap.get(entry.getKey().getBytes()));<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      }<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>  }<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>  private void setupMockColumnFamiliesForBloomType(Table table,<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      Map&lt;String, BloomType&gt; familyToDataBlockEncoding) throws IOException {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    HTableDescriptor mockTableDescriptor = new HTableDescriptor(TABLE_NAME);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    for (Entry&lt;String, BloomType&gt; entry : familyToDataBlockEncoding.entrySet()) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      mockTableDescriptor.addFamily(new HColumnDescriptor(entry.getKey())<a name="line.656"></a>
-<span class="sourceLineNo">657</span>          .setMaxVersions(1)<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          .setBloomFilterType(entry.getValue())<a name="line.658"></a>
-<span class="sourceLineNo">659</span>          .setBlockCacheEnabled(false)<a name="line.659"></a>
-<span class="sourceLineNo">660</span>          .setTimeToLive(0));<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    Mockito.doReturn(mockTableDescriptor).when(table).getTableDescriptor();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>  }<a name="line.663"></a>
-<span class="sourceLineNo">664</span><a name="line.664"></a>
-<span class="sourceLineNo">665</span>  /**<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * @return a map from column family names to compression algorithms for<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   *         testing column family compression. Column family names have special characters<a name="line.667"></a>
-<span class="sourceLineNo">668</span>   */<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  private Map&lt;String, BloomType&gt;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>  getMockColumnFamiliesForBloomType (int numCfs) {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    Map&lt;String, BloomType&gt; familyToBloomType =<a name="line.671"></a>
-<span class="sourceLineNo">672</span>        new HashMap&lt;String, BloomType&gt;();<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    // use column family names having special characters<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    if (numCfs-- &gt; 0) {<a name="line.674"></a>
-<span class="sourceLineNo">675</span>      familyToBloomType.put("Family1!@#!@#&amp;", BloomType.ROW);<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    }<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    if (numCfs-- &gt; 0) {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      familyToBloomType.put("Family2=asdads&amp;!AASD",<a name="line.678"></a>
-<span class="sourceLineNo">679</span>          BloomType.ROWCOL);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    }<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    if (numCfs-- &gt; 0) {<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      familyToBloomType.put("Family3", BloomType.NONE);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    }<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    return familyToBloomType;<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  }<a name="line.685"></a>
-<span class="sourceLineNo">686</span><a name="line.686"></a>
-<span class="sourceLineNo">687</span>  /**<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * Test for {@link HFileOutputFormat2#configureBlockSize(org.apache.hadoop.hbase.client.Table,<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   * Configuration)} and {@link HFileOutputFormat2#createFamilyBlockSizeMap<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * (Configuration)}.<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   * Tests that the compression map is correctly serialized into<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   * and deserialized from configuration<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   *<a name="line.693"></a>
-<span class="sourceLineNo">694</span>   * @throws IOException<a name="line.694"></a>
-<span class="sourceLineNo">695</span>   */<a name="line.695"></a>
-<span class="sourceLineNo">696</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.696"></a>
-<span class="sourceLineNo">697</span>  public void testSerializeDeserializeFamilyBlockSizeMap() throws IOException {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    for (int numCfs = 0; numCfs &lt;= 3; numCfs++) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.699"></a>
-<span class="sourceLineNo">700</span>      Map&lt;String, Integer&gt; familyToBlockSize =<a name="line.700"></a>
-<span class="sourceLineNo">701</span>          getMockColumnFamiliesForBlockSize(numCfs);<a name="line.701"></a>
-<span class="sourceLineNo">702</span>      Table table = Mockito.mock(HTable.class);<a name="line.702"></a>
-<span class="sourceLineNo">703</span>      setupMockColumnFamiliesForBlockSize(table,<a name="line.703"></a>
-<span class="sourceLineNo">704</span>          familyToBlockSize);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>      HFileOutputFormat2.configureBlockSize(table.getTableDescriptor(), conf);<a name="line.705"></a>
-<span class="sourceLineNo">706</span><a name="line.706"></a>
-<span class="sourceLineNo">707</span>      // read back family specific data block encoding settings from the<a name="line.707"></a>
-<span class="sourceLineNo">708</span>      // configuration<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      Map&lt;byte[], Integer&gt; retrievedFamilyToBlockSizeMap =<a name="line.709"></a>
-<span class="sourceLineNo">710</span>          HFileOutputFormat2<a name="line.710"></a>
-<span class="sourceLineNo">711</span>              .createFamilyBlockSizeMap(conf);<a name="line.711"></a>
-<span class="sourceLineNo">712</span><a name="line.712"></a>
-<span class="sourceLineNo">713</span>      // test that we have a value for all column families that matches with the<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      // used mock values<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      for (Entry&lt;String, Integer&gt; entry : familyToBlockSize.entrySet()<a name="line.715"></a>
-<span class="sourceLineNo">716</span>          ) {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>        assertEquals("BlockSize configuration incorrect for column family:"<a name="line.717"></a>
-<span class="sourceLineNo">718</span>            + entry.getKey(), entry.getValue(),<a name="line.718"></a>
-<span class="sourceLineNo">719</span>            retrievedFamilyToBlockSizeMap.get(entry.getKey().getBytes()));<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      }<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    }<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
-<span class="sourceLineNo">723</span><a name="line.723"></a>
-<span class="sourceLineNo">724</span>  private void setupMockColumnFamiliesForBlockSize(Table table,<a name="line.724"></a>
-<span class="sourceLineNo">725</span>      Map&lt;String, Integer&gt; familyToDataBlockEncoding) throws IOException {<a name="line.725"></a>
-<span class="sourceLineNo">726</span>    HTableDescriptor mockTableDescriptor = new HTableDescriptor(TABLE_NAME);<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    for (Entry&lt;String, Integer&gt; entry : familyToDataBlockEncoding.entrySet()) {<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      mockTableDescriptor.addFamily(new HColumnDescriptor(entry.getKey())<a name="line.728"></a>
-<span class="sourceLineNo">729</span>          .setMaxVersions(1)<a name="line.729"></a>
-<span class="sourceLineNo">730</span>          .setBlocksize(entry.getValue())<a name="line.730"></a>
-<span class="sourceLineNo">731</span>          .setBlockCacheEnabled(false)<a name="line.731"></a>
-<span class="sourceLineNo">732</span>          .setTimeToLive(0));<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    }<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    Mockito.doReturn(mockTableDescriptor).when(table).getTableDescriptor();<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>   * @return a map from column family names to compression algorithms for<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   *         testing column family compression. Column family names have special characters<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   */<a name="line.740"></a>
-<span class="sourceLineNo">741</span>  private Map&lt;String, Integer&gt;<a name="line.741"></a>
-<span class="sourceLineNo">742</span>  getMockColumnFamiliesForBlockSize (int numCfs) {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    Map&lt;String, Integer&gt; familyToBlockSize =<a name="line.743"></a>
-<span class="sourceLineNo">744</span>        new HashMap&lt;String, Integer&gt;();<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    // use column family names having special characters<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    if (numCfs-- &gt; 0) {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      familyToBlockSize.put("Family1!@#!@#&amp;", 1234);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    }<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    if (numCfs-- &gt; 0) {<a name="line.749"></a>
-<span class="sourceLineNo">750</span>      familyToBlockSize.put("Family2=asdads&amp;!AASD",<a name="line.750"></a>
-<span class="sourceLineNo">751</span>          Integer.MAX_VALUE);<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    }<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    if (numCfs-- &gt; 0) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      familyToBlockSize.put("Family2=asdads&amp;!AASD",<a name="line.754"></a>
-<span class="sourceLineNo">755</span>          Integer.MAX_VALUE);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    }<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    if (numCfs-- &gt; 0) {<a name="line.757"></a>
-<span class="sourceLineNo">758</span>      familyToBlockSize.put("Family3", 0);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    }<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    return familyToBlockSize;<a name="line.760"></a>
-<span class="sourceLineNo">761</span>  }<a name="line.761"></a>
-<span class="sourceLineNo">762</span><a name="line.762"></a>
-<span class="sourceLineNo">763</span>  /**<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * Test for {@link HFileOutputFormat2#configureDataBlockEncoding(HTableDescriptor, Configuration)}<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * and {@link HFileOutputFormat2#createFamilyDataBlockEncodingMap(Configuration)}.<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   * Tests that the compression map is correctly serialized into<a name="line.766"></a>
-<span class="sourceLineNo">767</span>   * and deserialized from configuration<a name="line.767"></a>
-<span class="sourceLineNo">768</span>   *<a name="line.768"></a>
-<span class="sourceLineNo">769</span>   * @throws IOException<a name="line.769"></a>
-<span class="sourceLineNo">770</span>   */<a name="line.770"></a>
-<span class="sourceLineNo">771</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.771"></a>
-<span class="sourceLineNo">772</span>  public void testSerializeDeserializeFamilyDataBlockEncodingMap() throws IOException {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    for (int numCfs = 0; numCfs &lt;= 3; numCfs++) {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.774"></a>
-<span class="sourceLineNo">775</span>      Map&lt;String, DataBlockEncoding&gt; familyToDataBlockEncoding =<a name="line.775"></a>
-<span class="sourceLineNo">776</span>          getMockColumnFamiliesForDataBlockEncoding(numCfs);<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      Table table = Mockito.mock(HTable.class);<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      setupMockColumnFamiliesForDataBlockEncoding(table,<a name="line.778"></a>
-<span class="sourceLineNo">779</span>          familyToDataBlockEncoding);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>      HTableDescriptor tableDescriptor = table.getTableDescriptor();<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      HFileOutputFormat2.configureDataBlockEncoding(tableDescriptor, conf);<a name="line.781"></a>
-<span class="sourceLineNo">782</span><a name="line.782"></a>
-<span class="sourceLineNo">783</span>      // read back family specific data block encoding settings from the<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      // configuration<a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Map&lt;byte[], DataBlockEncoding&gt; retrievedFamilyToDataBlockEncodingMap =<a name="line.785"></a>
-<span class="sourceLineNo">786</span>          HFileOutputFormat2<a name="line.786"></a>
-<span class="sourceLineNo">787</span>          .createFamilyDataBlockEncodingMap(conf);<a name="line.787"></a>
-<span class="sourceLineNo">788</span><a name="line.788"></a>
-<span class="sourceLineNo">789</span>      // test that we have a value for all column families that matches with the<a name="line.789"></a>
-<span class="sourceLineNo">790</span>      // used mock values<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      for (Entry&lt;String, DataBlockEncoding&gt; entry : familyToDataBlockEncoding.entrySet()) {<a name="line.791"></a>
-<span class="sourceLineNo">792</span>        assertEquals("DataBlockEncoding configuration incorrect for column family:"<a name="line.792"></a>
-<span class="sourceLineNo">793</span>            + entry.getKey(), entry.getValue(),<a name="line.793"></a>
-<span class="sourceLineNo">794</span>            retrievedFamilyToDataBlockEncodingMap.get(entry.getKey().getBytes()));<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      }<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    }<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>  private void setupMockColumnFamiliesForDataBlockEncoding(Table table,<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      Map&lt;String, DataBlockEncoding&gt; familyToDataBlockEncoding) throws IOException {<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    HTableDescriptor mockTableDescriptor = new HTableDescriptor(TABLE_NAME);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    for (Entry&lt;String, DataBlockEncoding&gt; entry : familyToDataBlockEncoding.entrySet()) {<a name="line.802"></a>
-<span class="sourceLineNo">803</span>      mockTableDescriptor.addFamily(new HColumnDescriptor(entry.getKey())<a name="line.803"></a>
-<span class="sourceLineNo">804</span>          .setMaxVersions(1)<a name="line.804"></a>
-<span class="sourceLineNo">805</span>          .setDataBlockEncoding(entry.getValue())<a name="line.805"></a>
-<span class="sourceLineNo">806</span>          .setBlockCacheEnabled(false)<a name="line.806"></a>
-<span class="sourceLineNo">807</span>          .setTimeToLive(0));<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    }<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    Mockito.doReturn(mockTableDescriptor).when(table).getTableDescriptor();<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  }<a name="line.810"></a>
-<span class="sourceLineNo">811</span><a name="line.811"></a>
-<span class="sourceLineNo">812</span>  /**<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * @return a map from column family names to compression algorithms for<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   *         testing column family compression. Column family names have special characters<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   */<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  private Map&lt;String, DataBlockEncoding&gt;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      getMockColumnFamiliesForDataBlockEncoding (int numCfs) {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    Map&lt;String, DataBlockEncoding&gt; familyToDataBlockEncoding =<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        new HashMap&lt;String, DataBlockEncoding&gt;();<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    // use column family names having special characters<a name="line.820"></a>
-<span class="sourceLineNo">821</span>    if (numCfs-- &gt; 0) {<a name="line.821"></a>
-<span class="sourceLineNo">822</span>      familyToDataBlockEncoding.put("Family1!@#!@#&amp;", DataBlockEncoding.DIFF);<a name="line.822"></a>
-<span class="sourceLineNo">823</span>    }<a name="line.823"></a>
-<span class="sourceLineNo">824</span>    if (numCfs-- &gt; 0) {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      familyToDataBlockEncoding.put("Family2=asdads&amp;!AASD",<a name="line.825"></a>
-<span class="sourceLineNo">826</span>          DataBlockEncoding.FAST_DIFF);<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    }<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    if (numCfs-- &gt; 0) {<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      familyToDataBlockEncoding.put("Family2=asdads&amp;!AASD",<a name="line.829"></a>
-<span class="sourceLineNo">830</span>          DataBlockEncoding.PREFIX);<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    }<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    if (numCfs-- &gt; 0) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      familyToDataBlockEncoding.put("Family3", DataBlockEncoding.NONE);<a name="line.833"></a>
-<span class="sourceLineNo">834</span>    }<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    return familyToDataBlockEncoding;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>  }<a name="line.836"></a>
-<span class="sourceLineNo">837</span><a name="line.837"></a>
-<span class="sourceLineNo">838</span>  private void setupMockStartKeys(RegionLocator table) throws IOException {<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    byte[][] mockKeys = new byte[][] {<a name="line.839"></a>
-<span class="sourceLineNo">840</span>        HConstants.EMPTY_BYTE_ARRAY,<a name="line.840"></a>
-<span class="sourceLineNo">841</span>        Bytes.toBytes("aaa"),<a name="line.841"></a>
-<span class="sourceLineNo">842</span>        Bytes.toBytes("ggg"),<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        Bytes.toBytes("zzz")<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    };<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    Mockito.doReturn(mockKeys).when(table).getStartKeys();<a name="line.845"></a>
-<span class="sourceLineNo">846</span>  }<a name="line.846"></a>
-<span class="sourceLineNo">847</span><a name="line.847"></a>
-<span class="sourceLineNo">848</span>  private void setupMockTableName(RegionLocator table) throws IOException {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    TableName mockTableName = TableName.valueOf("mock_table");<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    Mockito.doReturn(mockTableName).when(table).getName();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>  }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>  /**<a name="line.853"></a>
-<span class="sourceLineNo">854</span>   * Test that {@link HFileOutputFormat2} RecordWriter uses compression and<a name="line.854"></a>
-<span class="sourceLineNo">855</span>   * bloom filter settings from the column family descriptor<a name="line.855"></a>
-<span class="sourceLineNo">856</span>   */<a name="line.856"></a>
-<span class="sourceLineNo">857</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  public void testColumnFamilySettings() throws Exception {<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    RecordWriter&lt;ImmutableBytesWritable, Cell&gt; writer = null;<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    TaskAttemptContext context = null;<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    Path dir = util.getDataTestDir("testColumnFamilySettings");<a name="line.862"></a>
-<span class="sourceLineNo">863</span><a name="line.863"></a>
-<span class="sourceLineNo">864</span>    // Setup table descriptor<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    Table table = Mockito.mock(Table.class);<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    RegionLocator regionLocator = Mockito.mock(RegionLocator.class);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>    HTableDescriptor htd = new HTableDescriptor(TABLE_NAME);<a name="line.867"></a>
-<span class="sourceLineNo">868</span>    Mockito.doReturn(htd).when(table).getTableDescriptor();<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    for (HColumnDescriptor hcd: HBaseTestingUtility.generateColumnDescriptors()) {<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      htd.addFamily(hcd);<a name="line.870"></a>
-<span class="sourceLineNo">871</span>    }<a name="line.871"></a>
-<span class="sourceLineNo">872</span><a name="line.872"></a>
-<span class="sourceLineNo">873</span>    // set up the table to return some mock keys<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    setupMockStartKeys(regionLocator);<a name="line.874"></a>
-<span class="sourceLineNo">875</span><a name="line.875"></a>
-<span class="sourceLineNo">876</span>    try {<a name="line.876"></a>
-<span class="sourceLineNo">877</span>      // partial map red setup to get an operational writer for testing<a name="line.877"></a>
-<span class="sourceLineNo">878</span>      // We turn off the sequence file compression, because DefaultCodec<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      // pollutes the GZip codec pool with an incompatible compressor.<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      conf.set("io.seqfile.compression.type", "NONE");<a name="line.880"></a>
-<span class="sourceLineNo">881</span>      conf.set("hbase.fs.tmp.dir", dir.toString());<a name="line.881"></a>
-<span class="sourceLineNo">882</span>      // turn locality off to eliminate getRegionLocation fail-and-retry time when writing kvs<a name="line.882"></a>
-<span class="sourceLineNo">883</span>      conf.setBoolean(HFileOutputFormat2.LOCALITY_SENSITIVE_CONF_KEY, false);<a name="line.883"></a>
-<span class="sourceLineNo">884</span><a name="line.884"></a>
-<span class="sourceLineNo">885</span>      Job job = new Job(conf, "testLocalMRIncrementalLoad");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      job.setWorkingDirectory(util.getDataTestDirOnTestFS("testColumnFamilySettings"));<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      setupRandomGeneratorMapper(job);<a name="line.887"></a>
-<span class="sourceLineNo">888</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      FileOutputFormat.setOutputPath(job, dir);<a name="line.889"></a>
-<span class="sourceLineNo">890</span>      context = createTestTaskAttemptContext(job);<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      HFileOutputFormat2 hof = new HFileOutputFormat2();<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      writer = hof.getRecordWriter(context);<a name="line.892"></a>
-<span class="sourceLineNo">893</span><a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // write out random rows<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      writeRandomKeyValues(writer, context, htd.getFamiliesKeys(), ROWSPERSPLIT);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      writer.close(context);<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // Make sure that a directory was created for every CF<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      FileSystem fs = dir.getFileSystem(conf);<a name="line.899"></a>
-<span class="sourceLineNo">900</span><a name="line.900"></a>
-<span class="sourceLineNo">901</span>      // commit so that the filesystem has one directory per column family<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      hof.getOutputCommitter(context).commitTask(context);<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      hof.getOutputCommitter(context).commitJob(context);<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      FileStatus[] families = FSUtils.listStatus(fs, dir, new FSUtils.FamilyDirFilter(fs));<a name="line.904"></a>
-<span class="sourceLineNo">905</span>      assertEquals(htd.getFamilies().size(), families.length);<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      for (FileStatus f : families) {<a name="line.906"></a>
-<span class="sourceLineNo">907</span>        String familyStr = f.getPath().getName();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>        HColumnDescriptor hcd = htd.getFamily(Bytes.toBytes(familyStr));<a name="line.908"></a>
-<span class="sourceLineNo">909</span>        // verify that the compression on this file matches the configured<a name="line.909"></a>
-<span class="sourceLineNo">910</span>        // compression<a name="line.910"></a>
-<span class="sourceLineNo">911</span>        Path dataFilePath = fs.listStatus(f.getPath())[0].getPath();<a name="line.911"></a>
-<span class="sourceLineNo">912</span>        Reader reader = HFile.createReader(fs, dataFilePath, new CacheConfig(conf), conf);<a name="line.912"></a>
-<span class="sourceLineNo">913</span>        Map&lt;byte[], byte[]&gt; fileInfo = reader.loadFileInfo();<a name="line.913"></a>
-<span class="sourceLineNo">914</span><a name="line.914"></a>
-<span class="sourceLineNo">915</span>        byte[] bloomFilter = fileInfo.get(StoreFile.BLOOM_FILTER_TYPE_KEY);<a name="line.915"></a>
-<span class="sourceLineNo">916</span>        if (bloomFilter == null) bloomFilter = Bytes.toBytes("NONE");<a name="line.916"></a>
-<span class="sourceLineNo">917</span>        assertEquals("Incorrect bloom filter used for column family " + familyStr +<a name="line.917"></a>
-<span class="sourceLineNo">918</span>          "(reader: " + reader + ")",<a name="line.918"></a>
-<span class="sourceLineNo">919</span>          hcd.getBloomFilterType(), BloomType.valueOf(Bytes.toString(bloomFilter)));<a name="line.919"></a>
-<span class="sourceLineNo">920</span>        assertEquals("Incorrect compression used for column family " + familyStr +<a name="line.920"></a>
-<span class="sourceLineNo">921</span>          "(reader: " + reader + ")", hcd.getCompressionType(), reader.getFileContext().getCompression());<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      }<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    } finally {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      dir.getFileSystem(conf).delete(dir, true);<a name="line.924"></a>
-<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
-<span class="sourceLineNo">926</span>  }<a name="line.926"></a>
-<span class="sourceLineNo">927</span><a name="line.927"></a>
-<span class="sourceLineNo">928</span>  /**<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   * Write random values to the writer assuming a table created using<a name="line.929"></a>
-<span class="sourceLineNo">930</span>   * {@link #FAMILIES} as column family descriptors<a name="line.930"></a>
-<span class="sourceLineNo">931</span>   */<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  private void writeRandomKeyValues(RecordWriter&lt;ImmutableBytesWritable, Cell&gt; writer,<a name="line.932"></a>
-<span class="sourceLineNo">933</s

<TRUNCATED>

[20/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html
index d37f9dd..7e2adeb 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html
@@ -100,7 +100,7 @@
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.70">TestReplicationSmallTests</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.66">TestReplicationSmallTests</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicationBase.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationBase</a></pre>
 </li>
 </ul>
@@ -283,7 +283,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.72">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.68">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -300,7 +300,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestReplicationSmallTests</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.70">TestReplicationSmallTests</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.66">TestReplicationSmallTests</a>()</pre>
 </li>
 </ul>
 </li>
@@ -317,7 +317,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.78">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.74">setUp</a>()
            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -329,7 +329,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteTypes</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.119">testDeleteTypes</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.115">testDeleteTypes</a>()
                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Verify that version and column delete marker types are replicated
  correctly.</div>
@@ -343,7 +343,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockList">
 <li class="blockList">
 <h4>testSimplePutDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.206">testSimplePutDelete</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.202">testSimplePutDelete</a>()
                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Add a row, check it's replicated, delete it, check's gone</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -356,7 +356,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockList">
 <li class="blockList">
 <h4>testSmallBatch</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.252">testSmallBatch</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.248">testSmallBatch</a>()
                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Try a small batch upload using the write buffer, check it's replicated</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -369,7 +369,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockList">
 <li class="blockList">
 <h4>testDisableEnable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.294">testDisableEnable</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.290">testDisableEnable</a>()
                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test disable/enable replication, trying to insert, make sure nothing's
  replicated, enable it, the insert should be replicated</div>
@@ -383,7 +383,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockList">
 <li class="blockList">
 <h4>testAddAndRemoveClusters</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.338">testAddAndRemoveClusters</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.334">testAddAndRemoveClusters</a>()
                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Integration test for TestReplicationAdmin, removes and re-add a peer
  cluster</div>
@@ -397,7 +397,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockList">
 <li class="blockList">
 <h4>testLoading</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.392">testLoading</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.388">testLoading</a>()
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Do a more intense version testSmallBatch, one  that will trigger
  wal rolling and other non-trivial code paths</div>
@@ -411,7 +411,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockList">
 <li class="blockList">
 <h4>testVerifyRepJob</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.454">testVerifyRepJob</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.450">testVerifyRepJob</a>()
                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Do a small loading into a table, make sure the data is really the same,
  then run the VerifyReplication job to check the results. Do a second
@@ -426,7 +426,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockList">
 <li class="blockList">
 <h4>testHBase14905</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.499">testHBase14905</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.495">testHBase14905</a>()
                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -438,7 +438,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockList">
 <li class="blockList">
 <h4>testVersionMismatchHBase14905</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.572">testVersionMismatchHBase14905</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.568">testVersionMismatchHBase14905</a>()
                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -450,7 +450,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockList">
 <li class="blockList">
 <h4>testCompactionWALEdits</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.655">testCompactionWALEdits</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.651">testCompactionWALEdits</a>()
                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test for HBASE-9038, Replication.scopeWALEdits would NPE if it wasn't filtering out
  the compaction WALEdit</div>
@@ -464,7 +464,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockList">
 <li class="blockList">
 <h4>testVerifyListReplicatedTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.673">testVerifyListReplicatedTable</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.669">testVerifyListReplicatedTable</a>()
                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test for HBASE-8663
  Create two new Tables with colfamilies enabled for replication then run
@@ -480,7 +480,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/replication/TestReplicat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testReplicationStatus</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.728">testReplicationStatus</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.html#line.724">testReplicationStatus</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test for HBASE-9531
  put a few rows into htable1, which should be replicated to htable2

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html b/testdevapidocs/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html
index a53d97d..9f6118d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html
@@ -784,7 +784,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testMissingFirstRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1008">testMissingFirstRegion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1013">testMissingFirstRegion</a>()
                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This creates and fixes a bad table with a missing region which is the 1st region -- hole in
  meta and data missing in the fs.</div>
@@ -798,7 +798,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testRegionDeployedNotInHdfs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1036">testRegionDeployedNotInHdfs</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1041">testRegionDeployedNotInHdfs</a>()
                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This creates and fixes a bad table with a missing region which is the 1st region -- hole in
  meta and data missing in the fs.</div>
@@ -812,7 +812,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testMissingLastRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1064">testMissingLastRegion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1069">testMissingLastRegion</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This creates and fixes a bad table with missing last region -- hole in meta and data missing in
  the fs.</div>
@@ -826,7 +826,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testFixAssignmentsAndNoHdfsChecking</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1092">testFixAssignmentsAndNoHdfsChecking</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1097">testFixAssignmentsAndNoHdfsChecking</a>()
                                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test -noHdfsChecking option can detect and fix assignments issue.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -839,7 +839,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testFixMetaNotWorkingWithNoHdfsChecking</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1145">testFixMetaNotWorkingWithNoHdfsChecking</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1150">testFixMetaNotWorkingWithNoHdfsChecking</a>()
                                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test -noHdfsChecking option can detect region is not in meta but deployed.
  However, it can not fix it without checking Hdfs because we need to get
@@ -854,7 +854,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testFixHdfsHolesNotWorkingWithNoHdfsChecking</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1201">testFixHdfsHolesNotWorkingWithNoHdfsChecking</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1206">testFixHdfsHolesNotWorkingWithNoHdfsChecking</a>()
                                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test -fixHdfsHoles doesn't work with -noHdfsChecking option,
  and -noHdfsChecking can't detect orphan Hdfs region.</div>
@@ -868,7 +868,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testQuarantineCorruptHFile</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1262">testQuarantineCorruptHFile</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1267">testQuarantineCorruptHFile</a>()
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This creates a table and then corrupts an hfile.  Hbck should quarantine the file.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -881,7 +881,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testQuarantineMissingHFile</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1303">testQuarantineMissingHFile</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1308">testQuarantineMissingHFile</a>()
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This creates a table and simulates the race situation where a concurrent compaction or split
  has removed an hfile after the corruption checker learned about it.</div>
@@ -895,7 +895,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testDegenerateRegions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1332">testDegenerateRegions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1337">testDegenerateRegions</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This creates and fixes a bad table with regions that has startkey == endkey</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -908,7 +908,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testMissingRegionInfoQualifier</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1371">testMissingRegionInfoQualifier</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1376">testMissingRegionInfoQualifier</a>()
                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test mission REGIONINFO_QUALIFIER in hbase:meta</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -921,7 +921,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testErrorReporter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1423">testErrorReporter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1428">testErrorReporter</a>()
                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test pluggable error reporter. It can be plugged in
  from system property or configuration.</div>
@@ -935,7 +935,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckTableLocks</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1440">testCheckTableLocks</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1445">testCheckTableLocks</a>()
                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -947,7 +947,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testCheckReplication</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1515">testCheckReplication</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1520">testCheckReplication</a>()
                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -959,7 +959,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testHDFSRegioninfoMissing</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1570">testHDFSRegioninfoMissing</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1575">testHDFSRegioninfoMissing</a>()
                                throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This creates and fixes a bad table with a missing region -- hole in meta
  and data present but .regioninfo missing (an orphan hdfs region)in the fs.</div>
@@ -973,7 +973,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testNotInMetaOrDeployedHole</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1607">testNotInMetaOrDeployedHole</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1612">testNotInMetaOrDeployedHole</a>()
                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This creates and fixes a bad table with a region that is missing meta and
  not assigned to a region server.</div>
@@ -987,7 +987,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testCleanUpDaughtersNotInMetaAfterFailedSplit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1643">testCleanUpDaughtersNotInMetaAfterFailedSplit</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1648">testCleanUpDaughtersNotInMetaAfterFailedSplit</a>()
                                                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -999,7 +999,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testNotInMetaHole</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1707">testNotInMetaHole</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1712">testNotInMetaHole</a>()
                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This creates fixes a bad table with a hole in meta.</div>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -1012,7 +1012,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testNotInHdfs</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1747">testNotInHdfs</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1752">testNotInHdfs</a>()
                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This creates and fixes a bad table with a region that is in meta but has
  no deployment or data hdfs</div>
@@ -1026,7 +1026,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockList">
 <li class="blockList">
 <h4>testQuarantineMissingFamdir</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1786">testQuarantineMissingFamdir</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1791">testQuarantineMissingFamdir</a>()
                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This creates a table and simulates the race situation where a concurrent compaction or split
  has removed an colfam dir before the corruption checker got to it.</div>
@@ -1040,7 +1040,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/BaseTestHBaseFsck.h
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testQuarantineMissingRegionDir</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1815">testQuarantineMissingRegionDir</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/util/TestHBaseFsckOneRS.html#line.1820">testQuarantineMissingRegionDir</a>()
                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This creates a table and simulates the race situation where a concurrent compaction or split
  has removed a region dir before the corruption checker got to it.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/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 8dd84e9..ba18d57 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -120,8 +120,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">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="strong">FaultyFSLog.FailureType</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="strong">IOTestProvider.AllowedOperations</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 83b1e41..474df8a 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -1026,6 +1026,7 @@
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HTestConst.html" title="class in org.apache.hadoop.hbase"><span class="strong">HTestConst</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase"><span class="strong">IncrementPerformanceTest</span></a> (implements org.apache.hadoop.util.Tool)</li>
 <li type="circle">org.apache.hadoop.mapreduce.InputFormat&lt;K,V&gt;
 <ul>
 <li type="circle">org.apache.hadoop.mapreduce.lib.input.FileInputFormat&lt;K,V&gt;
@@ -2158,6 +2159,11 @@
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestInclusiveStopFilter.html" title="class in org.apache.hadoop.hbase.filter"><span class="strong">TestInclusiveStopFilter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestIncrement</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestIncrementingEnvironmentEdge.html" title="class in org.apache.hadoop.hbase.util"><span class="strong">TestIncrementingEnvironmentEdge</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestIncrementsFromClientSide</span></a>
+<ul>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestIncrementFromClientSideWithCoprocessor</span></a></li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestInfoServers.html" title="class in org.apache.hadoop.hbase"><span class="strong">TestInfoServers</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestInterfaceAudienceAnnotations.html" title="class in org.apache.hadoop.hbase"><span class="strong">TestInterfaceAudienceAnnotations</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestInterfaceAudienceAnnotations.CloverInstrumentationFilter.html" title="class in org.apache.hadoop.hbase"><span class="strong">TestInterfaceAudienceAnnotations.CloverInstrumentationFilter</span></a> (implements org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ClassFinder.ClassFilter.html" title="interface in org.apache.hadoop.hbase">ClassFinder.ClassFilter</a>)</li>
@@ -2387,6 +2393,7 @@
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestRegexComparator.html" title="class in org.apache.hadoop.hbase.filter"><span class="strong">TestRegexComparator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestRegexComparator.TestCase.html" title="class in org.apache.hadoop.hbase.filter"><span class="strong">TestRegexComparator.TestCase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionFavoredNodes</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionIncrement</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestRegionLocationFinder.html" title="class in org.apache.hadoop.hbase.master.balancer"><span class="strong">TestRegionLocationFinder</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestRegionLocations.html" title="class in org.apache.hadoop.hbase"><span class="strong">TestRegionLocations</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionMergeTransaction</span></a></li>
@@ -2833,6 +2840,8 @@
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html" title="class in org.apache.hadoop.hbase"><span class="strong">TestMetaTableAccessor.MetaTask</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestMetaTableLocator.WaitOnMetaThread.html" title="class in org.apache.hadoop.hbase"><span class="strong">TestMetaTableLocator.WaitOnMetaThread</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestParallelPut.Putter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionIncrement.CrossRowCellIncrementer</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionIncrement.SingleCellIncrementer</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.DummyNodeFailoverWorker.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="strong">TestReplicationSourceManager.DummyNodeFailoverWorker</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TestStealJobQueue.TestTask.html" title="class in org.apache.hadoop.hbase.util"><span class="strong">TestStealJobQueue.TestTask</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)</li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestZKLeaderManager.MockLeader.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="strong">TestZKLeaderManager.MockLeader</span></a> (implements org.apache.hadoop.hbase.Stoppable)</li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html
new file mode 100644
index 0000000..3c069f2
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html
@@ -0,0 +1,200 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.io.IOException;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.HashSet;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Set;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.concurrent.ExecutorService;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.concurrent.Executors;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.concurrent.Future;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.client.ConnectionFactory;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Table;<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.util.Tool;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.util.ToolRunner;<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>import com.codahale.metrics.MetricRegistry;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import com.codahale.metrics.Snapshot;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import com.codahale.metrics.Timer;<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> * Simple Increments Performance Test. Run this from main. It is to go against a cluster.<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * Presumption is the table exists already. Defaults are a zk ensemble of localhost:2181,<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * a tableName of 'tableName', a column famly name of 'columnFamilyName', with 80 threads by<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * default and 10000 increments per thread. To change any of these configs, pass -DNAME=VALUE as<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * in -DtableName="newTableName". It prints out configuration it is running with at the start and<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * on the end it prints out percentiles.<a name="line.49"></a>
+<span class="sourceLineNo">050</span> */<a name="line.50"></a>
+<span class="sourceLineNo">051</span>public class IncrementPerformanceTest implements Tool {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static final Log LOG = LogFactory.getLog(IncrementPerformanceTest.class);<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private static final byte [] QUALIFIER = new byte [] {'q'};<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private Configuration conf;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private final MetricRegistry metrics = new MetricRegistry();<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  private static final String TABLENAME = "tableName";<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private static final String COLUMN_FAMILY = "columnFamilyName";<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private static final String THREAD_COUNT = "threadCount";<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static final int DEFAULT_THREAD_COUNT = 80;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static final String INCREMENT_COUNT = "incrementCount";<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final int DEFAULT_INCREMENT_COUNT = 10000;<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>  IncrementPerformanceTest() {}<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  public int run(final String [] args) throws Exception {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    Configuration conf = getConf();<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    final TableName tableName = TableName.valueOf(conf.get(TABLENAME), TABLENAME);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    final byte [] columnFamilyName = Bytes.toBytes(conf.get(COLUMN_FAMILY, COLUMN_FAMILY));<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    int threadCount = conf.getInt(THREAD_COUNT, DEFAULT_THREAD_COUNT);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    final int incrementCount = conf.getInt(INCREMENT_COUNT, DEFAULT_INCREMENT_COUNT);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    LOG.info("Running test with " + HConstants.ZOOKEEPER_QUORUM + "=" +<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      getConf().get(HConstants.ZOOKEEPER_QUORUM) + ", tableName=" + tableName +<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      ", columnFamilyName=" + columnFamilyName + ", threadCount=" + threadCount +<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      ", incrementCount=" + incrementCount);<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>    ExecutorService service = Executors.newFixedThreadPool(threadCount);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    Set&lt;Future&lt;?&gt;&gt; futures = new HashSet&lt;Future&lt;?&gt;&gt;();<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    final AtomicInteger integer = new AtomicInteger(0); // needed a simple "final" counter<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    while (integer.incrementAndGet() &lt;= threadCount) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      futures.add(service.submit(new Runnable() {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>        @Override<a name="line.81"></a>
+<span class="sourceLineNo">082</span>        public void run() {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>          try {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>            try (Connection connection = ConnectionFactory.createConnection(getConf())) {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>              try (Table table = connection.getTable(tableName)) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>                Timer timer = metrics.timer("increments");<a name="line.86"></a>
+<span class="sourceLineNo">087</span>                for (int i = 0; i &lt; incrementCount; i++) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>                  byte[] row = Bytes.toBytes(i);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>                  Timer.Context context = timer.time();<a name="line.89"></a>
+<span class="sourceLineNo">090</span>                  try {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>                    table.incrementColumnValue(row, columnFamilyName, QUALIFIER, 1l);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>                  } catch (IOException e) {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>                    // swallow..it's a test.<a name="line.93"></a>
+<span class="sourceLineNo">094</span>                  } finally {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>                    context.stop();<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>              }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>            }<a name="line.99"></a>
+<span class="sourceLineNo">100</span>          } catch (IOException ioe) {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>            throw new RuntimeException(ioe);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          }<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        }<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      }));<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>    for(Future&lt;?&gt; future : futures) future.get();<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    service.shutdown();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    Snapshot s = metrics.timer("increments").getSnapshot();<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    LOG.info(String.format("75th=%s, 95th=%s, 99th=%s", s.get75thPercentile(),<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        s.get95thPercentile(), s.get99thPercentile()));<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    return 0;<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @Override<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public Configuration getConf() {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    return this.conf;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  @Override<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public void setConf(Configuration conf) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    this.conf = conf;<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>  public static void main(String[] args) throws Exception {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    System.exit(ToolRunner.run(HBaseConfiguration.create(), new IncrementPerformanceTest(), args));<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[47/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/HConstants.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/HConstants.html b/devapidocs/org/apache/hadoop/hbase/HConstants.html
index 8786570..57e8154 100644
--- a/devapidocs/org/apache/hadoop/hbase/HConstants.html
+++ b/devapidocs/org/apache/hadoop/hbase/HConstants.html
@@ -599,252 +599,256 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_STATUS_MULTICAST_PORT">DEFAULT_STATUS_MULTICAST_PORT</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_TEMPORARY_HDFS_DIRECTORY">DEFAULT_TEMPORARY_HDFS_DIRECTORY</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_THREAD_WAKE_FREQUENCY">DEFAULT_THREAD_WAKE_FREQUENCY</a></strong></code>
 <div class="block">Default value for thread wake frequency</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_USE_META_REPLICAS">DEFAULT_USE_META_REPLICAS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_VERSION_FILE_WRITE_ATTEMPTS">DEFAULT_VERSION_FILE_WRITE_ATTEMPTS</a></strong></code>
 <div class="block">Parameter name for how often we should try to write a version file, before failing</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_WAL_STORAGE_POLICY">DEFAULT_WAL_STORAGE_POLICY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZK_SESSION_TIMEOUT">DEFAULT_ZK_SESSION_TIMEOUT</a></strong></code>
 <div class="block">Default value for ZooKeeper session timeout</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_CLIENT_PORT">DEFAULT_ZOOKEPER_CLIENT_PORT</a></strong></code>
 <div class="block">Default client port that the zookeeper listens on</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS</a></strong></code>
 <div class="block">Default limit on concurrent client-side zookeeper connections</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_RECOVERABLE_WAITIME">DEFAULT_ZOOKEPER_RECOVERABLE_WAITIME</a></strong></code>
 <div class="block">Default wait time for the recoverable zookeeper</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DELIMITER">DELIMITER</a></strong></code>
 <div class="block">delimiter used between portions of a region name</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DISALLOW_WRITES_IN_RECOVERING">DISALLOW_WRITES_IN_RECOVERING</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DISTRIBUTED_LOG_REPLAY_KEY">DISTRIBUTED_LOG_REPLAY_KEY</a></strong></code>
 <div class="block">Conf key that enables unflushed WAL edits directly being replayed to region servers</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#EMPTY_BYTE_ARRAY">EMPTY_BYTE_ARRAY</a></strong></code>
 <div class="block">An empty instance.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#EMPTY_BYTE_BUFFER">EMPTY_BYTE_BUFFER</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#EMPTY_END_ROW">EMPTY_END_ROW</a></strong></code>
 <div class="block">Last row in a table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#EMPTY_START_ROW">EMPTY_START_ROW</a></strong></code>
 <div class="block">Used by scanners, etc when they want to start at the beginning of a region</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#ENABLE_CLIENT_BACKPRESSURE">ENABLE_CLIENT_BACKPRESSURE</a></strong></code>
 <div class="block">Config key for if the server should send backpressure and if the client should listen to
  that backpressure from the server</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#ENABLE_DATA_FILE_UMASK">ENABLE_DATA_FILE_UMASK</a></strong></code>
 <div class="block">Enable file permission modification from standard hbase</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#ENABLE_WAL_COMPRESSION">ENABLE_WAL_COMPRESSION</a></strong></code>
 <div class="block">Configuration name of WAL Compression</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#ENABLE_WAL_ENCRYPTION">ENABLE_WAL_ENCRYPTION</a></strong></code>
 <div class="block">Configuration key for enabling WAL encryption, a boolean</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#ENSEMBLE_TABLE_NAME">ENSEMBLE_TABLE_NAME</a></strong></code>
 <div class="block">The name of the ensemble table</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#FILE_SYSTEM_VERSION">FILE_SYSTEM_VERSION</a></strong></code>
 <div class="block">Current version of file system.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#FOREVER">FOREVER</a></strong></code>
 <div class="block">Unlimited time-to-live.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CANARY_WRITE_DATA_TTL_KEY">HBASE_CANARY_WRITE_DATA_TTL_KEY</a></strong></code>
 <div class="block">Canary config keys</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CANARY_WRITE_PERSERVER_REGIONS_LOWERLIMIT_KEY">HBASE_CANARY_WRITE_PERSERVER_REGIONS_LOWERLIMIT_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CANARY_WRITE_PERSERVER_REGIONS_UPPERLIMIT_KEY">HBASE_CANARY_WRITE_PERSERVER_REGIONS_UPPERLIMIT_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CANARY_WRITE_TABLE_CHECK_PERIOD_KEY">HBASE_CANARY_WRITE_TABLE_CHECK_PERIOD_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CANARY_WRITE_VALUE_SIZE_KEY">HBASE_CANARY_WRITE_VALUE_SIZE_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CHECKSUM_VERIFICATION">HBASE_CHECKSUM_VERIFICATION</a></strong></code>
 <div class="block">If this parameter is set to true, then hbase will read
  data and then verify checksums.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_ENABLE_FAST_FAIL_MODE_DEFAULT">HBASE_CLIENT_ENABLE_FAST_FAIL_MODE_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_FAST_FAIL_CLEANUP_DURATION_MS_DEFAULT">HBASE_CLIENT_FAST_FAIL_CLEANUP_DURATION_MS_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_FAST_FAIL_CLEANUP_MS_DURATION_MS">HBASE_CLIENT_FAST_FAIL_CLEANUP_MS_DURATION_MS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_FAST_FAIL_INTERCEPTOR_IMPL">HBASE_CLIENT_FAST_FAIL_INTERCEPTOR_IMPL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_FAST_FAIL_MODE_ENABLED">HBASE_CLIENT_FAST_FAIL_MODE_ENABLED</a></strong></code>
 <div class="block">Config for enabling/disabling the fast fail mode.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_FAST_FAIL_THREASHOLD_MS">HBASE_CLIENT_FAST_FAIL_THREASHOLD_MS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_FAST_FAIL_THREASHOLD_MS_DEFAULT">HBASE_CLIENT_FAST_FAIL_THREASHOLD_MS_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_INSTANCE_ID">HBASE_CLIENT_INSTANCE_ID</a></strong></code>
 <div class="block">Parameter name for unique identifier for this <code>Configuration</code>
  instance.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_IPC_POOL_SIZE">HBASE_CLIENT_IPC_POOL_SIZE</a></strong></code>
 <div class="block">Parameter name for HBase client IPC pool size</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_IPC_POOL_TYPE">HBASE_CLIENT_IPC_POOL_TYPE</a></strong></code>
 <div class="block">Parameter name for HBase client IPC pool type</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_MAX_PERREGION_TASKS">HBASE_CLIENT_MAX_PERREGION_TASKS</a></strong></code>
 <div class="block">The maximum number of concurrent connections the client will maintain to a single
  Region.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_MAX_PERSERVER_TASKS">HBASE_CLIENT_MAX_PERSERVER_TASKS</a></strong></code>
 <div class="block">The maximum number of concurrent connections the client will maintain to a single
  RegionServer.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_MAX_TOTAL_TASKS">HBASE_CLIENT_MAX_TOTAL_TASKS</a></strong></code>
 <div class="block">The maximum number of concurrent connections the client will maintain.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_META_OPERATION_TIMEOUT">HBASE_CLIENT_META_OPERATION_TIMEOUT</a></strong></code>
 <div class="block">Parameter name for HBase client operation timeout, which overrides RPC timeout</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_OPERATION_TIMEOUT">HBASE_CLIENT_OPERATION_TIMEOUT</a></strong></code>
 <div class="block">Parameter name for HBase client operation timeout, which overrides RPC timeout</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_PAUSE">HBASE_CLIENT_PAUSE</a></strong></code>
 <div class="block">Parameter name for client pause value, used mostly as value to wait
  before running a retry of a failed get, region lookup, etc.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_RETRIES_NUMBER">HBASE_CLIENT_RETRIES_NUMBER</a></strong></code>
 <div class="block">Parameter name for maximum retries, used as maximum for all retryable
@@ -852,98 +856,98 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
  getting a cell's value, starting a row update, etc.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_SCANNER_CACHING">HBASE_CLIENT_SCANNER_CACHING</a></strong></code>
 <div class="block">Parameter name to set the default scanner caching for all clients.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY">HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY</a></strong></code>
 <div class="block">Parameter name for maximum number of bytes returned when calling a scanner's next method.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD">HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD</a></strong></code>
 <div class="block">The client scanner timeout period in milliseconds.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static float</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLUSTER_MINIMUM_MEMORY_THRESHOLD">HBASE_CLUSTER_MINIMUM_MEMORY_THRESHOLD</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_COORDINATED_STATE_MANAGER_CLASS">HBASE_COORDINATED_STATE_MANAGER_CLASS</a></strong></code>
 <div class="block">Config for pluggable consensus provider</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_DIR">HBASE_DIR</a></strong></code>
 <div class="block">Parameter name for HBase instance root directory</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_MASTER_LOADBALANCE_BYTABLE">HBASE_MASTER_LOADBALANCE_BYTABLE</a></strong></code>
 <div class="block">Config for balancing the cluster by table</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_MASTER_LOADBALANCER_CLASS">HBASE_MASTER_LOADBALANCER_CLASS</a></strong></code>
 <div class="block">Config for pluggable load balancers</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_MASTER_LOGCLEANER_PLUGINS">HBASE_MASTER_LOGCLEANER_PLUGINS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_MASTER_NORMALIZER_CLASS">HBASE_MASTER_NORMALIZER_CLASS</a></strong></code>
 <div class="block">Config for pluggable region normalizer</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_META_BLOCK_SIZE">HBASE_META_BLOCK_SIZE</a></strong></code>
 <div class="block">Parameter name for number of versions, kept by meta table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_META_SCANNER_CACHING">HBASE_META_SCANNER_CACHING</a></strong></code>
 <div class="block">Parameter name for number of rows that will be fetched when calling next on
  a scanner if it is not served from memory.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_META_VERSIONS">HBASE_META_VERSIONS</a></strong></code>
 <div class="block">Parameter name for number of versions, kept by meta table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_NON_TABLE_DIRS">HBASE_NON_TABLE_DIRS</a></strong></code>
 <div class="block">Directories that are not HBase table directories</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_NON_USER_TABLE_DIRS">HBASE_NON_USER_TABLE_DIRS</a></strong></code>
 <div class="block">Directories that are not HBase user table directories</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_REGION_SPLIT_POLICY_KEY">HBASE_REGION_SPLIT_POLICY_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_REGIONSERVER_LEASE_PERIOD_KEY">HBASE_REGIONSERVER_LEASE_PERIOD_KEY</a></strong></code>
 <div class="block"><strong>Deprecated.</strong>&nbsp;
@@ -951,320 +955,320 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY">HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY</a></strong></code>
 <div class="block">timeout for short operation RPC</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_RPC_TIMEOUT_KEY">HBASE_RPC_TIMEOUT_KEY</a></strong></code>
 <div class="block">timeout for each RPC</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_RS_NONCES_ENABLED">HBASE_RS_NONCES_ENABLED</a></strong></code>
 <div class="block">Whether nonces are enabled; default is true.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_SERVER_PAUSE">HBASE_SERVER_PAUSE</a></strong></code>
 <div class="block">Parameter name for server pause value, used mostly as value to wait before
  running a retry of a failed operation.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_SERVER_SCANNER_MAX_RESULT_SIZE_KEY">HBASE_SERVER_SCANNER_MAX_RESULT_SIZE_KEY</a></strong></code>
 <div class="block">Parameter name for maximum number of bytes returned when calling a scanner's next method.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_SPLITLOG_MANAGER_TIMEOUT">HBASE_SPLITLOG_MANAGER_TIMEOUT</a></strong></code>
 <div class="block">Configuration key for SplitLog manager timeout</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_TEMP_DIRECTORY">HBASE_TEMP_DIRECTORY</a></strong></code>
 <div class="block">Temporary directory used for table creation and deletion</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASECLIENT_IMPL">HBASECLIENT_IMPL</a></strong></code>
 <div class="block">Parameter name for what hbase client implementation to use.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBCK_CODE_NAME">HBCK_CODE_NAME</a></strong></code>
 <div class="block">HBCK special code name used as server name when manipulating ZK nodes</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBCK_SIDELINEDIR_NAME">HBCK_SIDELINEDIR_NAME</a></strong></code>
 <div class="block">Used by HBCK to sideline backup data</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HEALTH_CHORE_WAKE_FREQ">HEALTH_CHORE_WAKE_FREQ</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HEALTH_FAILURE_THRESHOLD">HEALTH_FAILURE_THRESHOLD</a></strong></code>
 <div class="block">The maximum number of health check failures a server can encounter consecutively.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HEALTH_SCRIPT_LOC">HEALTH_SCRIPT_LOC</a></strong></code>
 <div class="block">Health script related settings.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HEALTH_SCRIPT_TIMEOUT">HEALTH_SCRIPT_TIMEOUT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HEAP_OCCUPANCY_HIGH_WATERMARK_KEY">HEAP_OCCUPANCY_HIGH_WATERMARK_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HEAP_OCCUPANCY_LOW_WATERMARK_KEY">HEAP_OCCUPANCY_LOW_WATERMARK_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HFILE_ARCHIVE_DIRECTORY">HFILE_ARCHIVE_DIRECTORY</a></strong></code>
 <div class="block">Directory under /hbase where archived hfiles are stored</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static float</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HFILE_BLOCK_CACHE_SIZE_DEFAULT">HFILE_BLOCK_CACHE_SIZE_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HFILE_BLOCK_CACHE_SIZE_KEY">HFILE_BLOCK_CACHE_SIZE_KEY</a></strong></code>
 <div class="block">Configuration key for the size of the block cache</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HFILEBLOCK_DUMMY_HEADER">HFILEBLOCK_DUMMY_HEADER</a></strong></code>
 <div class="block">Just an array of bytes of the right size.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HFILEBLOCK_HEADER_SIZE">HFILEBLOCK_HEADER_SIZE</a></strong></code>
 <div class="block">The size of a version 2 HFile block header, minor version 1.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM">HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM</a></strong></code>
 <div class="block">The size data structures with minor version is 0</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HIGH_QOS">HIGH_QOS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HOUR_IN_SECONDS">HOUR_IN_SECONDS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_COMPACTIONDIR_NAME">HREGION_COMPACTIONDIR_NAME</a></strong></code>
 <div class="block">Used to construct the name of the compaction directory during compaction</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_EDITS_REPLAY_SKIP_ERRORS">HREGION_EDITS_REPLAY_SKIP_ERRORS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_LOGDIR_NAME">HREGION_LOGDIR_NAME</a></strong></code>
 <div class="block">Used to construct the name of the log directory for a region server</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_MAX_FILESIZE">HREGION_MAX_FILESIZE</a></strong></code>
 <div class="block">Conf key for the max file size after which we split the region</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_MEMSTORE_BLOCK_MULTIPLIER">HREGION_MEMSTORE_BLOCK_MULTIPLIER</a></strong></code>
 <div class="block">Block updates if memstore has hbase.hregion.memstore.block.multiplier
  times hbase.hregion.memstore.flush.size bytes.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_MEMSTORE_FLUSH_SIZE">HREGION_MEMSTORE_FLUSH_SIZE</a></strong></code>
 <div class="block">Conf key for the memstore size at which we flush the memstore</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_OLDLOGDIR_NAME">HREGION_OLDLOGDIR_NAME</a></strong></code>
 <div class="block">Like the previous, but for old logs that are about to be deleted</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HSTORE_OPEN_AND_CLOSE_THREADS_MAX">HSTORE_OPEN_AND_CLOSE_THREADS_MAX</a></strong></code>
 <div class="block">The max number of threads used for opening and closing stores or store
  files in parallel</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#IN_MEMORY">IN_MEMORY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#INDEX_KEY_MAGIC">INDEX_KEY_MAGIC</a></strong></code>
 <div class="block">Used as a magic return value while optimized index key feature enabled(HBASE-7845)</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#KEEP_SEQID_PERIOD">KEEP_SEQID_PERIOD</a></strong></code>
 <div class="block">Parameter name for # days to keep MVCC values during a major compaction</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#KEY_FOR_HOSTNAME_SEEN_BY_MASTER">KEY_FOR_HOSTNAME_SEEN_BY_MASTER</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LAST_ROW">LAST_ROW</a></strong></code>
 <div class="block">Used by scanners and others when they're trying to detect the end of a
  table</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LATEST_TIMESTAMP">LATEST_TIMESTAMP</a></strong></code>
 <div class="block">Timestamp to use when we want to refer to the latest cell.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LATEST_TIMESTAMP_BYTES">LATEST_TIMESTAMP_BYTES</a></strong></code>
 <div class="block">LATEST_TIMESTAMP in bytes form</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LIB_DIR">LIB_DIR</a></strong></code>
 <div class="block">The directory from which co-processor/custom filter jars can be loaded
  dynamically by the region servers.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LOAD_BALANCER_SLOP_KEY">LOAD_BALANCER_SLOP_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LOCALHOST">LOCALHOST</a></strong></code>
 <div class="block">Host name of the local machine</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LOCALHOST_IP">LOCALHOST_IP</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LOG_REPLAY_WAIT_REGION_TIMEOUT">LOG_REPLAY_WAIT_REGION_TIMEOUT</a></strong></code>
 <div class="block">Conf key that specifies timeout value to wait for a region ready</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MAJOR_COMPACTION_PERIOD">MAJOR_COMPACTION_PERIOD</a></strong></code>
 <div class="block">Parameter name for how often a region should should perform a major compaction</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MASTER_HANDLER_COUNT">MASTER_HANDLER_COUNT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MASTER_IMPL">MASTER_IMPL</a></strong></code>
 <div class="block">Parameter name for what master implementation to use.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MASTER_INFO_PORT">MASTER_INFO_PORT</a></strong></code>
 <div class="block">Configuration key for master web API port</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MASTER_PORT">MASTER_PORT</a></strong></code>
 <div class="block">Parameter name for port master listens on.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MASTER_TYPE_BACKUP">MASTER_TYPE_BACKUP</a></strong></code>
 <div class="block">Parameter name for the master type being backup (waits for primary to go inactive).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MAX_ROW_LENGTH">MAX_ROW_LENGTH</a></strong></code>
 <div class="block">Max length a row can have because of the limitation in TFile.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MAXIMUM_VALUE_LENGTH">MAXIMUM_VALUE_LENGTH</a></strong></code>
 <div class="block">Maximum value length, enforced on KeyValue construction</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MERGEA_QUALIFIER">MERGEA_QUALIFIER</a></strong></code>
 <div class="block">The lower-half merge region column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MERGEB_QUALIFIER">MERGEB_QUALIFIER</a></strong></code>
 <div class="block">The upper-half merge region column qualifier</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#META_REPLICAS_NUM">META_REPLICAS_NUM</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#META_ROW_DELIMITER">META_ROW_DELIMITER</a></strong></code>
 <div class="block">delimiter used between portions of a region name</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#META_TABLE_NAME">META_TABLE_NAME</a></strong></code>
 <div class="block"><strong>Deprecated.</strong>&nbsp;
@@ -1272,404 +1276,410 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static short</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#META_VERSION">META_VERSION</a></strong></code>
 <div class="block">The current version of the meta table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#META_VERSION_QUALIFIER">META_VERSION_QUALIFIER</a></strong></code>
 <div class="block">The meta table version column qualifier.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#METADATA">METADATA</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#METRICS_RIT_STUCK_WARNING_THRESHOLD">METRICS_RIT_STUCK_WARNING_THRESHOLD</a></strong></code>
 <div class="block">Region in Transition metrics threshold time</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MIGRATION_NAME">MIGRATION_NAME</a></strong></code>
 <div class="block">Any artifacts left from migration can be moved here</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MIN_KEEP_SEQID_PERIOD">MIN_KEEP_SEQID_PERIOD</a></strong></code>
 <div class="block">At least to keep MVCC values in hfiles for 5 days</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MINUTE_IN_SECONDS">MINUTE_IN_SECONDS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#NAME">NAME</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#NINES">NINES</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#NO_NONCE">NO_NONCE</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#NO_SEQNUM">NO_SEQNUM</a></strong></code>
 <div class="block">Value indicating the server name was saved with no sequence number.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#NORMAL_QOS">NORMAL_QOS</a></strong></code>
 <div class="block">QOS attributes: these attributes are used to demarcate RPC call processing
  by different set of handlers.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#OLD_SNAPSHOT_DIR_NAME">OLD_SNAPSHOT_DIR_NAME</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#OLDEST_TIMESTAMP">OLDEST_TIMESTAMP</a></strong></code>
 <div class="block">Timestamp to use when we want to refer to the oldest cell.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#QOS_THRESHOLD">QOS_THRESHOLD</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#RECOVERED_EDITS_DIR">RECOVERED_EDITS_DIR</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_IMPL">REGION_IMPL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT">REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_SERVER_HANDLER_COUNT">REGION_SERVER_HANDLER_COUNT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_SERVER_HIGH_PRIORITY_HANDLER_COUNT">REGION_SERVER_HIGH_PRIORITY_HANDLER_COUNT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_SERVER_IMPL">REGION_SERVER_IMPL</a></strong></code>
 <div class="block">Parameter name for what region server implementation to use.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_SERVER_REPLICATION_HANDLER_COUNT">REGION_SERVER_REPLICATION_HANDLER_COUNT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_SPLIT_THREADS_MAX">REGION_SPLIT_THREADS_MAX</a></strong></code>
 <div class="block">The max number of threads used for splitting storefiles in parallel during
  the region split process.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGIONINFO_QUALIFIER">REGIONINFO_QUALIFIER</a></strong></code>
 <div class="block">The regioninfo column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGIONINFO_QUALIFIER_STR">REGIONINFO_QUALIFIER_STR</a></strong></code>
 <div class="block">The RegionInfo qualifier as a string</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGIONSERVER_INFO_PORT">REGIONSERVER_INFO_PORT</a></strong></code>
 <div class="block">A configuration key for regionserver info port</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGIONSERVER_INFO_PORT_AUTO">REGIONSERVER_INFO_PORT_AUTO</a></strong></code>
 <div class="block">A flag that enables automatic selection of regionserver info port</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGIONSERVER_METRICS_PERIOD">REGIONSERVER_METRICS_PERIOD</a></strong></code>
 <div class="block">The period (in milliseconds) between computing region server point in time metrics</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGIONSERVER_PORT">REGIONSERVER_PORT</a></strong></code>
 <div class="block">Parameter name for port region server listens on.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLAY_QOS">REPLAY_QOS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_BULKLOAD_ENABLE_DEFAULT">REPLICATION_BULKLOAD_ENABLE_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_BULKLOAD_ENABLE_KEY">REPLICATION_BULKLOAD_ENABLE_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_CLUSTER_ID">REPLICATION_CLUSTER_ID</a></strong></code>
 <div class="block">Replication cluster id of source cluster which uniquely identifies itself with peer cluster</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_CODEC_CONF_KEY">REPLICATION_CODEC_CONF_KEY</a></strong></code>
 <div class="block">Configuration key for setting replication codec class name</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_CONF_DIR">REPLICATION_CONF_DIR</a></strong></code>
 <div class="block">Directory where the source cluster file system client configuration are placed which is used by
  sink cluster to copy HFiles from source cluster file system</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_ENABLE_DEFAULT">REPLICATION_ENABLE_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_ENABLE_KEY">REPLICATION_ENABLE_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_QOS">REPLICATION_QOS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SCOPE_GLOBAL">REPLICATION_SCOPE_GLOBAL</a></strong></code>
 <div class="block">Scope tag for globally scoped data.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SCOPE_LOCAL">REPLICATION_SCOPE_LOCAL</a></strong></code>
 <div class="block">Scope tag for locally scoped data.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SERVICE_CLASSNAME_DEFAULT">REPLICATION_SERVICE_CLASSNAME_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SINK_SERVICE_CLASSNAME">REPLICATION_SINK_SERVICE_CLASSNAME</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SOURCE_MAXTHREADS_DEFAULT">REPLICATION_SOURCE_MAXTHREADS_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SOURCE_MAXTHREADS_KEY">REPLICATION_SOURCE_MAXTHREADS_KEY</a></strong></code>
 <div class="block">Maximum number of threads used by the replication source for shipping edits to the sinks</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SOURCE_SERVICE_CLASSNAME">REPLICATION_SOURCE_SERVICE_CLASSNAME</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#RETRY_BACKOFF">RETRY_BACKOFF</a></strong></code>
 <div class="block">Retrying we multiply hbase.client.pause setting by what we have in this array until we
  run out of array items.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#RPC_CODEC_CONF_KEY">RPC_CODEC_CONF_KEY</a></strong></code>
 <div class="block">Configuration key for setting RPC codec class name</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#RPC_CURRENT_VERSION">RPC_CURRENT_VERSION</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#RPC_HEADER">RPC_HEADER</a></strong></code>
 <div class="block">The first four bytes of Hadoop RPC connections</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SEQNUM_QUALIFIER">SEQNUM_QUALIFIER</a></strong></code>
 <div class="block">The open seqnum column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SEQNUM_QUALIFIER_STR">SEQNUM_QUALIFIER_STR</a></strong></code>
 <div class="block">The open seqnum column qualifier</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SERVER_QUALIFIER">SERVER_QUALIFIER</a></strong></code>
 <div class="block">The server column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SERVER_QUALIFIER_STR">SERVER_QUALIFIER_STR</a></strong></code>
 <div class="block">The server column qualifier</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SERVERNAME_QUALIFIER">SERVERNAME_QUALIFIER</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SERVERNAME_QUALIFIER_STR">SERVERNAME_QUALIFIER_STR</a></strong></code>
 <div class="block">The serverName column qualifier.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SNAPSHOT_DIR_NAME">SNAPSHOT_DIR_NAME</a></strong></code>
 <div class="block">Name of the directory to store all snapshots.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SOCKET_RETRY_WAIT_MS">SOCKET_RETRY_WAIT_MS</a></strong></code>
 <div class="block">The delay when re-trying a socket operation in a loop (HBASE-4712)</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SPLIT_LOGDIR_NAME">SPLIT_LOGDIR_NAME</a></strong></code>
 <div class="block">Used to construct the name of the splitlog directory for a region server</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SPLITA_QUALIFIER">SPLITA_QUALIFIER</a></strong></code>
 <div class="block">The lower-half split region column qualifier</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SPLITB_QUALIFIER">SPLITB_QUALIFIER</a></strong></code>
 <div class="block">The upper-half split region column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STARTCODE_QUALIFIER">STARTCODE_QUALIFIER</a></strong></code>
 <div class="block">The startcode column qualifier</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STARTCODE_QUALIFIER_STR">STARTCODE_QUALIFIER_STR</a></strong></code>
 <div class="block">The startcode column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATE_QUALIFIER">STATE_QUALIFIER</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATE_QUALIFIER_STR">STATE_QUALIFIER_STR</a></strong></code>
 <div class="block">The state column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATUS_MULTICAST_ADDRESS">STATUS_MULTICAST_ADDRESS</a></strong></code>
 <div class="block">IP to use for the multicast status messages between the master and the clients.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATUS_MULTICAST_BIND_ADDRESS">STATUS_MULTICAST_BIND_ADDRESS</a></strong></code>
 <div class="block">The address to use for binding the local socket for receiving multicast.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATUS_MULTICAST_PORT">STATUS_MULTICAST_PORT</a></strong></code>
 <div class="block">The port to use for the multicast messages.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATUS_PUBLISHED">STATUS_PUBLISHED</a></strong></code>
 <div class="block">Setting to activate, or not, the publication of the status by the master.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATUS_PUBLISHED_DEFAULT">STATUS_PUBLISHED_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SYSTEMTABLE_QOS">SYSTEMTABLE_QOS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#TABLE_FAMILY">TABLE_FAMILY</a></strong></code>
 <div class="block">The catalog family</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#TABLE_FAMILY_STR">TABLE_FAMILY_STR</a></strong></code>
 <div class="block">The catalog family as a string</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#TABLE_MAX_ROWSIZE_DEFAULT">TABLE_MAX_ROWSIZE_DEFAULT</a></strong></code>
 <div class="block">Default max row size (1 Gb).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#TABLE_MAX_ROWSIZE_KEY">TABLE_MAX_ROWSIZE_KEY</a></strong></code>
 <div class="block">Max size of single row for Get's or Scan's without in-row scanning flag set.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#TABLE_STATE_QUALIFIER">TABLE_STATE_QUALIFIER</a></strong></code>
 <div class="block">The serialized table state qualifier</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#TEMPORARY_FS_DIRECTORY_KEY">TEMPORARY_FS_DIRECTORY_KEY</a></strong></code>
+<div class="block">Config key for hbase temporary directory in hdfs</div>
+</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#THREAD_WAKE_FREQUENCY">THREAD_WAKE_FREQUENCY</a></strong></code>
@@ -5187,13 +5197,33 @@ public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/
 <a name="ZK_SERVER_KERBEROS_PRINCIPAL">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>ZK_SERVER_KERBEROS_PRINCIPAL</h4>
 <pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.1255">ZK_SERVER_KERBEROS_PRINCIPAL</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.ZK_SERVER_KERBEROS_PRINCIPAL">Constant Field Values</a></dd></dl>
 </li>
 </ul>
+<a name="TEMPORARY_FS_DIRECTORY_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TEMPORARY_FS_DIRECTORY_KEY</h4>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.1259">TEMPORARY_FS_DIRECTORY_KEY</a></pre>
+<div class="block">Config key for hbase temporary directory in hdfs</div>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.TEMPORARY_FS_DIRECTORY_KEY">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+<a name="DEFAULT_TEMPORARY_HDFS_DIRECTORY">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DEFAULT_TEMPORARY_HDFS_DIRECTORY</h4>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.1260">DEFAULT_TEMPORARY_HDFS_DIRECTORY</a></pre>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ========= CONSTRUCTOR DETAIL ======== -->
@@ -5208,7 +5238,7 @@ public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HConstants</h4>
-<pre>private&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.1258">HConstants</a>()</pre>
+<pre>private&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.1263">HConstants</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/classification/class-use/InterfaceAudience.LimitedPrivate.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/classification/class-use/InterfaceAudience.LimitedPrivate.html b/devapidocs/org/apache/hadoop/hbase/classification/class-use/InterfaceAudience.LimitedPrivate.html
index b793d31..e883249 100644
--- a/devapidocs/org/apache/hadoop/hbase/classification/class-use/InterfaceAudience.LimitedPrivate.html
+++ b/devapidocs/org/apache/hadoop/hbase/classification/class-use/InterfaceAudience.LimitedPrivate.html
@@ -1327,7 +1327,7 @@ service.</div>
 <td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/HLogKey.html" title="class in org.apache.hadoop.hbase.regionserver.wal">HLogKey</a></strong></code>
 <div class="block"><strong>Deprecated.</strong>&nbsp;
-<div class="block"><i>use WALKey.  as of 2.0.  Remove in 3.0</i></div>
+<div class="block"><i>use WALKey. Deprecated as of 1.0 (HBASE-12522). Remove in 2.0</i></div>
 </div>
 </td>
 </tr>


[39/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html
index bd087f6..5f46b26 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html
@@ -163,7 +163,7 @@
 <span class="sourceLineNo">155</span>   * changes completely) so we can clean up the outstanding transaction.<a name="line.155"></a>
 <span class="sourceLineNo">156</span>   *<a name="line.156"></a>
 <span class="sourceLineNo">157</span>   * How much is the read point advanced?<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * <a name="line.158"></a>
+<span class="sourceLineNo">158</span>   *<a name="line.158"></a>
 <span class="sourceLineNo">159</span>   * Let S be the set of all write numbers that are completed. Set the read point to the highest<a name="line.159"></a>
 <span class="sourceLineNo">160</span>   * numbered write of S.<a name="line.160"></a>
 <span class="sourceLineNo">161</span>   *<a name="line.161"></a>
@@ -174,120 +174,119 @@
 <span class="sourceLineNo">166</span>  public boolean complete(WriteEntry writeEntry) {<a name="line.166"></a>
 <span class="sourceLineNo">167</span>    synchronized (writeQueue) {<a name="line.167"></a>
 <span class="sourceLineNo">168</span>      writeEntry.markCompleted();<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>      long nextReadValue = NONE;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      boolean ranOnce = false;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      while (!writeQueue.isEmpty()) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        ranOnce = true;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        WriteEntry queueFirst = writeQueue.getFirst();<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>        if (nextReadValue &gt; 0) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          if (nextReadValue + 1 != queueFirst.getWriteNumber()) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>            throw new RuntimeException("Invariant in complete violated, nextReadValue="<a name="line.178"></a>
-<span class="sourceLineNo">179</span>                + nextReadValue + ", writeNumber=" + queueFirst.getWriteNumber());<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>        if (queueFirst.isCompleted()) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>          nextReadValue = queueFirst.getWriteNumber();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>          writeQueue.removeFirst();<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        } else {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>          break;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        }<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>      if (!ranOnce) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        throw new RuntimeException("There is no first!");<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>      if (nextReadValue &gt; 0) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        synchronized (readWaiters) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>          readPoint.set(nextReadValue);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>          readWaiters.notifyAll();<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>      return readPoint.get() &gt;= writeEntry.getWriteNumber();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  }<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>  /**<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   * Wait for the global readPoint to advance up to the passed in write entry number.<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   */<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  void waitForRead(WriteEntry e) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    boolean interrupted = false;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    int count = 0;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    synchronized (readWaiters) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      while (readPoint.get() &lt; e.getWriteNumber()) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        if (count % 100 == 0 &amp;&amp; count &gt; 0) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          LOG.warn("STUCK: " + this);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        count++;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        try {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>          readWaiters.wait(10);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        } catch (InterruptedException ie) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>          // We were interrupted... finish the loop -- i.e. cleanup --and then<a name="line.220"></a>
-<span class="sourceLineNo">221</span>          // on our way out, reset the interrupt flag.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>          interrupted = true;<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>    if (interrupted) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      Thread.currentThread().interrupt();<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>  @VisibleForTesting<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  public String toString() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return Objects.toStringHelper(this)<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        .add("readPoint", readPoint)<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        .add("writePoint", writePoint).toString();<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>  public long getReadPoint() {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    return readPoint.get();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  @VisibleForTesting<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  public long getWritePoint() {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    return writePoint.get();<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * Write number and whether write has completed given out at start of a write transaction.<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * Every created WriteEntry must be completed by calling mvcc#complete or #completeAndWait.<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  @InterfaceAudience.Private<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public static class WriteEntry {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    private final long writeNumber;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    private boolean completed = false;<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    WriteEntry(long writeNumber) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      this.writeNumber = writeNumber;<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>    void markCompleted() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      this.completed = true;<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>    boolean isCompleted() {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      return this.completed;<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>    public long getWriteNumber() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      return this.writeNumber;<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>    @Override<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    public String toString() {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      return this.writeNumber + ", " + this.completed;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span>  public static final long FIXED_SIZE = ClassSize.align(<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      ClassSize.OBJECT +<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      2 * Bytes.SIZEOF_LONG +<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      2 * ClassSize.REFERENCE);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>}<a name="line.282"></a>
+<span class="sourceLineNo">169</span>      long nextReadValue = NONE;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      boolean ranOnce = false;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      while (!writeQueue.isEmpty()) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        ranOnce = true;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        WriteEntry queueFirst = writeQueue.getFirst();<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>        if (nextReadValue &gt; 0) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          if (nextReadValue + 1 != queueFirst.getWriteNumber()) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            throw new RuntimeException("Invariant in complete violated, nextReadValue="<a name="line.177"></a>
+<span class="sourceLineNo">178</span>                + nextReadValue + ", writeNumber=" + queueFirst.getWriteNumber());<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>        if (queueFirst.isCompleted()) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          nextReadValue = queueFirst.getWriteNumber();<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          writeQueue.removeFirst();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        } else {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          break;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      }<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>      if (!ranOnce) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        throw new RuntimeException("There is no first!");<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>      if (nextReadValue &gt; 0) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        synchronized (readWaiters) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>          readPoint.set(nextReadValue);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          readWaiters.notifyAll();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      return readPoint.get() &gt;= writeEntry.getWriteNumber();<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Wait for the global readPoint to advance up to the passed in write entry number.<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  void waitForRead(WriteEntry e) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    boolean interrupted = false;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    int count = 0;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    synchronized (readWaiters) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      while (readPoint.get() &lt; e.getWriteNumber()) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        if (count % 100 == 0 &amp;&amp; count &gt; 0) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          LOG.warn("STUCK: " + this);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        count++;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          readWaiters.wait(10);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        } catch (InterruptedException ie) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>          // We were interrupted... finish the loop -- i.e. cleanup --and then<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          // on our way out, reset the interrupt flag.<a name="line.220"></a>
+<span class="sourceLineNo">221</span>          interrupted = true;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    if (interrupted) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      Thread.currentThread().interrupt();<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>  @VisibleForTesting<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  public String toString() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    return Objects.toStringHelper(this)<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        .add("readPoint", readPoint)<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        .add("writePoint", writePoint).toString();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public long getReadPoint() {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    return readPoint.get();<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  @VisibleForTesting<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  public long getWritePoint() {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    return writePoint.get();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  /**<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * Write number and whether write has completed given out at start of a write transaction.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   * Every created WriteEntry must be completed by calling mvcc#complete or #completeAndWait.<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  @InterfaceAudience.Private<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  public static class WriteEntry {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    private final long writeNumber;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    private boolean completed = false;<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>    WriteEntry(long writeNumber) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      this.writeNumber = writeNumber;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    void markCompleted() {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      this.completed = true;<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>    boolean isCompleted() {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      return this.completed;<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>    public long getWriteNumber() {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      return this.writeNumber;<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>    @Override<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    public String toString() {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      return this.writeNumber + ", " + this.completed;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  public static final long FIXED_SIZE = ClassSize.align(<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      ClassSize.OBJECT +<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      2 * Bytes.SIZEOF_LONG +<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      2 * ClassSize.REFERENCE);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>}<a name="line.281"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.BulkLoadListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.BulkLoadListener.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.BulkLoadListener.html
index eee6180..5acbf19 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.BulkLoadListener.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.BulkLoadListener.html
@@ -164,7 +164,7 @@
 <span class="sourceLineNo">156</span>  /** @return true if loading column families on demand by default */<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  boolean isLoadingCfsOnDemandDefault();<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  /** @return readpoint considering given IsolationLevel */<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  /** @return readpoint considering given IsolationLevel; pass null for default*/<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  long getReadPoint(IsolationLevel isolationLevel);<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.FlushResult.Result.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.FlushResult.Result.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.FlushResult.Result.html
index eee6180..5acbf19 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.FlushResult.Result.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.FlushResult.Result.html
@@ -164,7 +164,7 @@
 <span class="sourceLineNo">156</span>  /** @return true if loading column families on demand by default */<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  boolean isLoadingCfsOnDemandDefault();<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  /** @return readpoint considering given IsolationLevel */<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  /** @return readpoint considering given IsolationLevel; pass null for default*/<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  long getReadPoint(IsolationLevel isolationLevel);<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.FlushResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.FlushResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.FlushResult.html
index eee6180..5acbf19 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.FlushResult.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.FlushResult.html
@@ -164,7 +164,7 @@
 <span class="sourceLineNo">156</span>  /** @return true if loading column families on demand by default */<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  boolean isLoadingCfsOnDemandDefault();<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  /** @return readpoint considering given IsolationLevel */<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  /** @return readpoint considering given IsolationLevel; pass null for default*/<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  long getReadPoint(IsolationLevel isolationLevel);<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.Operation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.Operation.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.Operation.html
index eee6180..5acbf19 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.Operation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.Operation.html
@@ -164,7 +164,7 @@
 <span class="sourceLineNo">156</span>  /** @return true if loading column families on demand by default */<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  boolean isLoadingCfsOnDemandDefault();<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  /** @return readpoint considering given IsolationLevel */<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  /** @return readpoint considering given IsolationLevel; pass null for default*/<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  long getReadPoint(IsolationLevel isolationLevel);<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.RowLock.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.RowLock.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.RowLock.html
index eee6180..5acbf19 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.RowLock.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.RowLock.html
@@ -164,7 +164,7 @@
 <span class="sourceLineNo">156</span>  /** @return true if loading column families on demand by default */<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  boolean isLoadingCfsOnDemandDefault();<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  /** @return readpoint considering given IsolationLevel */<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  /** @return readpoint considering given IsolationLevel; pass null for default*/<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  long getReadPoint(IsolationLevel isolationLevel);<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.html
index eee6180..5acbf19 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/Region.html
@@ -164,7 +164,7 @@
 <span class="sourceLineNo">156</span>  /** @return true if loading column families on demand by default */<a name="line.156"></a>
 <span class="sourceLineNo">157</span>  boolean isLoadingCfsOnDemandDefault();<a name="line.157"></a>
 <span class="sourceLineNo">158</span><a name="line.158"></a>
-<span class="sourceLineNo">159</span>  /** @return readpoint considering given IsolationLevel */<a name="line.159"></a>
+<span class="sourceLineNo">159</span>  /** @return readpoint considering given IsolationLevel; pass null for default*/<a name="line.159"></a>
 <span class="sourceLineNo">160</span>  long getReadPoint(IsolationLevel isolationLevel);<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>


[41/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
index f41a45b..9f165f1 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
@@ -644,156 +644,159 @@
 <span class="sourceLineNo">636</span>    Configuration conf = job.getConfiguration();<a name="line.636"></a>
 <span class="sourceLineNo">637</span>    // create the partitions file<a name="line.637"></a>
 <span class="sourceLineNo">638</span>    FileSystem fs = FileSystem.get(conf);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    Path partitionsPath = new Path(conf.get("hbase.fs.tmp.dir"), "partitions_" + UUID.randomUUID());<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    fs.makeQualified(partitionsPath);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    writePartitions(conf, partitionsPath, splitPoints);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    fs.deleteOnExit(partitionsPath);<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    // configure job to use it<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    job.setPartitionerClass(TotalOrderPartitioner.class);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    TotalOrderPartitioner.setPartitionFile(conf, partitionsPath);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>  }<a name="line.647"></a>
-<span class="sourceLineNo">648</span><a name="line.648"></a>
-<span class="sourceLineNo">649</span>  /**<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * Serialize column family to compression algorithm map to configuration.<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * Invoked while configuring the MR job for incremental load.<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   *<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @param tableDescriptor to read the properties from<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   * @param conf to persist serialized values into<a name="line.654"></a>
-<span class="sourceLineNo">655</span>   * @throws IOException<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   *           on failure to read column family descriptors<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   */<a name="line.657"></a>
-<span class="sourceLineNo">658</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      value="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE")<a name="line.659"></a>
-<span class="sourceLineNo">660</span>  @VisibleForTesting<a name="line.660"></a>
-<span class="sourceLineNo">661</span>  static void configureCompression(Configuration conf, HTableDescriptor tableDescriptor)<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      throws UnsupportedEncodingException {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    StringBuilder compressionConfigValue = new StringBuilder();<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    if(tableDescriptor == null){<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      // could happen with mock table instance<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      return;<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    int i = 0;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      if (i++ &gt; 0) {<a name="line.671"></a>
-<span class="sourceLineNo">672</span>        compressionConfigValue.append('&amp;');<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      compressionConfigValue.append(URLEncoder.encode(<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.675"></a>
-<span class="sourceLineNo">676</span>      compressionConfigValue.append('=');<a name="line.676"></a>
+<span class="sourceLineNo">639</span>    String hbaseTmpFsDir =<a name="line.639"></a>
+<span class="sourceLineNo">640</span>        conf.get(HConstants.TEMPORARY_FS_DIRECTORY_KEY,<a name="line.640"></a>
+<span class="sourceLineNo">641</span>          HConstants.DEFAULT_TEMPORARY_HDFS_DIRECTORY);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    Path partitionsPath = new Path(hbaseTmpFsDir, "partitions_" + UUID.randomUUID());<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    fs.makeQualified(partitionsPath);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>    writePartitions(conf, partitionsPath, splitPoints);<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    fs.deleteOnExit(partitionsPath);<a name="line.645"></a>
+<span class="sourceLineNo">646</span><a name="line.646"></a>
+<span class="sourceLineNo">647</span>    // configure job to use it<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    job.setPartitionerClass(TotalOrderPartitioner.class);<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    TotalOrderPartitioner.setPartitionFile(conf, partitionsPath);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>  }<a name="line.650"></a>
+<span class="sourceLineNo">651</span><a name="line.651"></a>
+<span class="sourceLineNo">652</span>  /**<a name="line.652"></a>
+<span class="sourceLineNo">653</span>   * Serialize column family to compression algorithm map to configuration.<a name="line.653"></a>
+<span class="sourceLineNo">654</span>   * Invoked while configuring the MR job for incremental load.<a name="line.654"></a>
+<span class="sourceLineNo">655</span>   *<a name="line.655"></a>
+<span class="sourceLineNo">656</span>   * @param tableDescriptor to read the properties from<a name="line.656"></a>
+<span class="sourceLineNo">657</span>   * @param conf to persist serialized values into<a name="line.657"></a>
+<span class="sourceLineNo">658</span>   * @throws IOException<a name="line.658"></a>
+<span class="sourceLineNo">659</span>   *           on failure to read column family descriptors<a name="line.659"></a>
+<span class="sourceLineNo">660</span>   */<a name="line.660"></a>
+<span class="sourceLineNo">661</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      value="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE")<a name="line.662"></a>
+<span class="sourceLineNo">663</span>  @VisibleForTesting<a name="line.663"></a>
+<span class="sourceLineNo">664</span>  static void configureCompression(Configuration conf, HTableDescriptor tableDescriptor)<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      throws UnsupportedEncodingException {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    StringBuilder compressionConfigValue = new StringBuilder();<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    if(tableDescriptor == null){<a name="line.667"></a>
+<span class="sourceLineNo">668</span>      // could happen with mock table instance<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      return;<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    }<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    int i = 0;<a name="line.672"></a>
+<span class="sourceLineNo">673</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.673"></a>
+<span class="sourceLineNo">674</span>      if (i++ &gt; 0) {<a name="line.674"></a>
+<span class="sourceLineNo">675</span>        compressionConfigValue.append('&amp;');<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      }<a name="line.676"></a>
 <span class="sourceLineNo">677</span>      compressionConfigValue.append(URLEncoder.encode(<a name="line.677"></a>
-<span class="sourceLineNo">678</span>        familyDescriptor.getCompressionType().getName(), "UTF-8"));<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    }<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    // Get rid of the last ampersand<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    conf.set(COMPRESSION_FAMILIES_CONF_KEY, compressionConfigValue.toString());<a name="line.681"></a>
-<span class="sourceLineNo">682</span>  }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><a name="line.683"></a>
-<span class="sourceLineNo">684</span>  /**<a name="line.684"></a>
-<span class="sourceLineNo">685</span>   * Serialize column family to block size map to configuration.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * Invoked while configuring the MR job for incremental load.<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   * @param tableDescriptor to read the properties from<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * @param conf to persist serialized values into<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   *<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * @throws IOException<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   *           on failure to read column family descriptors<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   */<a name="line.692"></a>
-<span class="sourceLineNo">693</span>  @VisibleForTesting<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  static void configureBlockSize(HTableDescriptor tableDescriptor, Configuration conf)<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      throws UnsupportedEncodingException {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    StringBuilder blockSizeConfigValue = new StringBuilder();<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    if (tableDescriptor == null) {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      // could happen with mock table instance<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      return;<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    }<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    int i = 0;<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      if (i++ &gt; 0) {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>        blockSizeConfigValue.append('&amp;');<a name="line.705"></a>
-<span class="sourceLineNo">706</span>      }<a name="line.706"></a>
-<span class="sourceLineNo">707</span>      blockSizeConfigValue.append(URLEncoder.encode(<a name="line.707"></a>
-<span class="sourceLineNo">708</span>          familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      blockSizeConfigValue.append('=');<a name="line.709"></a>
+<span class="sourceLineNo">678</span>        familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      compressionConfigValue.append('=');<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      compressionConfigValue.append(URLEncoder.encode(<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        familyDescriptor.getCompressionType().getName(), "UTF-8"));<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    }<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    // Get rid of the last ampersand<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    conf.set(COMPRESSION_FAMILIES_CONF_KEY, compressionConfigValue.toString());<a name="line.684"></a>
+<span class="sourceLineNo">685</span>  }<a name="line.685"></a>
+<span class="sourceLineNo">686</span><a name="line.686"></a>
+<span class="sourceLineNo">687</span>  /**<a name="line.687"></a>
+<span class="sourceLineNo">688</span>   * Serialize column family to block size map to configuration.<a name="line.688"></a>
+<span class="sourceLineNo">689</span>   * Invoked while configuring the MR job for incremental load.<a name="line.689"></a>
+<span class="sourceLineNo">690</span>   * @param tableDescriptor to read the properties from<a name="line.690"></a>
+<span class="sourceLineNo">691</span>   * @param conf to persist serialized values into<a name="line.691"></a>
+<span class="sourceLineNo">692</span>   *<a name="line.692"></a>
+<span class="sourceLineNo">693</span>   * @throws IOException<a name="line.693"></a>
+<span class="sourceLineNo">694</span>   *           on failure to read column family descriptors<a name="line.694"></a>
+<span class="sourceLineNo">695</span>   */<a name="line.695"></a>
+<span class="sourceLineNo">696</span>  @VisibleForTesting<a name="line.696"></a>
+<span class="sourceLineNo">697</span>  static void configureBlockSize(HTableDescriptor tableDescriptor, Configuration conf)<a name="line.697"></a>
+<span class="sourceLineNo">698</span>      throws UnsupportedEncodingException {<a name="line.698"></a>
+<span class="sourceLineNo">699</span>    StringBuilder blockSizeConfigValue = new StringBuilder();<a name="line.699"></a>
+<span class="sourceLineNo">700</span>    if (tableDescriptor == null) {<a name="line.700"></a>
+<span class="sourceLineNo">701</span>      // could happen with mock table instance<a name="line.701"></a>
+<span class="sourceLineNo">702</span>      return;<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    }<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    int i = 0;<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      if (i++ &gt; 0) {<a name="line.707"></a>
+<span class="sourceLineNo">708</span>        blockSizeConfigValue.append('&amp;');<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      }<a name="line.709"></a>
 <span class="sourceLineNo">710</span>      blockSizeConfigValue.append(URLEncoder.encode(<a name="line.710"></a>
-<span class="sourceLineNo">711</span>          String.valueOf(familyDescriptor.getBlocksize()), "UTF-8"));<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    }<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    // Get rid of the last ampersand<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    conf.set(BLOCK_SIZE_FAMILIES_CONF_KEY, blockSizeConfigValue.toString());<a name="line.714"></a>
-<span class="sourceLineNo">715</span>  }<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>   * Serialize column family to bloom type map to configuration.<a name="line.718"></a>
-<span class="sourceLineNo">719</span>   * Invoked while configuring the MR job for incremental load.<a name="line.719"></a>
-<span class="sourceLineNo">720</span>   * @param tableDescriptor to read the properties from<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   * @param conf to persist serialized values into<a name="line.721"></a>
-<span class="sourceLineNo">722</span>   *<a name="line.722"></a>
-<span class="sourceLineNo">723</span>   * @throws IOException<a name="line.723"></a>
-<span class="sourceLineNo">724</span>   *           on failure to read column family descriptors<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   */<a name="line.725"></a>
-<span class="sourceLineNo">726</span>  @VisibleForTesting<a name="line.726"></a>
-<span class="sourceLineNo">727</span>  static void configureBloomType(HTableDescriptor tableDescriptor, Configuration conf)<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      throws UnsupportedEncodingException {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    if (tableDescriptor == null) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      // could happen with mock table instance<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return;<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    }<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    StringBuilder bloomTypeConfigValue = new StringBuilder();<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    int i = 0;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      if (i++ &gt; 0) {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>        bloomTypeConfigValue.append('&amp;');<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      }<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      bloomTypeConfigValue.append(URLEncoder.encode(<a name="line.740"></a>
-<span class="sourceLineNo">741</span>        familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      bloomTypeConfigValue.append('=');<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      String bloomType = familyDescriptor.getBloomFilterType().toString();<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      if (bloomType == null) {<a name="line.744"></a>
-<span class="sourceLineNo">745</span>        bloomType = HColumnDescriptor.DEFAULT_BLOOMFILTER;<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      }<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      bloomTypeConfigValue.append(URLEncoder.encode(bloomType, "UTF-8"));<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    }<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    conf.set(BLOOM_TYPE_FAMILIES_CONF_KEY, bloomTypeConfigValue.toString());<a name="line.749"></a>
-<span class="sourceLineNo">750</span>  }<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>  /**<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   * Serialize column family to data block encoding map to configuration.<a name="line.753"></a>
-<span class="sourceLineNo">754</span>   * Invoked while configuring the MR job for incremental load.<a name="line.754"></a>
-<span class="sourceLineNo">755</span>   *<a name="line.755"></a>
-<span class="sourceLineNo">756</span>   * @param tableDescriptor to read the properties from<a name="line.756"></a>
-<span class="sourceLineNo">757</span>   * @param conf to persist serialized values into<a name="line.757"></a>
-<span class="sourceLineNo">758</span>   * @throws IOException<a name="line.758"></a>
-<span class="sourceLineNo">759</span>   *           on failure to read column family descriptors<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   */<a name="line.760"></a>
-<span class="sourceLineNo">761</span>  @VisibleForTesting<a name="line.761"></a>
-<span class="sourceLineNo">762</span>  static void configureDataBlockEncoding(HTableDescriptor tableDescriptor,<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      Configuration conf) throws UnsupportedEncodingException {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    if (tableDescriptor == null) {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      // could happen with mock table instance<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      return;<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    }<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    StringBuilder dataBlockEncodingConfigValue = new StringBuilder();<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    int i = 0;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      if (i++ &gt; 0) {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>        dataBlockEncodingConfigValue.append('&amp;');<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      }<a name="line.774"></a>
-<span class="sourceLineNo">775</span>      dataBlockEncodingConfigValue.append(<a name="line.775"></a>
-<span class="sourceLineNo">776</span>          URLEncoder.encode(familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      dataBlockEncodingConfigValue.append('=');<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      DataBlockEncoding encoding = familyDescriptor.getDataBlockEncoding();<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      if (encoding == null) {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>        encoding = DataBlockEncoding.NONE;<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      }<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      dataBlockEncodingConfigValue.append(URLEncoder.encode(encoding.toString(),<a name="line.782"></a>
-<span class="sourceLineNo">783</span>          "UTF-8"));<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    conf.set(DATABLOCK_ENCODING_FAMILIES_CONF_KEY,<a name="line.785"></a>
-<span class="sourceLineNo">786</span>        dataBlockEncodingConfigValue.toString());<a name="line.786"></a>
-<span class="sourceLineNo">787</span>  }<a name="line.787"></a>
-<span class="sourceLineNo">788</span>}<a name="line.788"></a>
+<span class="sourceLineNo">711</span>          familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      blockSizeConfigValue.append('=');<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      blockSizeConfigValue.append(URLEncoder.encode(<a name="line.713"></a>
+<span class="sourceLineNo">714</span>          String.valueOf(familyDescriptor.getBlocksize()), "UTF-8"));<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    }<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    // Get rid of the last ampersand<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    conf.set(BLOCK_SIZE_FAMILIES_CONF_KEY, blockSizeConfigValue.toString());<a name="line.717"></a>
+<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
+<span class="sourceLineNo">719</span><a name="line.719"></a>
+<span class="sourceLineNo">720</span>  /**<a name="line.720"></a>
+<span class="sourceLineNo">721</span>   * Serialize column family to bloom type map to configuration.<a name="line.721"></a>
+<span class="sourceLineNo">722</span>   * Invoked while configuring the MR job for incremental load.<a name="line.722"></a>
+<span class="sourceLineNo">723</span>   * @param tableDescriptor to read the properties from<a name="line.723"></a>
+<span class="sourceLineNo">724</span>   * @param conf to persist serialized values into<a name="line.724"></a>
+<span class="sourceLineNo">725</span>   *<a name="line.725"></a>
+<span class="sourceLineNo">726</span>   * @throws IOException<a name="line.726"></a>
+<span class="sourceLineNo">727</span>   *           on failure to read column family descriptors<a name="line.727"></a>
+<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
+<span class="sourceLineNo">729</span>  @VisibleForTesting<a name="line.729"></a>
+<span class="sourceLineNo">730</span>  static void configureBloomType(HTableDescriptor tableDescriptor, Configuration conf)<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      throws UnsupportedEncodingException {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    if (tableDescriptor == null) {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      // could happen with mock table instance<a name="line.733"></a>
+<span class="sourceLineNo">734</span>      return;<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    }<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    StringBuilder bloomTypeConfigValue = new StringBuilder();<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    int i = 0;<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      if (i++ &gt; 0) {<a name="line.740"></a>
+<span class="sourceLineNo">741</span>        bloomTypeConfigValue.append('&amp;');<a name="line.741"></a>
+<span class="sourceLineNo">742</span>      }<a name="line.742"></a>
+<span class="sourceLineNo">743</span>      bloomTypeConfigValue.append(URLEncoder.encode(<a name="line.743"></a>
+<span class="sourceLineNo">744</span>        familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.744"></a>
+<span class="sourceLineNo">745</span>      bloomTypeConfigValue.append('=');<a name="line.745"></a>
+<span class="sourceLineNo">746</span>      String bloomType = familyDescriptor.getBloomFilterType().toString();<a name="line.746"></a>
+<span class="sourceLineNo">747</span>      if (bloomType == null) {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>        bloomType = HColumnDescriptor.DEFAULT_BLOOMFILTER;<a name="line.748"></a>
+<span class="sourceLineNo">749</span>      }<a name="line.749"></a>
+<span class="sourceLineNo">750</span>      bloomTypeConfigValue.append(URLEncoder.encode(bloomType, "UTF-8"));<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    }<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    conf.set(BLOOM_TYPE_FAMILIES_CONF_KEY, bloomTypeConfigValue.toString());<a name="line.752"></a>
+<span class="sourceLineNo">753</span>  }<a name="line.753"></a>
+<span class="sourceLineNo">754</span><a name="line.754"></a>
+<span class="sourceLineNo">755</span>  /**<a name="line.755"></a>
+<span class="sourceLineNo">756</span>   * Serialize column family to data block encoding map to configuration.<a name="line.756"></a>
+<span class="sourceLineNo">757</span>   * Invoked while configuring the MR job for incremental load.<a name="line.757"></a>
+<span class="sourceLineNo">758</span>   *<a name="line.758"></a>
+<span class="sourceLineNo">759</span>   * @param tableDescriptor to read the properties from<a name="line.759"></a>
+<span class="sourceLineNo">760</span>   * @param conf to persist serialized values into<a name="line.760"></a>
+<span class="sourceLineNo">761</span>   * @throws IOException<a name="line.761"></a>
+<span class="sourceLineNo">762</span>   *           on failure to read column family descriptors<a name="line.762"></a>
+<span class="sourceLineNo">763</span>   */<a name="line.763"></a>
+<span class="sourceLineNo">764</span>  @VisibleForTesting<a name="line.764"></a>
+<span class="sourceLineNo">765</span>  static void configureDataBlockEncoding(HTableDescriptor tableDescriptor,<a name="line.765"></a>
+<span class="sourceLineNo">766</span>      Configuration conf) throws UnsupportedEncodingException {<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    if (tableDescriptor == null) {<a name="line.767"></a>
+<span class="sourceLineNo">768</span>      // could happen with mock table instance<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      return;<a name="line.769"></a>
+<span class="sourceLineNo">770</span>    }<a name="line.770"></a>
+<span class="sourceLineNo">771</span>    StringBuilder dataBlockEncodingConfigValue = new StringBuilder();<a name="line.771"></a>
+<span class="sourceLineNo">772</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.772"></a>
+<span class="sourceLineNo">773</span>    int i = 0;<a name="line.773"></a>
+<span class="sourceLineNo">774</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      if (i++ &gt; 0) {<a name="line.775"></a>
+<span class="sourceLineNo">776</span>        dataBlockEncodingConfigValue.append('&amp;');<a name="line.776"></a>
+<span class="sourceLineNo">777</span>      }<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      dataBlockEncodingConfigValue.append(<a name="line.778"></a>
+<span class="sourceLineNo">779</span>          URLEncoder.encode(familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      dataBlockEncodingConfigValue.append('=');<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      DataBlockEncoding encoding = familyDescriptor.getDataBlockEncoding();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      if (encoding == null) {<a name="line.782"></a>
+<span class="sourceLineNo">783</span>        encoding = DataBlockEncoding.NONE;<a name="line.783"></a>
+<span class="sourceLineNo">784</span>      }<a name="line.784"></a>
+<span class="sourceLineNo">785</span>      dataBlockEncodingConfigValue.append(URLEncoder.encode(encoding.toString(),<a name="line.785"></a>
+<span class="sourceLineNo">786</span>          "UTF-8"));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    }<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    conf.set(DATABLOCK_ENCODING_FAMILIES_CONF_KEY,<a name="line.788"></a>
+<span class="sourceLineNo">789</span>        dataBlockEncodingConfigValue.toString());<a name="line.789"></a>
+<span class="sourceLineNo">790</span>  }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>}<a name="line.791"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
index 0129065..f72db18 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
@@ -222,227 +222,228 @@
 <span class="sourceLineNo">214</span>  int scan() throws IOException {<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    try {<a name="line.215"></a>
 <span class="sourceLineNo">216</span>      if (!alreadyRunning.compareAndSet(false, true)) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        return 0;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      Triple&lt;Integer, Map&lt;HRegionInfo, Result&gt;, Map&lt;HRegionInfo, Result&gt;&gt; scanTriple =<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        getMergedRegionsAndSplitParents();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      int count = scanTriple.getFirst();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span>       * clean merge regions first<a name="line.223"></a>
-<span class="sourceLineNo">224</span>       */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      int mergeCleaned = 0;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      Map&lt;HRegionInfo, Result&gt; mergedRegions = scanTriple.getSecond();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      for (Map.Entry&lt;HRegionInfo, Result&gt; e : mergedRegions.entrySet()) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        PairOfSameType&lt;HRegionInfo&gt; p = MetaTableAccessor.getMergeRegions(e.getValue());<a name="line.228"></a>
-<span class="sourceLineNo">229</span>        HRegionInfo regionA = p.getFirst();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        HRegionInfo regionB = p.getSecond();<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        if (regionA == null || regionB == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>          LOG.warn("Unexpected references regionA="<a name="line.232"></a>
-<span class="sourceLineNo">233</span>              + (regionA == null ? "null" : regionA.getRegionNameAsString())<a name="line.233"></a>
-<span class="sourceLineNo">234</span>              + ",regionB="<a name="line.234"></a>
-<span class="sourceLineNo">235</span>              + (regionB == null ? "null" : regionB.getRegionNameAsString())<a name="line.235"></a>
-<span class="sourceLineNo">236</span>              + " in merged region " + e.getKey().getRegionNameAsString());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        } else {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          if (cleanMergeRegion(e.getKey(), regionA, regionB)) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>            mergeCleaned++;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        }<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      /**<a name="line.243"></a>
-<span class="sourceLineNo">244</span>       * clean split parents<a name="line.244"></a>
-<span class="sourceLineNo">245</span>       */<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      Map&lt;HRegionInfo, Result&gt; splitParents = scanTriple.getThird();<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      // Now work on our list of found parents. See if any we can clean up.<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      int splitCleaned = 0;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // regions whose parents are still around<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      HashSet&lt;String&gt; parentNotCleaned = new HashSet&lt;String&gt;();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      for (Map.Entry&lt;HRegionInfo, Result&gt; e : splitParents.entrySet()) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        if (!parentNotCleaned.contains(e.getKey().getEncodedName()) &amp;&amp;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>            cleanParent(e.getKey(), e.getValue())) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          splitCleaned++;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        } else {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>          // We could not clean the parent, so it's daughters should not be<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          // cleaned either (HBASE-6160)<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          PairOfSameType&lt;HRegionInfo&gt; daughters =<a name="line.259"></a>
-<span class="sourceLineNo">260</span>              MetaTableAccessor.getDaughterRegions(e.getValue());<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          parentNotCleaned.add(daughters.getFirst().getEncodedName());<a name="line.261"></a>
-<span class="sourceLineNo">262</span>          parentNotCleaned.add(daughters.getSecond().getEncodedName());<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>      if ((mergeCleaned + splitCleaned) != 0) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        LOG.info("Scanned " + count + " catalog row(s), gc'd " + mergeCleaned<a name="line.266"></a>
-<span class="sourceLineNo">267</span>            + " unreferenced merged region(s) and " + splitCleaned<a name="line.267"></a>
-<span class="sourceLineNo">268</span>            + " unreferenced parent region(s)");<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      } else if (LOG.isTraceEnabled()) {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        LOG.trace("Scanned " + count + " catalog row(s), gc'd " + mergeCleaned<a name="line.270"></a>
-<span class="sourceLineNo">271</span>            + " unreferenced merged region(s) and " + splitCleaned<a name="line.271"></a>
-<span class="sourceLineNo">272</span>            + " unreferenced parent region(s)");<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      return mergeCleaned + splitCleaned;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    } finally {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      alreadyRunning.set(false);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Compare HRegionInfos in a way that has split parents sort BEFORE their<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * daughters.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  static class SplitParentFirstComparator implements Comparator&lt;HRegionInfo&gt; {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    Comparator&lt;byte[]&gt; rowEndKeyComparator = new Bytes.RowEndKeyComparator();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    @Override<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    public int compare(HRegionInfo left, HRegionInfo right) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      // This comparator differs from the one HRegionInfo in that it sorts<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      // parent before daughters.<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      if (left == null) return -1;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      if (right == null) return 1;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Same table name.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      int result = left.getTable().compareTo(right.getTable());<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      if (result != 0) return result;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Compare start keys.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      result = Bytes.compareTo(left.getStartKey(), right.getStartKey());<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      if (result != 0) return result;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Compare end keys, but flip the operands so parent comes first<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      result = rowEndKeyComparator.compare(right.getEndKey(), left.getEndKey());<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      return result;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  /**<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * If daughters no longer hold reference to the parents, delete the parent.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @param parent HRegionInfo of split offlined parent<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param rowContent Content of &lt;code&gt;parent&lt;/code&gt; row in<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * &lt;code&gt;metaRegionName&lt;/code&gt;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @return True if we removed &lt;code&gt;parent&lt;/code&gt; from meta table and from<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * the filesystem.<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * @throws IOException<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   */<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  boolean cleanParent(final HRegionInfo parent, Result rowContent)<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  throws IOException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    boolean result = false;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    // Check whether it is a merged region and not clean reference<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    // No necessary to check MERGEB_QUALIFIER because these two qualifiers will<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    // be inserted/deleted together<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    if (rowContent.getValue(HConstants.CATALOG_FAMILY,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        HConstants.MERGEA_QUALIFIER) != null) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      // wait cleaning merge region first<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      return result;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // Run checks on each daughter split.<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    PairOfSameType&lt;HRegionInfo&gt; daughters = MetaTableAccessor.getDaughterRegions(rowContent);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Pair&lt;Boolean, Boolean&gt; a = checkDaughterInFs(parent, daughters.getFirst());<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    Pair&lt;Boolean, Boolean&gt; b = checkDaughterInFs(parent, daughters.getSecond());<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    if (hasNoReferences(a) &amp;&amp; hasNoReferences(b)) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      LOG.debug("Deleting region " + parent.getRegionNameAsString() +<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        " because daughter splits no longer hold references");<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      if (LOG.isTraceEnabled()) LOG.trace("Archiving parent region: " + parent);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      HFileArchiver.archiveRegion(this.services.getConfiguration(), fs, parent);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      MetaTableAccessor.deleteRegion(this.connection, parent);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      result = true;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    return result;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /**<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * @param p A pair where the first boolean says whether or not the daughter<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   * region directory exists in the filesystem and then the second boolean says<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * whether the daughter has references to the parent.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @return True the passed &lt;code&gt;p&lt;/code&gt; signifies no references.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private boolean hasNoReferences(final Pair&lt;Boolean, Boolean&gt; p) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    return !p.getFirst() || !p.getSecond();<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Checks if a daughter region -- either splitA or splitB -- still holds<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   * references to parent.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * @param parent Parent region<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @param daughter Daughter region<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * @return A pair where the first boolean says whether or not the daughter<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * region directory exists in the filesystem and then the second boolean says<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * whether the daughter has references to the parent.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @throws IOException<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  Pair&lt;Boolean, Boolean&gt; checkDaughterInFs(final HRegionInfo parent, final HRegionInfo daughter)<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  throws IOException {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    if (daughter == null)  {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      return new Pair&lt;Boolean, Boolean&gt;(Boolean.FALSE, Boolean.FALSE);<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>    FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    Path rootdir = this.services.getMasterFileSystem().getRootDir();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    Path tabledir = FSUtils.getTableDir(rootdir, daughter.getTable());<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    Path daughterRegionDir = new Path(tabledir, daughter.getEncodedName());<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>    HRegionFileSystem regionFs = null;<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>      if (!FSUtils.isExists(fs, daughterRegionDir)) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return new Pair&lt;Boolean, Boolean&gt;(Boolean.FALSE, Boolean.FALSE);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    } catch (IOException ioe) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      LOG.warn("Error trying to determine if daughter region exists, " +<a name="line.380"></a>
-<span class="sourceLineNo">381</span>               "assuming exists and has references", ioe);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return new Pair&lt;Boolean, Boolean&gt;(Boolean.TRUE, Boolean.TRUE);<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>    try {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          this.services.getConfiguration(), fs, tabledir, daughter, true);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    } catch (IOException e) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      LOG.warn("Error trying to determine referenced files from : " + daughter.getEncodedName()<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          + ", to: " + parent.getEncodedName() + " assuming has references", e);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      return new Pair&lt;Boolean, Boolean&gt;(Boolean.TRUE, Boolean.TRUE);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    }<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    boolean references = false;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    HTableDescriptor parentDescriptor = getTableDescriptor(parent.getTable());<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    for (HColumnDescriptor family: parentDescriptor.getFamilies()) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      if ((references = regionFs.hasReferences(family.getNameAsString()))) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        break;<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>    return new Pair&lt;Boolean, Boolean&gt;(Boolean.TRUE, Boolean.valueOf(references));<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>  private HTableDescriptor getTableDescriptor(final TableName tableName)<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      throws FileNotFoundException, IOException {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    return this.services.getTableDescriptors().get(tableName);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  /**<a name="line.409"></a>
-<span class="sourceLineNo">410</span>   * Checks if the specified region has merge qualifiers, if so, try to clean<a name="line.410"></a>
-<span class="sourceLineNo">411</span>   * them<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * @param region<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * @return true if the specified region doesn't have merge qualifier now<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * @throws IOException<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   */<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  public boolean cleanMergeQualifier(final HRegionInfo region)<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      throws IOException {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    // Get merge regions if it is a merged region and already has merge<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    // qualifier<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Pair&lt;HRegionInfo, HRegionInfo&gt; mergeRegions = MetaTableAccessor<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        .getRegionsFromMergeQualifier(this.services.getConnection(),<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          region.getRegionName());<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    if (mergeRegions == null<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        || (mergeRegions.getFirst() == null &amp;&amp; mergeRegions.getSecond() == null)) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      // It doesn't have merge qualifier, no need to clean<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      return true;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    // It shouldn't happen, we must insert/delete these two qualifiers together<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    if (mergeRegions.getFirst() == null || mergeRegions.getSecond() == null) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      LOG.error("Merged region " + region.getRegionNameAsString()<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          + " has only one merge qualifier in META.");<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      return false;<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return cleanMergeRegion(region, mergeRegions.getFirst(),<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        mergeRegions.getSecond());<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
-<span class="sourceLineNo">437</span>}<a name="line.437"></a>
+<span class="sourceLineNo">217</span>        LOG.debug("CatalogJanitor already running");<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        return 0;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      Triple&lt;Integer, Map&lt;HRegionInfo, Result&gt;, Map&lt;HRegionInfo, Result&gt;&gt; scanTriple =<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        getMergedRegionsAndSplitParents();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      int count = scanTriple.getFirst();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>       * clean merge regions first<a name="line.224"></a>
+<span class="sourceLineNo">225</span>       */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      int mergeCleaned = 0;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      Map&lt;HRegionInfo, Result&gt; mergedRegions = scanTriple.getSecond();<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      for (Map.Entry&lt;HRegionInfo, Result&gt; e : mergedRegions.entrySet()) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        PairOfSameType&lt;HRegionInfo&gt; p = MetaTableAccessor.getMergeRegions(e.getValue());<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        HRegionInfo regionA = p.getFirst();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        HRegionInfo regionB = p.getSecond();<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        if (regionA == null || regionB == null) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>          LOG.warn("Unexpected references regionA="<a name="line.233"></a>
+<span class="sourceLineNo">234</span>              + (regionA == null ? "null" : regionA.getRegionNameAsString())<a name="line.234"></a>
+<span class="sourceLineNo">235</span>              + ",regionB="<a name="line.235"></a>
+<span class="sourceLineNo">236</span>              + (regionB == null ? "null" : regionB.getRegionNameAsString())<a name="line.236"></a>
+<span class="sourceLineNo">237</span>              + " in merged region " + e.getKey().getRegionNameAsString());<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        } else {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          if (cleanMergeRegion(e.getKey(), regionA, regionB)) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>            mergeCleaned++;<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          }<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      }<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      /**<a name="line.244"></a>
+<span class="sourceLineNo">245</span>       * clean split parents<a name="line.245"></a>
+<span class="sourceLineNo">246</span>       */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      Map&lt;HRegionInfo, Result&gt; splitParents = scanTriple.getThird();<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>      // Now work on our list of found parents. See if any we can clean up.<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      int splitCleaned = 0;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      // regions whose parents are still around<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      HashSet&lt;String&gt; parentNotCleaned = new HashSet&lt;String&gt;();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      for (Map.Entry&lt;HRegionInfo, Result&gt; e : splitParents.entrySet()) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        if (!parentNotCleaned.contains(e.getKey().getEncodedName()) &amp;&amp;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>            cleanParent(e.getKey(), e.getValue())) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          splitCleaned++;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        } else {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          // We could not clean the parent, so it's daughters should not be<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          // cleaned either (HBASE-6160)<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          PairOfSameType&lt;HRegionInfo&gt; daughters =<a name="line.260"></a>
+<span class="sourceLineNo">261</span>              MetaTableAccessor.getDaughterRegions(e.getValue());<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          parentNotCleaned.add(daughters.getFirst().getEncodedName());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          parentNotCleaned.add(daughters.getSecond().getEncodedName());<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>      if ((mergeCleaned + splitCleaned) != 0) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        LOG.info("Scanned " + count + " catalog row(s), gc'd " + mergeCleaned<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            + " unreferenced merged region(s) and " + splitCleaned<a name="line.268"></a>
+<span class="sourceLineNo">269</span>            + " unreferenced parent region(s)");<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      } else if (LOG.isTraceEnabled()) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        LOG.trace("Scanned " + count + " catalog row(s), gc'd " + mergeCleaned<a name="line.271"></a>
+<span class="sourceLineNo">272</span>            + " unreferenced merged region(s) and " + splitCleaned<a name="line.272"></a>
+<span class="sourceLineNo">273</span>            + " unreferenced parent region(s)");<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      return mergeCleaned + splitCleaned;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    } finally {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      alreadyRunning.set(false);<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>  /**<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * Compare HRegionInfos in a way that has split parents sort BEFORE their<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * daughters.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  static class SplitParentFirstComparator implements Comparator&lt;HRegionInfo&gt; {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    Comparator&lt;byte[]&gt; rowEndKeyComparator = new Bytes.RowEndKeyComparator();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    @Override<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    public int compare(HRegionInfo left, HRegionInfo right) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      // This comparator differs from the one HRegionInfo in that it sorts<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      // parent before daughters.<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      if (left == null) return -1;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      if (right == null) return 1;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      // Same table name.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      int result = left.getTable().compareTo(right.getTable());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (result != 0) return result;<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      // Compare start keys.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      result = Bytes.compareTo(left.getStartKey(), right.getStartKey());<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      if (result != 0) return result;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      // Compare end keys, but flip the operands so parent comes first<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      result = rowEndKeyComparator.compare(right.getEndKey(), left.getEndKey());<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>      return result;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>  /**<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * If daughters no longer hold reference to the parents, delete the parent.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   * @param parent HRegionInfo of split offlined parent<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   * @param rowContent Content of &lt;code&gt;parent&lt;/code&gt; row in<a name="line.309"></a>
+<span class="sourceLineNo">310</span>   * &lt;code&gt;metaRegionName&lt;/code&gt;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * @return True if we removed &lt;code&gt;parent&lt;/code&gt; from meta table and from<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * the filesystem.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * @throws IOException<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  boolean cleanParent(final HRegionInfo parent, Result rowContent)<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  throws IOException {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    boolean result = false;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    // Check whether it is a merged region and not clean reference<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    // No necessary to check MERGEB_QUALIFIER because these two qualifiers will<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    // be inserted/deleted together<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    if (rowContent.getValue(HConstants.CATALOG_FAMILY,<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        HConstants.MERGEA_QUALIFIER) != null) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      // wait cleaning merge region first<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      return result;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    // Run checks on each daughter split.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    PairOfSameType&lt;HRegionInfo&gt; daughters = MetaTableAccessor.getDaughterRegions(rowContent);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    Pair&lt;Boolean, Boolean&gt; a = checkDaughterInFs(parent, daughters.getFirst());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Pair&lt;Boolean, Boolean&gt; b = checkDaughterInFs(parent, daughters.getSecond());<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    if (hasNoReferences(a) &amp;&amp; hasNoReferences(b)) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      LOG.debug("Deleting region " + parent.getRegionNameAsString() +<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        " because daughter splits no longer hold references");<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      if (LOG.isTraceEnabled()) LOG.trace("Archiving parent region: " + parent);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      HFileArchiver.archiveRegion(this.services.getConfiguration(), fs, parent);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      MetaTableAccessor.deleteRegion(this.connection, parent);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      result = true;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    return result;<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>  /**<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * @param p A pair where the first boolean says whether or not the daughter<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * region directory exists in the filesystem and then the second boolean says<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * whether the daughter has references to the parent.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return True the passed &lt;code&gt;p&lt;/code&gt; signifies no references.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   */<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private boolean hasNoReferences(final Pair&lt;Boolean, Boolean&gt; p) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    return !p.getFirst() || !p.getSecond();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>  /**<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   * Checks if a daughter region -- either splitA or splitB -- still holds<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * references to parent.<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param parent Parent region<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @param daughter Daughter region<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @return A pair where the first boolean says whether or not the daughter<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * region directory exists in the filesystem and then the second boolean says<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * whether the daughter has references to the parent.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * @throws IOException<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   */<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  Pair&lt;Boolean, Boolean&gt; checkDaughterInFs(final HRegionInfo parent, final HRegionInfo daughter)<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  throws IOException {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    if (daughter == null)  {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      return new Pair&lt;Boolean, Boolean&gt;(Boolean.FALSE, Boolean.FALSE);<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>    FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    Path rootdir = this.services.getMasterFileSystem().getRootDir();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    Path tabledir = FSUtils.getTableDir(rootdir, daughter.getTable());<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    Path daughterRegionDir = new Path(tabledir, daughter.getEncodedName());<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>    HRegionFileSystem regionFs = null;<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    try {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      if (!FSUtils.isExists(fs, daughterRegionDir)) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        return new Pair&lt;Boolean, Boolean&gt;(Boolean.FALSE, Boolean.FALSE);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    } catch (IOException ioe) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      LOG.warn("Error trying to determine if daughter region exists, " +<a name="line.381"></a>
+<span class="sourceLineNo">382</span>               "assuming exists and has references", ioe);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      return new Pair&lt;Boolean, Boolean&gt;(Boolean.TRUE, Boolean.TRUE);<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>    try {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.387"></a>
+<span class="sourceLineNo">388</span>          this.services.getConfiguration(), fs, tabledir, daughter, true);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    } catch (IOException e) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      LOG.warn("Error trying to determine referenced files from : " + daughter.getEncodedName()<a name="line.390"></a>
+<span class="sourceLineNo">391</span>          + ", to: " + parent.getEncodedName() + " assuming has references", e);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      return new Pair&lt;Boolean, Boolean&gt;(Boolean.TRUE, Boolean.TRUE);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
+<span class="sourceLineNo">394</span><a name="line.394"></a>
+<span class="sourceLineNo">395</span>    boolean references = false;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    HTableDescriptor parentDescriptor = getTableDescriptor(parent.getTable());<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    for (HColumnDescriptor family: parentDescriptor.getFamilies()) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      if ((references = regionFs.hasReferences(family.getNameAsString()))) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        break;<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>    return new Pair&lt;Boolean, Boolean&gt;(Boolean.TRUE, Boolean.valueOf(references));<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>  private HTableDescriptor getTableDescriptor(final TableName tableName)<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      throws FileNotFoundException, IOException {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    return this.services.getTableDescriptors().get(tableName);<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>   * Checks if the specified region has merge qualifiers, if so, try to clean<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * them<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   * @param region<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   * @return true if the specified region doesn't have merge qualifier now<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * @throws IOException<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public boolean cleanMergeQualifier(final HRegionInfo region)<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      throws IOException {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // Get merge regions if it is a merged region and already has merge<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    // qualifier<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    Pair&lt;HRegionInfo, HRegionInfo&gt; mergeRegions = MetaTableAccessor<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        .getRegionsFromMergeQualifier(this.services.getConnection(),<a name="line.422"></a>
+<span class="sourceLineNo">423</span>          region.getRegionName());<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    if (mergeRegions == null<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        || (mergeRegions.getFirst() == null &amp;&amp; mergeRegions.getSecond() == null)) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      // It doesn't have merge qualifier, no need to clean<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      return true;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    // It shouldn't happen, we must insert/delete these two qualifiers together<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    if (mergeRegions.getFirst() == null || mergeRegions.getSecond() == null) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      LOG.error("Merged region " + region.getRegionNameAsString()<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          + " has only one merge qualifier in META.");<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      return false;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    }<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    return cleanMergeRegion(region, mergeRegions.getFirst(),<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        mergeRegions.getSecond());<a name="line.436"></a>
+<span class="sourceLineNo">437</span>  }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>}<a name="line.438"></a>
 
 
 


[37/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html
index c5c052a..036de4d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html
@@ -7,1999 +7,1998 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span><a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver.wal;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.wal.DefaultWALProvider.WAL_FILE_NAME_DELIMITER;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.FileNotFoundException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.io.InterruptedIOException;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.io.OutputStream;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.lang.management.ManagementFactory;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.lang.management.MemoryUsage;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.lang.reflect.InvocationTargetException;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.net.URLEncoder;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.ArrayList;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Arrays;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Comparator;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.List;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Map;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.NavigableMap;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.BlockingQueue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.CountDownLatch;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.ExecutionException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.commons.logging.Log;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.commons.logging.LogFactory;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.conf.Configuration;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileStatus;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FileSystem;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.Path;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.PathFilter;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.Cell;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HConstants;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.io.util.HeapMemorySizeUtil;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.DrainBarrier;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.wal.DefaultWALProvider;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.wal.WALPrettyPrinter;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.wal.WALProvider.Writer;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hdfs.DFSOutputStream;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hdfs.client.HdfsDataOutputStream;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.util.StringUtils;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.htrace.NullScope;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.htrace.Span;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.htrace.Trace;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.htrace.TraceScope;<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>import com.google.common.annotations.VisibleForTesting;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import com.lmax.disruptor.BlockingWaitStrategy;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import com.lmax.disruptor.EventHandler;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import com.lmax.disruptor.ExceptionHandler;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.lmax.disruptor.LifecycleAware;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.lmax.disruptor.TimeoutException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.lmax.disruptor.dsl.Disruptor;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import com.lmax.disruptor.dsl.ProducerType;<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> * Implementation of {@link WAL} to go against {@link FileSystem}; i.e. keep WALs in HDFS.<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * Only one WAL is ever being written at a time.  When a WAL hits a configured maximum size,<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * it is rolled.  This is done internal to the implementation.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * &lt;p&gt;As data is flushed from the MemStore to other on-disk structures (files sorted by<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * key, hfiles), a WAL becomes obsolete. We can let go of all the log edits/entries for a given<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * HRegion-sequence id.  A bunch of work in the below is done keeping account of these region<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * sequence ids -- what is flushed out to hfiles, and what is yet in WAL and in memory only.<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * &lt;p&gt;It is only practical to delete entire files. Thus, we delete an entire on-disk file<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * &lt;code&gt;F&lt;/code&gt; when all of the edits in &lt;code&gt;F&lt;/code&gt; have a log-sequence-id that's older<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * (smaller) than the most-recent flush.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * &lt;p&gt;To read an WAL, call {@link WALFactory#createReader(org.apache.hadoop.fs.FileSystem,<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * org.apache.hadoop.fs.Path)}.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * &lt;h2&gt;Failure Semantic&lt;/h2&gt;<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * If an exception on append or sync, roll the WAL because the current WAL is now a lame duck;<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * any more appends or syncs will fail also with the same original exception. If we have made<a name="line.120"></a>
-<span class="sourceLineNo">121</span> * successful appends to the WAL and we then are unable to sync them, our current semantic is to<a name="line.121"></a>
-<span class="sourceLineNo">122</span> * return error to the client that the appends failed but also to abort the current context,<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * usually the hosting server. We need to replay the WALs. TODO: Change this semantic. A roll of<a name="line.123"></a>
-<span class="sourceLineNo">124</span> * WAL may be sufficient as long as we have flagged client that the append failed. TODO:<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * replication may pick up these last edits though they have been marked as failed append (Need to<a name="line.125"></a>
-<span class="sourceLineNo">126</span> * keep our own file lengths, not rely on HDFS).<a name="line.126"></a>
-<span class="sourceLineNo">127</span> */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>@InterfaceAudience.Private<a name="line.128"></a>
-<span class="sourceLineNo">129</span>public class FSHLog implements WAL {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  // IMPLEMENTATION NOTES:<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  //<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  // At the core is a ring buffer.  Our ring buffer is the LMAX Disruptor.  It tries to<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  // minimize synchronizations and volatile writes when multiple contending threads as is the case<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // here appending and syncing on a single WAL.  The Disruptor is configured to handle multiple<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  // producers but it has one consumer only (the producers in HBase are IPC Handlers calling append<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  // and then sync).  The single consumer/writer pulls the appends and syncs off the ring buffer.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  // When a handler calls sync, it is given back a future. The producer 'blocks' on the future so<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  // it does not return until the sync completes.  The future is passed over the ring buffer from<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  // the producer/handler to the consumer thread where it does its best to batch up the producer<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  // syncs so one WAL sync actually spans multiple producer sync invocations.  How well the<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  // batching works depends on the write rate; i.e. we tend to batch more in times of<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  // high writes/syncs.<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  //<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  // Calls to append now also wait until the append has been done on the consumer side of the<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  // disruptor.  We used to not wait but it makes the implemenation easier to grok if we have<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  // the region edit/sequence id after the append returns.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  //<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  // TODO: Handlers need to coordinate appending AND syncing.  Can we have the threads contend<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  // once only?  Probably hard given syncs take way longer than an append.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  //<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  // The consumer threads pass the syncs off to multiple syncing threads in a round robin fashion<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  // to ensure we keep up back-to-back FS sync calls (FS sync calls are the long poll writing the<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  // WAL).  The consumer thread passes the futures to the sync threads for it to complete<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  // the futures when done.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  //<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  // The 'sequence' in the below is the sequence of the append/sync on the ringbuffer.  It<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  // acts as a sort-of transaction id.  It is always incrementing.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  //<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  // The RingBufferEventHandler class hosts the ring buffer consuming code.  The threads that<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  // do the actual FS sync are implementations of SyncRunner.  SafePointZigZagLatch is a<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  // synchronization class used to halt the consumer at a safe point --  just after all outstanding<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  // syncs and appends have completed -- so the log roller can swap the WAL out under it.<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private static final Log LOG = LogFactory.getLog(FSHLog.class);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  private static final int DEFAULT_SLOW_SYNC_TIME_MS = 100; // in ms<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>   * The nexus at which all incoming handlers meet.  Does appends and sync with an ordering.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * Appends and syncs are each put on the ring which means handlers need to<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * smash up against the ring twice (can we make it once only? ... maybe not since time to append<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * is so different from time to sync and sometimes we don't want to sync or we want to async<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * the sync).  The ring is where we make sure of our ordering and it is also where we do<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * batching up of handler sync calls.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private final Disruptor&lt;RingBufferTruck&gt; disruptor;<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>   * An executorservice that runs the disruptor AppendEventHandler append executor.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  private final ExecutorService appendExecutor;<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * This fellow is run by the above appendExecutor service but it is all about batching up appends<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * and syncs; it may shutdown without cleaning out the last few appends or syncs.  To guard<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * against this, keep a reference to this handler and do explicit close on way out to make sure<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * all flushed out before we exit.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   */<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  private final RingBufferEventHandler ringBufferEventHandler;<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>   * Map of {@link SyncFuture}s keyed by Handler objects.  Used so we reuse SyncFutures.<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * TODO: Reus FSWALEntry's rather than create them anew each time as we do SyncFutures here.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * TODO: Add a FSWalEntry and SyncFuture as thread locals on handlers rather than have them<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * get them from this Map?<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private final Map&lt;Thread, SyncFuture&gt; syncFuturesByHandler;<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * The highest known outstanding unsync'd WALEdit sequence number where sequence number is the<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * ring buffer sequence.  Maintained by the ring buffer consumer.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   */<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  private volatile long highestUnsyncedSequence = -1;<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>   * Updated to the ring buffer sequence of the last successful sync call.  This can be less than<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * {@link #highestUnsyncedSequence} for case where we have an append where a sync has not yet<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * come in for it.  Maintained by the syncing threads.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  private final AtomicLong highestSyncedSequence = new AtomicLong(0);<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>   * file system instance<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  protected final FileSystem fs;<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>   * WAL directory, where all WAL files would be placed.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   */<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private final Path fullPathLogDir;<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * dir path where old logs are kept.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private final Path fullPathArchiveDir;<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * Matches just those wal files that belong to this wal instance.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   */<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  private final PathFilter ourFiles;<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>   * Prefix of a WAL file, usually the region server name it is hosted on.<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  private final String logFilePrefix;<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>   * Suffix included on generated wal file names<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   */<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  private final String logFileSuffix;<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * Prefix used when checking for wal membership.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  private final String prefixPathStr;<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  private final WALCoprocessorHost coprocessorHost;<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>   * conf object<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  protected final Configuration conf;<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  /** Listeners that are called on WAL events. */<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  private final List&lt;WALActionsListener&gt; listeners =<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    new CopyOnWriteArrayList&lt;WALActionsListener&gt;();<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  @Override<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public void registerWALActionsListener(final WALActionsListener listener) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    this.listeners.add(listener);<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>  @Override<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  public boolean unregisterWALActionsListener(final WALActionsListener listener) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    return this.listeners.remove(listener);<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>  @Override<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public WALCoprocessorHost getCoprocessorHost() {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    return coprocessorHost;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  /**<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * FSDataOutputStream associated with the current SequenceFile.writer<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   */<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  private FSDataOutputStream hdfs_out;<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span>  // All about log rolling if not enough replicas outstanding.<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  // Minimum tolerable replicas, if the actual value is lower than it, rollWriter will be triggered<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  private final int minTolerableReplication;<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  private final int slowSyncNs;<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  // If live datanode count is lower than the default replicas value,<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  // RollWriter will be triggered in each sync(So the RollWriter will be<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // triggered one by one in a short time). Using it as a workaround to slow<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  // down the roll frequency triggered by checkLowReplication().<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  private final AtomicInteger consecutiveLogRolls = new AtomicInteger(0);<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>  private final int lowReplicationRollLimit;<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  // If consecutiveLogRolls is larger than lowReplicationRollLimit,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  // then disable the rolling in checkLowReplication().<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // Enable it if the replications recover.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private volatile boolean lowReplicationRollEnabled = true;<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>   * Class that does accounting of sequenceids in WAL subsystem. Holds oldest outstanding<a name="line.299"></a>
-<span class="sourceLineNo">300</span>   * sequence id as yet not flushed as well as the most recent edit sequence id appended to the<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   * WAL. Has facility for answering questions such as "Is it safe to GC a WAL?".<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   */<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  private SequenceIdAccounting sequenceIdAccounting = new SequenceIdAccounting();<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>   * Current log file.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   */<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  volatile Writer writer;<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>  /** The barrier used to ensure that close() waits for all log rolls and flushes to finish. */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  private final DrainBarrier closeBarrier = new DrainBarrier();<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  /**<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * This lock makes sure only one log roll runs at a time. Should not be taken while any other<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * lock is held. We don't just use synchronized because that results in bogus and tedious<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * findbugs warning when it thinks synchronized controls writer thread safety.  It is held when<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * we are actually rolling the log.  It is checked when we are looking to see if we should roll<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * the log or not.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private final ReentrantLock rollWriterLock = new ReentrantLock(true);<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  private volatile boolean closed = false;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private final AtomicBoolean shutdown = new AtomicBoolean(false);<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // The timestamp (in ms) when the log file was created.<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private final AtomicLong filenum = new AtomicLong(-1);<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // Number of transactions in the current Wal.<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private final AtomicInteger numEntries = new AtomicInteger(0);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // If &gt; than this size, roll the log.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private final long logrollsize;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  /**<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * The total size of wal<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  private AtomicLong totalLogSize = new AtomicLong(0);<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  /*<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * If more than this many logs, force flush of oldest region to oldest edit<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * goes to disk.  If too many and we crash, then will take forever replaying.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * Keep the number of logs tidy.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private final int maxLogs;<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /** Number of log close errors tolerated before we abort */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private final int closeErrorsTolerated;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  private final AtomicInteger closeErrorCount = new AtomicInteger();<a name="line.349"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.regionserver.wal;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.wal.DefaultWALProvider.WAL_FILE_NAME_DELIMITER;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.FileNotFoundException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.InterruptedIOException;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.OutputStream;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.management.ManagementFactory;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.management.MemoryUsage;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.InvocationTargetException;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.URLEncoder;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.ArrayList;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.Arrays;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.Comparator;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.List;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Map;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.NavigableMap;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Set;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.concurrent.BlockingQueue;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.concurrent.CountDownLatch;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.concurrent.ExecutionException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ExecutorService;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.Executors;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.PathFilter;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HConstants;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.io.util.HeapMemorySizeUtil;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.DrainBarrier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.wal.DefaultWALProvider;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.wal.WALPrettyPrinter;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.wal.WALProvider.Writer;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hdfs.DFSOutputStream;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hdfs.client.HdfsDataOutputStream;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.util.StringUtils;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.htrace.NullScope;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.htrace.Span;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.htrace.Trace;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.htrace.TraceScope;<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>import com.google.common.annotations.VisibleForTesting;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import com.lmax.disruptor.BlockingWaitStrategy;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import com.lmax.disruptor.EventHandler;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import com.lmax.disruptor.ExceptionHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import com.lmax.disruptor.LifecycleAware;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import com.lmax.disruptor.TimeoutException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.lmax.disruptor.dsl.Disruptor;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.lmax.disruptor.dsl.ProducerType;<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> * Implementation of {@link WAL} to go against {@link FileSystem}; i.e. keep WALs in HDFS.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * Only one WAL is ever being written at a time.  When a WAL hits a configured maximum size,<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * it is rolled.  This is done internal to the implementation.<a name="line.103"></a>
+<span class="sourceLineNo">104</span> *<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * &lt;p&gt;As data is flushed from the MemStore to other on-disk structures (files sorted by<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * key, hfiles), a WAL becomes obsolete. We can let go of all the log edits/entries for a given<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * HRegion-sequence id.  A bunch of work in the below is done keeping account of these region<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * sequence ids -- what is flushed out to hfiles, and what is yet in WAL and in memory only.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> *<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * &lt;p&gt;It is only practical to delete entire files. Thus, we delete an entire on-disk file<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * &lt;code&gt;F&lt;/code&gt; when all of the edits in &lt;code&gt;F&lt;/code&gt; have a log-sequence-id that's older<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * (smaller) than the most-recent flush.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * &lt;p&gt;To read an WAL, call {@link WALFactory#createReader(org.apache.hadoop.fs.FileSystem,<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * org.apache.hadoop.fs.Path)}.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * &lt;h2&gt;Failure Semantic&lt;/h2&gt;<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * If an exception on append or sync, roll the WAL because the current WAL is now a lame duck;<a name="line.118"></a>
+<span class="sourceLineNo">119</span> * any more appends or syncs will fail also with the same original exception. If we have made<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * successful appends to the WAL and we then are unable to sync them, our current semantic is to<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * return error to the client that the appends failed but also to abort the current context,<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * usually the hosting server. We need to replay the WALs. TODO: Change this semantic. A roll of<a name="line.122"></a>
+<span class="sourceLineNo">123</span> * WAL may be sufficient as long as we have flagged client that the append failed. TODO:<a name="line.123"></a>
+<span class="sourceLineNo">124</span> * replication may pick up these last edits though they have been marked as failed append (Need to<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * keep our own file lengths, not rely on HDFS).<a name="line.125"></a>
+<span class="sourceLineNo">126</span> */<a name="line.126"></a>
+<span class="sourceLineNo">127</span>@InterfaceAudience.Private<a name="line.127"></a>
+<span class="sourceLineNo">128</span>public class FSHLog implements WAL {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  // IMPLEMENTATION NOTES:<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  //<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // At the core is a ring buffer.  Our ring buffer is the LMAX Disruptor.  It tries to<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  // minimize synchronizations and volatile writes when multiple contending threads as is the case<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  // here appending and syncing on a single WAL.  The Disruptor is configured to handle multiple<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  // producers but it has one consumer only (the producers in HBase are IPC Handlers calling append<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  // and then sync).  The single consumer/writer pulls the appends and syncs off the ring buffer.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  // When a handler calls sync, it is given back a future. The producer 'blocks' on the future so<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  // it does not return until the sync completes.  The future is passed over the ring buffer from<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  // the producer/handler to the consumer thread where it does its best to batch up the producer<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  // syncs so one WAL sync actually spans multiple producer sync invocations.  How well the<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  // batching works depends on the write rate; i.e. we tend to batch more in times of<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  // high writes/syncs.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  //<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  // Calls to append now also wait until the append has been done on the consumer side of the<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  // disruptor.  We used to not wait but it makes the implemenation easier to grok if we have<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  // the region edit/sequence id after the append returns.<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  //<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  // TODO: Handlers need to coordinate appending AND syncing.  Can we have the threads contend<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  // once only?  Probably hard given syncs take way longer than an append.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  //<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  // The consumer threads pass the syncs off to multiple syncing threads in a round robin fashion<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  // to ensure we keep up back-to-back FS sync calls (FS sync calls are the long poll writing the<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  // WAL).  The consumer thread passes the futures to the sync threads for it to complete<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  // the futures when done.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  //<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  // The 'sequence' in the below is the sequence of the append/sync on the ringbuffer.  It<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  // acts as a sort-of transaction id.  It is always incrementing.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  //<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  // The RingBufferEventHandler class hosts the ring buffer consuming code.  The threads that<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  // do the actual FS sync are implementations of SyncRunner.  SafePointZigZagLatch is a<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  // synchronization class used to halt the consumer at a safe point --  just after all outstanding<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  // syncs and appends have completed -- so the log roller can swap the WAL out under it.<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  private static final Log LOG = LogFactory.getLog(FSHLog.class);<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private static final int DEFAULT_SLOW_SYNC_TIME_MS = 100; // in ms<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>   * The nexus at which all incoming handlers meet.  Does appends and sync with an ordering.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * Appends and syncs are each put on the ring which means handlers need to<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * smash up against the ring twice (can we make it once only? ... maybe not since time to append<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * is so different from time to sync and sometimes we don't want to sync or we want to async<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * the sync).  The ring is where we make sure of our ordering and it is also where we do<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * batching up of handler sync calls.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   */<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private final Disruptor&lt;RingBufferTruck&gt; disruptor;<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  /**<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * An executorservice that runs the disruptor AppendEventHandler append executor.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   */<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  private final ExecutorService appendExecutor;<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>   * This fellow is run by the above appendExecutor service but it is all about batching up appends<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * and syncs; it may shutdown without cleaning out the last few appends or syncs.  To guard<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * against this, keep a reference to this handler and do explicit close on way out to make sure<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * all flushed out before we exit.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  private final RingBufferEventHandler ringBufferEventHandler;<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * Map of {@link SyncFuture}s keyed by Handler objects.  Used so we reuse SyncFutures.<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * TODO: Reus FSWALEntry's rather than create them anew each time as we do SyncFutures here.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * TODO: Add a FSWalEntry and SyncFuture as thread locals on handlers rather than have them<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * get them from this Map?<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  private final Map&lt;Thread, SyncFuture&gt; syncFuturesByHandler;<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>  /**<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * The highest known outstanding unsync'd WALEdit sequence number where sequence number is the<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * ring buffer sequence.  Maintained by the ring buffer consumer.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   */<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  private volatile long highestUnsyncedSequence = -1;<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Updated to the ring buffer sequence of the last successful sync call.  This can be less than<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * {@link #highestUnsyncedSequence} for case where we have an append where a sync has not yet<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * come in for it.  Maintained by the syncing threads.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   */<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  private final AtomicLong highestSyncedSequence = new AtomicLong(0);<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>   * file system instance<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  protected final FileSystem fs;<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>   * WAL directory, where all WAL files would be placed.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private final Path fullPathLogDir;<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>   * dir path where old logs are kept.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   */<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private final Path fullPathArchiveDir;<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  /**<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   * Matches just those wal files that belong to this wal instance.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private final PathFilter ourFiles;<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>   * Prefix of a WAL file, usually the region server name it is hosted on.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  private final String logFilePrefix;<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /**<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * Suffix included on generated wal file names<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   */<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  private final String logFileSuffix;<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  /**<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Prefix used when checking for wal membership.<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   */<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  private final String prefixPathStr;<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private final WALCoprocessorHost coprocessorHost;<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>   * conf object<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  protected final Configuration conf;<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /** Listeners that are called on WAL events. */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private final List&lt;WALActionsListener&gt; listeners =<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    new CopyOnWriteArrayList&lt;WALActionsListener&gt;();<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>  @Override<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public void registerWALActionsListener(final WALActionsListener listener) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    this.listeners.add(listener);<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>  @Override<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  public boolean unregisterWALActionsListener(final WALActionsListener listener) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    return this.listeners.remove(listener);<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>  @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public WALCoprocessorHost getCoprocessorHost() {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    return coprocessorHost;<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>  /**<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   * FSDataOutputStream associated with the current SequenceFile.writer<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  private FSDataOutputStream hdfs_out;<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  // All about log rolling if not enough replicas outstanding.<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>  // Minimum tolerable replicas, if the actual value is lower than it, rollWriter will be triggered<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  private final int minTolerableReplication;<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  private final int slowSyncNs;<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  // If live datanode count is lower than the default replicas value,<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  // RollWriter will be triggered in each sync(So the RollWriter will be<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  // triggered one by one in a short time). Using it as a workaround to slow<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // down the roll frequency triggered by checkLowReplication().<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private final AtomicInteger consecutiveLogRolls = new AtomicInteger(0);<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>  private final int lowReplicationRollLimit;<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  // If consecutiveLogRolls is larger than lowReplicationRollLimit,<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  // then disable the rolling in checkLowReplication().<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  // Enable it if the replications recover.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  private volatile boolean lowReplicationRollEnabled = true;<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  /**<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * Class that does accounting of sequenceids in WAL subsystem. Holds oldest outstanding<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * sequence id as yet not flushed as well as the most recent edit sequence id appended to the<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * WAL. Has facility for answering questions such as "Is it safe to GC a WAL?".<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private SequenceIdAccounting sequenceIdAccounting = new SequenceIdAccounting();<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Current log file.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  volatile Writer writer;<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>  /** The barrier used to ensure that close() waits for all log rolls and flushes to finish. */<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  private final DrainBarrier closeBarrier = new DrainBarrier();<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>  /**<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * This lock makes sure only one log roll runs at a time. Should not be taken while any other<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * lock is held. We don't just use synchronized because that results in bogus and tedious<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * findbugs warning when it thinks synchronized controls writer thread safety.  It is held when<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * we are actually rolling the log.  It is checked when we are looking to see if we should roll<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * the log or not.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   */<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private final ReentrantLock rollWriterLock = new ReentrantLock(true);<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  private volatile boolean closed = false;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private final AtomicBoolean shutdown = new AtomicBoolean(false);<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // The timestamp (in ms) when the log file was created.<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  private final AtomicLong filenum = new AtomicLong(-1);<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // Number of transactions in the current Wal.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private final AtomicInteger numEntries = new AtomicInteger(0);<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // If &gt; than this size, roll the log.<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  private final long logrollsize;<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   * The total size of wal<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   */<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  private AtomicLong totalLogSize = new AtomicLong(0);<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>   * If more than this many logs, force flush of oldest region to oldest edit<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * goes to disk.  If too many and we crash, then will take forever replaying.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * Keep the number of logs tidy.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  private final int maxLogs;<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>  /** Number of log close errors tolerated before we abort */<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private final int closeErrorsTolerated;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private final AtomicInteger closeErrorCount = new AtomicInteger();<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
 <span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  /**<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   * WAL Comparator; it compares the timestamp (log filenum), present in the log file name.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Throws an IllegalArgumentException if used to compare paths from different wals.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   */<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  final Comparator&lt;Path&gt; LOG_NAME_COMPARATOR = new Comparator&lt;Path&gt;() {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    @Override<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    public int compare(Path o1, Path o2) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      long t1 = getFileNumFromFileName(o1);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      long t2 = getFileNumFromFileName(o2);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      if (t1 == t2) return 0;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      return (t1 &gt; t2) ? 1 : -1;<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><a name="line.365"></a>
-<span class="sourceLineNo">366</span>  /**<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * Map of WAL log file to the latest sequence ids of all regions it has entries of.<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * The map is sorted by the log file creation timestamp (contained in the log file name).<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private NavigableMap&lt;Path, Map&lt;byte[], Long&gt;&gt; byWalRegionSequenceIds =<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    new ConcurrentSkipListMap&lt;Path, Map&lt;byte[], Long&gt;&gt;(LOG_NAME_COMPARATOR);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  /**<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * Exception handler to pass the disruptor ringbuffer.  Same as native implementation only it<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * logs using our logger instead of java native logger.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  static class RingBufferExceptionHandler implements ExceptionHandler {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    @Override<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    public void handleEventException(Throwable ex, long sequence, Object event) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      LOG.error("Sequence=" + sequence + ", event=" + event, ex);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      throw new RuntimeException(ex);<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 void handleOnStartException(Throwable ex) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      LOG.error(ex);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw new RuntimeException(ex);<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>    @Override<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    public void handleOnShutdownException(Throwable ex) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      LOG.error(ex);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      throw new RuntimeException(ex);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    }<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>  /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * Constructor.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   *<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @param fs filesystem handle<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param root path for stored and archived wals<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param logDir dir where wals are stored<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param conf configuration to use<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @throws IOException<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public FSHLog(final FileSystem fs, final Path root, final String logDir, final Configuration conf)<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      throws IOException {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    this(fs, root, logDir, HConstants.HREGION_OLDLOGDIR_NAME, conf, null, true, null, null);<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>  /**<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * Create an edit log at the given &lt;code&gt;dir&lt;/code&gt; location.<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   *<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * You should never have to load an existing log. If there is a log at<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * startup, it should have already been processed and deleted by the time the<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * WAL object is started up.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   *<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param fs filesystem handle<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @param rootDir path to where logs and oldlogs<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @param logDir dir where wals are stored<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * @param archiveDir dir where wals are archived<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * @param conf configuration to use<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param listeners Listeners on WAL events. Listeners passed here will<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * be registered before we do anything else; e.g. the<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * Constructor {@link #rollWriter()}.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * @param failIfWALExists If true IOException will be thrown if files related to this wal<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   *        already exist.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param prefix should always be hostname and port in distributed env and<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   *        it will be URL encoded before being used.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   *        If prefix is null, "wal" will be used<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @param suffix will be url encoded. null is treated as empty. non-empty must start with<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   *        {@link DefaultWALProvider#WAL_FILE_NAME_DELIMITER}<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @throws IOException<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  public FSHLog(final FileSystem fs, final Path rootDir, final String logDir,<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      final String archiveDir, final Configuration conf,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      final List&lt;WALActionsListener&gt; listeners,<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      final boolean failIfWALExists, final String prefix, final String suffix)<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      throws IOException {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    this.fs = fs;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    this.fullPathLogDir = new Path(rootDir, logDir);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    this.fullPathArchiveDir = new Path(rootDir, archiveDir);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    this.conf = conf;<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    if (!fs.exists(fullPathLogDir) &amp;&amp; !fs.mkdirs(fullPathLogDir)) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      throw new IOException("Unable to mkdir " + fullPathLogDir);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    if (!fs.exists(this.fullPathArchiveDir)) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      if (!fs.mkdirs(this.fullPathArchiveDir)) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        throw new IOException("Unable to mkdir " + this.fullPathArchiveDir);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // If prefix is null||empty then just name it wal<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    this.logFilePrefix =<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      prefix == null || prefix.isEmpty() ? "wal" : URLEncoder.encode(prefix, "UTF8");<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    // we only correctly differentiate suffices when numeric ones start with '.'<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    if (suffix != null &amp;&amp; !(suffix.isEmpty()) &amp;&amp; !(suffix.startsWith(WAL_FILE_NAME_DELIMITER))) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      throw new IllegalArgumentException("WAL suffix must start with '" + WAL_FILE_NAME_DELIMITER +<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          "' but instead was '" + suffix + "'");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    // Now that it exists, set the storage policy for the entire directory of wal files related to<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // this FSHLog instance<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    FSUtils.setStoragePolicy(fs, conf, this.fullPathLogDir, HConstants.WAL_STORAGE_POLICY,<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      HConstants.DEFAULT_WAL_STORAGE_POLICY);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    this.logFileSuffix = (suffix == null) ? "" : URLEncoder.encode(suffix, "UTF8");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.prefixPathStr = new Path(fullPathLogDir,<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        logFilePrefix + WAL_FILE_NAME_DELIMITER).toString();<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>    this.ourFiles = new PathFilter() {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      public boolean accept(final Path fileName) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        // The path should start with dir/&lt;prefix&gt; and end with our suffix<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        final String fileNameString = fileName.toString();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        if (!fileNameString.startsWith(prefixPathStr)) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          return false;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>        }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        if (logFileSuffix.isEmpty()) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          // in the case of the null suffix, we need to ensure the filename ends with a timestamp.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          return org.apache.commons.lang.StringUtils.isNumeric(<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              fileNameString.substring(prefixPathStr.length()));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        } else if (!fileNameString.endsWith(logFileSuffix)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>          return false;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        }<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        return true;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      }<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    };<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    if (failIfWALExists) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      final FileStatus[] walFiles = FSUtils.listStatus(fs, fullPathLogDir, ourFiles);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      if (null != walFiles &amp;&amp; 0 != walFiles.length) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        throw new IOException("Target WAL already exists within directory " + fullPathLogDir);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>    // Register listeners.  TODO: Should this exist anymore?  We have CPs?<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (listeners != null) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      for (WALActionsListener i: listeners) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        registerWALActionsListener(i);<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>    this.coprocessorHost = new WALCoprocessorHost(this, conf);<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>    // Get size to roll log at. Roll at 95% of HDFS block size so we avoid crossing HDFS blocks<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    // (it costs a little x'ing bocks)<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    final long blocksize = this.conf.getLong("hbase.regionserver.hlog.blocksize",<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        FSUtils.getDefaultBlockSize(this.fs, this.fullPathLogDir));<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    this.logrollsize =<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      (long)(blocksize * conf.getFloat("hbase.regionserver.logroll.multiplier", 0.95f));<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    <a name="line.511"></a>
-<span class="sourceLineNo">512</span>    float memstoreRatio = conf.getFloat(HeapMemorySizeUti

<TRUNCATED>

[28/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/HTestConst.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HTestConst.html b/testdevapidocs/org/apache/hadoop/hbase/HTestConst.html
index 6d153ce..caeffbb 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/HTestConst.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/HTestConst.html
@@ -36,7 +36,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/hadoop/hbase/HFilePerformanceEvaluation.UniformRandomSmallScan.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/hadoop/hbase/HTestConst.html" target="_top">Frames</a></li>
@@ -405,7 +405,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/hadoop/hbase/HFilePerformanceEvaluation.UniformRandomSmallScan.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/hadoop/hbase/HTestConst.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/IncrementPerformanceTest.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IncrementPerformanceTest.html b/testdevapidocs/org/apache/hadoop/hbase/IncrementPerformanceTest.html
new file mode 100644
index 0000000..10db5fe
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/IncrementPerformanceTest.html
@@ -0,0 +1,482 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>IncrementPerformanceTest (Apache HBase 2.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="IncrementPerformanceTest (Apache HBase 2.0.0-SNAPSHOT Test API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/IncrementPerformanceTest.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../org/apache/hadoop/hbase/HTestConst.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/hadoop/hbase/IncrementPerformanceTest.html" target="_top">Frames</a></li>
+<li><a href="IncrementPerformanceTest.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_detail">Method</a></li>
+</ul>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase</div>
+<h2 title="Class IncrementPerformanceTest" class="title">Class IncrementPerformanceTest</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.IncrementPerformanceTest</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>org.apache.hadoop.conf.Configurable, org.apache.hadoop.util.Tool</dd>
+</dl>
+<hr>
+<br>
+<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.51">IncrementPerformanceTest</a>
+extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements org.apache.hadoop.util.Tool</pre>
+<div class="block">Simple Increments Performance Test. Run this from main. It is to go against a cluster.
+ Presumption is the table exists already. Defaults are a zk ensemble of localhost:2181,
+ a tableName of 'tableName', a column famly name of 'columnFamilyName', with 80 threads by
+ default and 10000 increments per thread. To change any of these configs, pass -DNAME=VALUE as
+ in -DtableName="newTableName". It prints out configuration it is running with at the start and
+ on the end it prints out percentiles.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field_summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#COLUMN_FAMILY">COLUMN_FAMILY</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private org.apache.hadoop.conf.Configuration</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#conf">conf</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#DEFAULT_INCREMENT_COUNT">DEFAULT_INCREMENT_COUNT</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#DEFAULT_THREAD_COUNT">DEFAULT_THREAD_COUNT</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#INCREMENT_COUNT">INCREMENT_COUNT</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#LOG">LOG</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private com.codahale.metrics.MetricRegistry</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#metrics">metrics</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#QUALIFIER">QUALIFIER</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#TABLENAME">TABLENAME</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#THREAD_COUNT">THREAD_COUNT</a></strong></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#IncrementPerformanceTest()">IncrementPerformanceTest</a></strong>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>org.apache.hadoop.conf.Configuration</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#getConf()">getConf</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#main(java.lang.String[])">main</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#run(java.lang.String[])">run</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html#setConf(org.apache.hadoop.conf.Configuration)">setConf</a></strong>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang
 /Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field_detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="LOG">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.52">LOG</a></pre>
+</li>
+</ul>
+<a name="QUALIFIER">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>QUALIFIER</h4>
+<pre>private static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.53">QUALIFIER</a></pre>
+</li>
+</ul>
+<a name="conf">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>conf</h4>
+<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.54">conf</a></pre>
+</li>
+</ul>
+<a name="metrics">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>metrics</h4>
+<pre>private final&nbsp;com.codahale.metrics.MetricRegistry <a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.55">metrics</a></pre>
+</li>
+</ul>
+<a name="TABLENAME">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TABLENAME</h4>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.56">TABLENAME</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IncrementPerformanceTest.TABLENAME">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+<a name="COLUMN_FAMILY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>COLUMN_FAMILY</h4>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.57">COLUMN_FAMILY</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IncrementPerformanceTest.COLUMN_FAMILY">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+<a name="THREAD_COUNT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>THREAD_COUNT</h4>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.58">THREAD_COUNT</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IncrementPerformanceTest.THREAD_COUNT">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+<a name="DEFAULT_THREAD_COUNT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT_THREAD_COUNT</h4>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.59">DEFAULT_THREAD_COUNT</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IncrementPerformanceTest.DEFAULT_THREAD_COUNT">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+<a name="INCREMENT_COUNT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>INCREMENT_COUNT</h4>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.60">INCREMENT_COUNT</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IncrementPerformanceTest.INCREMENT_COUNT">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+<a name="DEFAULT_INCREMENT_COUNT">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DEFAULT_INCREMENT_COUNT</h4>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.61">DEFAULT_INCREMENT_COUNT</a></pre>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.IncrementPerformanceTest.DEFAULT_INCREMENT_COUNT">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="IncrementPerformanceTest()">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>IncrementPerformanceTest</h4>
+<pre><a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.63">IncrementPerformanceTest</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="run(java.lang.String[])">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>run</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.65">run</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><strong>Specified by:</strong></dt>
+<dd><code>run</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.util.Tool</code></dd>
+<dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+<a name="getConf()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getConf</h4>
+<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.116">getConf</a>()</pre>
+<dl>
+<dt><strong>Specified by:</strong></dt>
+<dd><code>getConf</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.conf.Configurable</code></dd>
+</dl>
+</li>
+</ul>
+<a name="setConf(org.apache.hadoop.conf.Configuration)">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setConf</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.121">setConf</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<dl>
+<dt><strong>Specified by:</strong></dt>
+<dd><code>setConf</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.conf.Configurable</code></dd>
+</dl>
+</li>
+</ul>
+<a name="main(java.lang.String[])">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>main</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/IncrementPerformanceTest.html#line.125">main</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/IncrementPerformanceTest.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../org/apache/hadoop/hbase/HTestConst.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/hadoop/hbase/IncrementPerformanceTest.html" target="_top">Frames</a></li>
+<li><a href="IncrementPerformanceTest.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_detail">Method</a></li>
+</ul>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html
index d130d91..e153a19 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html
@@ -35,7 +35,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/HTestConst.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
 <li><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -443,7 +443,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" t
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/HTestConst.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase"><span class="strong">Prev Class</span></a></li>
 <li><a href="../../../../org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
index fbd258b..e04d871 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
@@ -546,102 +546,106 @@
 <td class="colLast"><span class="strong">TestHTableMultiplexer.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestHTableMultiplexer.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><span class="strong">TestIncrementsFromClientSide.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestScannersFromClientSide.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestCloneSnapshotFromClient.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestCloneSnapshotFromClient.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestHTableMultiplexerFlushCache.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestAdmin2.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin2.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestUpdateConfiguration.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestUpdateConfiguration.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestMetaWithReplicas.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestFastFail.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestFastFail.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestMultiRespectsLimits.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestMultipleTimestamps.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestResultSizeEstimation.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestResultSizeEstimation.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestBlockEvictionFromClient.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestFromClientSide3.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide3.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestCheckAndMutate.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestCheckAndMutate.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestPutWithDelete.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestPutWithDelete.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestLeaseRenewal.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestSizeFailures.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestSizeFailures.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">AbstractTestShell.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/AbstractTestShell.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestClientOperationInterrupt.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestClientOperationInterrupt.html#util">util</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestSnapshotMetadata.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotMetadata.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestClientPushback.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestClientPushback.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestTableSnapshotScanner.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestMultiParallel.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestShortCircuitConnection.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestShortCircuitConnection.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestRpcControllerFactory.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestSnapshotFromClient.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClient.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
@@ -2116,189 +2120,193 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
-<td class="colLast"><span class="strong">TestRegionServerMetrics.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
+<td class="colLast"><span class="strong">TestRegionIncrement.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><span class="strong">TestRegionServerMetrics.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestStoreFileRefresherChore.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileRefresherChore.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestClusterId.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestClusterId.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestHRegionFileSystem.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionFileSystem.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestRemoveRegionMetrics.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRemoveRegionMetrics.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestStripeStoreFileManager.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStripeStoreFileManager.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestCompactSplitThread.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactSplitThread.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestRecoveredEdits.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestScanWithBloomError.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestJoinedScanners.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestJoinedScanners.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestStoreFileScannerWithTagCompression.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFileScannerWithTagCompression.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestWALLockup.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestRegionMergeTransaction.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestMultiColumnScanner.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestRegionMergeTransactionOnCluster.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestSplitLogWorker.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestStore.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStore.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestDefaultCompactSelection.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestCompactionState.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactionState.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestScanner.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScanner.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestRegionFavoredNodes.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestHRegionOnCluster.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionOnCluster.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestFailedAppendAndSync.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFailedAppendAndSync.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestColumnSeeking.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestColumnSeeking.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestHRegionReplayEvents.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestScannerHeartbeatMessages.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestBlocksScanned.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestBlocksScanned.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestCompoundBloomFilter.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestStoreFile.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreFile.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestScannerWithBulkload.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerWithBulkload.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestEncryptionRandomKeying.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestEncryptionRandomKeying.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestDeleteMobTable.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestDeleteMobTable.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestSplitTransactionOnCluster.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.html#TESTING_UTIL">TESTING_UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">EncodedSeekPerformanceTest.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/EncodedSeekPerformanceTest.html#testingUtility">testingUtility</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestSplitWalDataLoss.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestSplitWalDataLoss.html#testUtil">testUtil</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestRegionServerReportForDuty.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.html#testUtil">testUtil</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestServerCustomProtocol.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.html#util">util</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestFSErrorsExposed.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.html#util">util</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestMinorCompaction.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMinorCompaction.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestMajorCompaction.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMajorCompaction.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestGetClosestAtOrBefore.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestCorruptedRegionStoreFile.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCorruptedRegionStoreFile.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestScannerRetriableFailure.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestScannerRetriableFailure.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestMobStoreCompaction.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMobStoreCompaction.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestCompaction.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompaction.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestHRegionServerBulkLoad.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="strong">TestHeapMemoryManager.</span><code><strong><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.html#UTIL">UTIL</a></strong></code>&nbsp;</td>
 </tr>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html
index c09dcbf..8d5692a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5560">TestFromClientSide.ListAppender</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.html#line.5302">TestFromClientSide.ListAppender</a>
 extends org.apache.log4j.AppenderSkeleton</pre>
 </li>
 </ul>
@@ -224,7 +224,7 @@ extends org.apache.log4j.AppenderSkeleton</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>messages</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html#line.5561">messages</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html#line.5303">messages</a></pre>
 </li>
 </ul>
 </li>
@@ -241,7 +241,7 @@ extends org.apache.log4j.AppenderSkeleton</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestFromClientSide.ListAppender</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html#line.5560">TestFromClientSide.ListAppender</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html#line.5302">TestFromClientSide.ListAppender</a>()</pre>
 </li>
 </ul>
 </li>
@@ -258,7 +258,7 @@ extends org.apache.log4j.AppenderSkeleton</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>append</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html#line.5564">append</a>(org.apache.log4j.spi.LoggingEvent&nbsp;event)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html#line.5306">append</a>(org.apache.log4j.spi.LoggingEvent&nbsp;event)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>append</code>&nbsp;in class&nbsp;<code>org.apache.log4j.AppenderSkeleton</code></dd>
@@ -271,7 +271,7 @@ extends org.apache.log4j.AppenderSkeleton</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html#line.5569">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html#line.5311">close</a>()</pre>
 </li>
 </ul>
 <a name="requiresLayout()">
@@ -280,7 +280,7 @@ extends org.apache.log4j.AppenderSkeleton</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>requiresLayout</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html#line.5573">requiresLayout</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html#line.5315">requiresLayout</a>()</pre>
 </li>
 </ul>
 <a name="getMessages()">
@@ -289,7 +289,7 @@ extends org.apache.log4j.AppenderSkeleton</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMessages</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html#line.5577">getMessages</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide.ListAppender.html#line.5319">getMessages</a>()</pre>
 </li>
 </ul>
 </li>


[10/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html
index 9cddc0a..1240e3e 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.WrappedRowLock.html
@@ -27,8 +27,8 @@
 <span class="sourceLineNo">019</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam1;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam2;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertTrue;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertNull;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import static org.junit.Assert.fail;<a name="line.24"></a>
 <span class="sourceLineNo">025</span><a name="line.25"></a>
 <span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
@@ -61,19 +61,19 @@
 <span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.Get;<a name="line.54"></a>
 <span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Put;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Result;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.68"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Put;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.Result;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
 <span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>import org.junit.After;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import org.junit.Before;<a name="line.71"></a>
@@ -191,535 +191,539 @@
 <span class="sourceLineNo">183</span>   */<a name="line.183"></a>
 <span class="sourceLineNo">184</span>  @Test<a name="line.184"></a>
 <span class="sourceLineNo">185</span>  public void testIncrementMultiThreads() throws IOException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // run a with mixed column families (1 and 3 versions)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // create 25 threads, each will increment by its own quantity<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    int numThreads = 25;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    int incrementsPerThread = 1000;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    int expectedTotal = 0;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // create all threads<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      expectedTotal += (i * incrementsPerThread);<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>    // run all threads<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        all[i].join();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      } catch (InterruptedException e) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    assertICV(row, fam1, qual2, expectedTotal*2);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    assertICV(row, fam2, qual3, expectedTotal*3);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private void assertICV(byte [] row,<a name="line.221"></a>
-<span class="sourceLineNo">222</span>                         byte [] familiy,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>                         byte[] qualifier,<a name="line.223"></a>
-<span class="sourceLineNo">224</span>                         long amount) throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // run a get and see?<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    Get get = new Get(row);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    get.addColumn(familiy, qualifier);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    Result result = region.get(get);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    assertEquals(1, result.size());<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Cell kv = result.rawCells()[0];<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    assertEquals(amount, r);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      byte[] ... families)<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    byte[] ... families)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  throws IOException {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    int i=0;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    for(byte [] family : families) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      htd.addFamily(hcd);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * A thread that makes a few increment calls<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static class Incrementer extends Thread {<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final Region region;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final int numIncrements;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final int amount;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">186</span>    boolean fast = true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // run a with mixed column families (1 and 3 versions)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // Create 100 threads, each will increment by its own quantity. All 100 threads update the<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // same row over two column families.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    int numThreads = 100;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    int incrementsPerThread = 1000;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    int expectedTotal = 0;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // create all threads<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      expectedTotal += (i * incrementsPerThread);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    // run all threads<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      try {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        all[i].join();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      } catch (InterruptedException e) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal, fast);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    assertICV(row, fam1, qual2, expectedTotal*2, fast);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    assertICV(row, fam2, qual3, expectedTotal*3, fast);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private void assertICV(byte [] row,<a name="line.223"></a>
+<span class="sourceLineNo">224</span>                         byte [] familiy,<a name="line.224"></a>
+<span class="sourceLineNo">225</span>                         byte[] qualifier,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>                         long amount,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>                         boolean fast) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    // run a get and see?<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    Get get = new Get(row);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    if (fast) get.setIsolationLevel(IsolationLevel.READ_UNCOMMITTED);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    get.addColumn(familiy, qualifier);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Result result = region.get(get);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    assertEquals(1, result.size());<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    Cell kv = result.rawCells()[0];<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    assertEquals(amount, r);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      byte[] ... families)<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    throws IOException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    byte[] ... families)<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    int i=0;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    for(byte [] family : families) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      htd.addFamily(hcd);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<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 thread that makes increment calls always on the same row, this.row against two column<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * families on this row.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public static class Incrementer extends Thread {<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public Incrementer(Region region,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        int threadNumber, int amount, int numIncrements) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      super("incrementer." + threadNumber);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.region = region;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      this.numIncrements = numIncrements;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.amount = amount;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      setDaemon(true);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    public void run() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        try {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          Increment inc = new Increment(row);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          inc.addColumn(fam1, qual1, amount);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>          // verify: Make sure we only see completed increments<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          Get g = new Get(row);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          Result result = region.get(g);<a name="line.288"></a>
+<span class="sourceLineNo">266</span>    private final Region region;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    private final int numIncrements;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final int amount;<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>    public Incrementer(Region region, int threadNumber, int amount, int numIncrements) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      super("Incrementer." + threadNumber);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      this.region = region;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this.numIncrements = numIncrements;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this.amount = amount;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      setDaemon(true);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public void run() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        try {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          Increment inc = new Increment(row);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          inc.addColumn(fam1, qual1, amount);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          Result result = region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.288"></a>
 <span class="sourceLineNo">289</span>          if (result != null) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            assertTrue(result.getValue(fam1, qual1) != null);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            assertTrue(result.getValue(fam1, qual2) != null);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.293"></a>
-<span class="sourceLineNo">294</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } catch (IOException e) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          e.printStackTrace();<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>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  @Test<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  public void testAppendMultiThreads() throws IOException {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    // run a with mixed column families (1 and 3 versions)<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    int numThreads = 100;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int opsPerThread = 100;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    final byte[] val = new byte[]{1};<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    // create all threads<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        public void run() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            try {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>              Append a = new Append(row);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>              a.add(fam1, qual1, val);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              a.add(fam1, qual2, val);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>              a.add(fam2, qual3, val);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>              Get g = new Get(row);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              Result result = region.get(g);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.333"></a>
-<span class="sourceLineNo">334</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.334"></a>
-<span class="sourceLineNo">335</span>            } catch (IOException e) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>              e.printStackTrace();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              failures.incrementAndGet();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>              fail();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>            }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      };<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // run all threads<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      try {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        all[i].join();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Get g = new Get(row);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    Result result = region.get(g);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // create 10 threads, each will alternate between adding and<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // removing a column<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    int numThreads = 10;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    int opsPerThread = 250;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    // create all threads<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        @Override<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        public void run() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>          boolean op = true;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            try {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>              // throw in some flushes<a name="line.388"></a>
-<span class="sourceLineNo">389</span>              if (i%10==0) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>                synchronized(region) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>                  LOG.debug("flushing");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>                  region.flush(true);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>                  if (i%100==0) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>                    region.compact(false);<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>              }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>              long ts = timeStamps.incrementAndGet();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>              RowMutations rm = new RowMutations(row);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>              if (op) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>                Put p = new Put(row, ts);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>                p.addColumn(fam1, qual1, value1);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>                rm.add(p);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>                Delete d = new Delete(row);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>                d.addColumns(fam1, qual2, ts);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>                rm.add(d);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              } else {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                Delete d = new Delete(row);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                d.addColumns(fam1, qual1, ts);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>                rm.add(d);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>                Put p = new Put(row, ts);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>                p.addColumn(fam1, qual2, value2);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>                rm.add(p);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>              }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>              region.mutateRow(rm);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>              op ^= true;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>              // check: should always see exactly one column<a name="line.421"></a>
-<span class="sourceLineNo">422</span>              Get g = new Get(row);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>              Result r = region.get(g);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>              if (r.size() != 1) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                LOG.debug(r);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>                failures.incrementAndGet();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>                fail();<a name="line.427"></a>
-<span class="sourceLineNo">428</span>              }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>            } catch (IOException e) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>              e.printStackTrace();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>              failures.incrementAndGet();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>              fail();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>            }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      };<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // run all threads<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      all[i].start();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // wait for all threads to finish<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      try {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        all[i].join();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>  /**<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * Test multi-threaded region mutations.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  @Test<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // create 10 threads, each will alternate between adding and<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // removing a column<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    int numThreads = 10;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    int opsPerThread = 250;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // create all threads<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        public void run() {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          boolean op = true;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            try {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>              // throw in some flushes<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              if (i%10==0) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>                synchronized(region) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>                  LOG.debug("flushing");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>                  region.flush(true);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>                  if (i%100==0) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>                    region.compact(false);<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>              long ts = timeStamps.incrementAndGet();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              if (op) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>                Put p = new Put(row2, ts);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>                p.addColumn(fam1, qual1, value1);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>                mrm.add(p);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>                Delete d = new Delete(row);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>                d.addColumns(fam1, qual1, ts);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>                mrm.add(d);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>              } else {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>                Delete d = new Delete(row2);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>                d.addColumns(fam1, qual1, ts);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>                mrm.add(d);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>                Put p = new Put(row, ts);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                p.addColumn(fam1, qual1, value2);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>                mrm.add(p);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>              }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>              op ^= true;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>              // check: should always see exactly one column<a name="line.514"></a>
-<span class="sourceLineNo">515</span>              Scan s = new Scan(row);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>              RegionScanner rs = region.getScanner(s);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>              while (rs.next(r))<a name="line.518"></a>
-<span class="sourceLineNo">519</span>                ;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              rs.close();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              if (r.size() != 1) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>                LOG.debug(r);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>                failures.incrementAndGet();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>                fail();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>            } catch (IOException e) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>              e.printStackTrace();<a name="line.527"></a>
-<span class="sourceLineNo">528</span>              failures.incrementAndGet();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>              fail();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>            }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>          }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      };<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // run all threads<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      all[i].start();<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    // wait for all threads to finish<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      try {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        all[i].join();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public static class AtomicOperation extends Thread {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    protected final Region region;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    protected final int numOps;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    protected final AtomicLong timeStamps;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    protected final AtomicInteger failures;<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    protected final Random r = new Random();<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        AtomicInteger failures) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      this.region = region;<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.numOps = numOps;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      this.timeStamps = timeStamps;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      this.failures = failures;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  }<a name="line.565"></a>
-<span class="sourceLineNo">566</span>  <a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private enum TestStep {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    PUT_COMPLETED,         // put complete (released RowLock, but may not have advanced MVCC).<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    CHECKANDPUT_STARTED,   // began checkAndPut: if 10 -&gt; 11<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    CHECKANDPUT_COMPLETED  // completed checkAndPut<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    // NOTE: at the end of these steps, the value of the cell should be 50, not 11!<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  private static volatile TestStep testStep = TestStep.INIT;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>  private final String family = "f1";<a name="line.577"></a>
-<span class="sourceLineNo">578</span>     <a name="line.578"></a>
-<span class="sourceLineNo">579</span>  /**<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Test written as a verifier for HBASE-7051, CheckAndPut should properly read<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * MVCC. <a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * <a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * Moved into TestAtomicOperation from its original location, TestHBase7051<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testPutAndCheckAndPutInParallel() throws Exception {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    final String tableName = "testPutAndCheckAndPut";<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    conf.setClass(HConstants.REGION_IMPL, MockHRegion.class, HeapSize.class);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName))<a name="line.590"></a>
-<span class="sourceLineNo">591</span>        .addFamily(new HColumnDescriptor(family));<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    this.region = TEST_UTIL.createLocalHRegion(htd, null, null);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Put[] puts = new Put[1];<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    Put put = new Put(Bytes.toBytes("r1"));<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("10"));<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    puts[0] = put;<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    <a name="line.597"></a>
-<span class="sourceLineNo">598</span>    region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    MultithreadedTestUtil.TestContext ctx =<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      new MultithreadedTestUtil.TestContext(conf);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    ctx.addThread(new PutThread(ctx, region));<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    ctx.addThread(new CheckAndPutThread(ctx, region));<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    ctx.startThreads();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    while (testStep != TestStep.CHECKANDPUT_COMPLETED) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      Thread.sleep(100);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    ctx.stop();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    Scan s = new Scan();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    RegionScanner scanner = region.getScanner(s);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    List&lt;Cell&gt; results = new ArrayList&lt;Cell&gt;();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    ScannerContext scannerContext = ScannerContext.newBuilder().setBatchLimit(2).build();<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    scanner.next(results, scannerContext);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    for (Cell keyValue : results) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      assertEquals("50",Bytes.toString(CellUtil.cloneValue(keyValue)));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  private class PutThread extends TestThread {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    private Region region;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    PutThread(TestContext ctx, Region region) {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      super(ctx);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      this.region = region;<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    }<a name="line.623"></a>
-<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span>    public void doWork() throws Exception {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      Put[] puts = new Put[1];<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("50"));<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      puts[0] = put;<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      testStep = TestStep.PUT_STARTED;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    }<a name="line.632"></a>
-<span class="sourceLineNo">633</span>  }<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>  private class CheckAndPutThread extends TestThread {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    private Region region;<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    CheckAndPutThread(TestContext ctx, Region region) {<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      super(ctx);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      this.region = region;<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   }<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>    public void doWork() throws Exception {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      Put[] puts = new Put[1];<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("11"));<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      puts[0] = put;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      while (testStep != TestStep.PUT_COMPLETED) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        Thread.sleep(100);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      testStep = TestStep.CHECKANDPUT_STARTED;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      region.checkAndMutate(Bytes.toBytes("r1"), Bytes.toBytes(family), Bytes.toBytes("q1"),<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("10")), put, true);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      testStep = TestStep.CHECKANDPUT_COMPLETED;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>  public static class MockHRegion extends HRegion {<a name="line.657"></a>
-<span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    public MockHRegion(Path tableDir, WAL log, FileSystem fs, Configuration conf,<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        final HRegionInfo regionInfo, final HTableDescriptor htd, RegionServerServices rsServices) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      super(tableDir, log, fs, conf, regionInfo, htd, rsServices);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    @Override<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    public RowLock getRowLock(final byte[] row, boolean readLock) throws IOException {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      if (testStep == TestStep.CHECKANDPUT_STARTED) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        latch.countDown();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      return new WrappedRowLock(super.getRowLock(row, readLock));<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    <a name="line.671"></a>
-<span class="sourceLineNo">672</span>    public class WrappedRowLock implements RowLock {<a name="line.672"></a>
-<span class="sourceLineNo">673</span><a name="line.673"></a>
-<span class="sourceLineNo">674</span>      private final RowLock rowLock;<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>      private WrappedRowLock(RowLock rowLock) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>        this.rowLock = rowLock;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      }<a name="line.678"></a>
+<span class="sourceLineNo">290</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.291"></a>
+<span class="sourceLineNo">292</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.295"></a>
+<span class="sourceLineNo">296</span>               Bytes.toLong(result.getValue(fam1, qual2)));<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            long fam1Increment = Bytes.toLong(result.getValue(fam1, qual1))*3;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>            long fam2Increment = Bytes.toLong(result.getValue(fam2, qual3));<a name="line.298"></a>
+<span class="sourceLineNo">299</span>            assertEquals("fam1=" + fam1Increment + ", fam2=" + fam2Increment,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              fam1Increment, fam2Increment);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        } catch (IOException e) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          e.printStackTrace();<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>    }<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>  @Test<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public void testAppendMultiThreads() throws IOException {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // run a with mixed column families (1 and 3 versions)<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    int numThreads = 100;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    int opsPerThread = 100;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    final byte[] val = new byte[]{1};<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    // create all threads<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        @Override<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        public void run() {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>            try {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>              Append a = new Append(row);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>              a.add(fam1, qual1, val);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>              a.add(fam1, qual2, val);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>              a.add(fam2, qual3, val);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>              Get g = new Get(row);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>              Result result = region.get(g);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.337"></a>
+<span class="sourceLineNo">338</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.338"></a>
+<span class="sourceLineNo">339</span>            } catch (IOException e) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>              e.printStackTrace();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              failures.incrementAndGet();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>              fail();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>            }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      };<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    // run all threads<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      all[i].start();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    // wait for all threads to finish<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      try {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        all[i].join();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    Get g = new Get(row);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    Result result = region.get(g);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  @Test<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    // create 10 threads, each will alternate between adding and<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // removing a column<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    int numThreads = 10;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    int opsPerThread = 250;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // create all threads<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        @Override<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        public void run() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          boolean op = true;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            try {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              // throw in some flushes<a name="line.392"></a>
+<span class="sourceLineNo">393</span>              if (i%10==0) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>                synchronized(region) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>                  LOG.debug("flushing");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>                  region.flush(true);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>                  if (i%100==0) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>                    region.compact(false);<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>              }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>              long ts = timeStamps.incrementAndGet();<a name="line.402"></a>
+<span class="sourceLineNo">403</span>              RowMutations rm = new RowMutations(row);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              if (op) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                Put p = new Put(row, ts);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                p.addColumn(fam1, qual1, value1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>                rm.add(p);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>                Delete d = new Delete(row);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>                d.addColumns(fam1, qual2, ts);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>                rm.add(d);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>              } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>                Delete d = new Delete(row);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>                d.addColumns(fam1, qual1, ts);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>                rm.add(d);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>                Put p = new Put(row, ts);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>                p.addColumn(fam1, qual2, value2);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                rm.add(p);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>              }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>              region.mutateRow(rm);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>              op ^= true;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>              // check: should always see exactly one column<a name="line.425"></a>
+<span class="sourceLineNo">426</span>              Get g = new Get(row);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>              Result r = region.get(g);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>              if (r.size() != 1) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>                LOG.debug(r);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>                failures.incrementAndGet();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>                fail();<a name="line.431"></a>
+<span class="sourceLineNo">432</span>              }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>            } catch (IOException e) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>              e.printStackTrace();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>              failures.incrementAndGet();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>              fail();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>            }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      };<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // run all threads<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      try {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        all[i].join();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } catch (InterruptedException e) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(0, failures.get());<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><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * Test multi-threaded region mutations.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  @Test<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    // create 10 threads, each will alternate between adding and<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    // removing a column<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    int numThreads = 10;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    int opsPerThread = 250;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // create all threads<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        @Override<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        public void run() {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          boolean op = true;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>            try {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>              // throw in some flushes<a name="line.485"></a>
+<span class="sourceLineNo">486</span>              if (i%10==0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>                synchronized(region) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>                  LOG.debug("flushing");<a name="line.488"></a>
+<span class="sourceLineNo">489</span>                  region.flush(true);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>                  if (i%100==0) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>                    region.compact(false);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>                  }<a name="line.492"></a>
+<span class="sourceLineNo">493</span>                }<a name="line.493"></a>
+<span class="sourceLineNo">494</span>              }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>              long ts = timeStamps.incrementAndGet();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>              if (op) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>                Put p = new Put(row2, ts);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>                p.addColumn(fam1, qual1, value1);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>                mrm.add(p);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>                Delete d = new Delete(row);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>                d.addColumns(fam1, qual1, ts);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>                mrm.add(d);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>              } else {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>                Delete d = new Delete(row2);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>                d.addColumns(fam1, qual1, ts);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>                mrm.add(d);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>                Put p = new Put(row, ts);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>                p.addColumn(fam1, qual1, value2);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>                mrm.add(p);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>              }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>              op ^= true;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>              // check: should always see exactly one column<a name="line.518"></a>
+<span class="sourceLineNo">519</span>              Scan s = new Scan(row);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>              RegionScanner rs = region.getScanner(s);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>              while (rs.next(r))<a name="line.522"></a>
+<span class="sourceLineNo">523</span>                ;<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              rs.close();<a name="line.524"></a>
+<span class="sourceLineNo">525</span>              if (r.size() != 1) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>                LOG.debug(r);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>                failures.incrementAndGet();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>                fail();<a name="line.528"></a>
+<span class="sourceLineNo">529</span>              }<a name="line.529"></a>
+<span class="sourceLineNo">530</span>            } catch (IOException e) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>              e.printStackTrace();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>              failures.incrementAndGet();<a name="line.532"></a>
+<span class="sourceLineNo">533</span>              fail();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>          }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        }<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      };<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span>    // run all threads<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      all[i].start();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>    // wait for all threads to finish<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      try {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>        all[i].join();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      } catch (InterruptedException e) {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    assertEquals(0, failures.get());<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  public static class AtomicOperation extends Thread {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    protected final Region region;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    protected final int numOps;<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    protected final AtomicLong timeStamps;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    protected final AtomicInteger failures;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    protected final Random r = new Random();<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>        AtomicInteger failures) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      this.region = region;<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      this.numOps = numOps;<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.timeStamps = timeStamps;<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      this.failures = failures;<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>  <a name="line.570"></a>
+<span class="sourceLineNo">571</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private enum TestStep {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.574"></a>
+<span class="sourceLineNo">575<

<TRUNCATED>

[32/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

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

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

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

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


[29/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index a385496..22e6599 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -760,6 +760,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/zookeeper/lock/TestZKInterProcessReadWriteLock.html#afterAllTests()">afterAllTests()</a></span> - Static method in class org.apache.hadoop.hbase.zookeeper.lock.<a href="./org/apache/hadoop/hbase/zookeeper/lock/TestZKInterProcessReadWriteLock.html" title="class in org.apache.hadoop.hbase.zookeeper.lock">TestZKInterProcessReadWriteLock</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#afterClass()">afterClass()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestMetricsConnection.html#afterClass()">afterClass()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestMetricsConnection.html" title="class in org.apache.hadoop.hbase.client">TestMetricsConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestMultiParallel.html#afterClass()">afterClass()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel</a></dt>
@@ -1152,14 +1154,18 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.html#assertHeapSpaceDelta(double,%20long,%20long)">assertHeapSpaceDelta(double, long, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestHeapMemoryManager.html" title="class in org.apache.hadoop.hbase.regionserver">TestHeapMemoryManager</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#assertICV(byte[],%20byte[],%20byte[],%20long)">assertICV(byte[], byte[], byte[], long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html" title="class in org.apache.hadoop.hbase.regionserver">TestAtomicOperation</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#assertICV(byte[],%20byte[],%20byte[],%20long,%20boolean)">assertICV(byte[], byte[], byte[], long, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html" title="class in org.apache.hadoop.hbase.regionserver">TestAtomicOperation</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.html#assertImmediateAssignment(java.util.List,%20java.util.List,%20java.util.Map)">assertImmediateAssignment(List&lt;HRegionInfo&gt;, List&lt;ServerName&gt;, Map&lt;HRegionInfo, ServerName&gt;)</a></span> - Method in class org.apache.hadoop.hbase.master.balancer.<a href="./org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">TestBaseLoadBalancer</a></dt>
 <dd>
 <div class="block">All regions have an assignment.</div>
 </dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html#assertIncrementKey(org.apache.hadoop.hbase.Cell,%20byte[],%20byte[],%20byte[],%20long)">assertIncrementKey(Cell, byte[], byte[], byte[], long)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html#assertIncrementKey(org.apache.hadoop.hbase.Cell,%20byte[],%20byte[],%20byte[],%20long)">assertIncrementKey(Cell, byte[], byte[], byte[], long)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#assertIncrementKey(org.apache.hadoop.hbase.Cell,%20byte[],%20byte[],%20byte[],%20long)">assertIncrementKey(Cell, byte[], byte[], byte[], long)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>
+<div class="block">Call over to the adjacent class's method of same name.</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/security/TestHBaseSaslRpcClient.html#assertIOExceptionThenSaslClientIsNull(java.lang.String,%20java.lang.String)">assertIOExceptionThenSaslClientIsNull(String, String)</a></span> - Method in class org.apache.hadoop.hbase.security.<a href="./org/apache/hadoop/hbase/security/TestHBaseSaslRpcClient.html" title="class in org.apache.hadoop.hbase.security">TestHBaseSaslRpcClient</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/security/TestHBaseSaslRpcClient.html#assertIOExceptionWhenGetStreamsBeforeConnectCall(java.lang.String,%20java.lang.String)">assertIOExceptionWhenGetStreamsBeforeConnectCall(String, String)</a></span> - Method in class org.apache.hadoop.hbase.security.<a href="./org/apache/hadoop/hbase/security/TestHBaseSaslRpcClient.html" title="class in org.apache.hadoop.hbase.security">TestHBaseSaslRpcClient</a></dt>
@@ -1555,6 +1561,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/TestOrderedBytes.html#BD_VALS">BD_VALS</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/TestOrderedBytes.html" title="class in org.apache.hadoop.hbase.util">TestOrderedBytes</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html#before()">before()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestIncrementFromClientSideWithCoprocessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestMultiParallel.html#before()">before()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestReplicasClient.html#before()">before()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestReplicasClient.html" title="class in org.apache.hadoop.hbase.client">TestReplicasClient</a></dt>
@@ -1649,6 +1657,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestAsyncProcess.html#beforeClass()">beforeClass()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestAsyncProcess.html" title="class in org.apache.hadoop.hbase.client">TestAsyncProcess</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#beforeClass()">beforeClass()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestMetricsConnection.html#beforeClass()">beforeClass()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestMetricsConnection.html" title="class in org.apache.hadoop.hbase.client">TestMetricsConnection</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestMultiParallel.html#beforeClass()">beforeClass()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel</a></dt>
@@ -3364,6 +3374,8 @@
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/MockRegionServer.html#closeRegion(com.google.protobuf.RpcController,%20org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionRequest)">closeRegion(RpcController, AdminProtos.CloseRegionRequest)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="./org/apache/hadoop/hbase/master/MockRegionServer.html" title="class in org.apache.hadoop.hbase.master">MockRegionServer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#closeRegion(org.apache.hadoop.hbase.regionserver.HRegion)">closeRegion(HRegion)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html#closeRegion(org.apache.hadoop.hbase.HBaseTestingUtility,%20org.apache.hadoop.hbase.regionserver.HRegionServer,%20org.apache.hadoop.hbase.HRegionInfo)">closeRegion(HBaseTestingUtility, HRegionServer, HRegionInfo)</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionServerNoMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerNoMaster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#closeRegion(org.apache.hadoop.hbase.regionserver.HRegion)">closeRegion(HRegion)</a></span> - Method in class org.apache.hadoop.hbase.wal.<a href="./org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase.wal">WALPerformanceEvaluation</a></dt>
@@ -3687,6 +3699,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/filter/TestSingleColumnValueFilter.html#COLUMN_FAMILY">COLUMN_FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.filter.<a href="./org/apache/hadoop/hbase/filter/TestSingleColumnValueFilter.html" title="class in org.apache.hadoop.hbase.filter">TestSingleColumnValueFilter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#COLUMN_FAMILY">COLUMN_FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mapred/TestTableMapReduceUtil.html#COLUMN_FAMILY">COLUMN_FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.mapred.<a href="./org/apache/hadoop/hbase/mapred/TestTableMapReduceUtil.html" title="class in org.apache.hadoop.hbase.mapred">TestTableMapReduceUtil</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestCompaction.html#COLUMN_FAMILY">COLUMN_FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompaction</a></dt>
@@ -4146,6 +4160,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/http/TestSSLHttpServer.html#conf">conf</a></span> - Static variable in class org.apache.hadoop.hbase.http.<a href="./org/apache/hadoop/hbase/http/TestSSLHttpServer.html" title="class in org.apache.hadoop.hbase.http">TestSSLHttpServer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#conf">conf</a></span> - Variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/crypto/TestCipherProvider.MyCipherProvider.html#conf">conf</a></span> - Variable in class org.apache.hadoop.hbase.io.crypto.<a href="./org/apache/hadoop/hbase/io/crypto/TestCipherProvider.MyCipherProvider.html" title="class in org.apache.hadoop.hbase.io.crypto">TestCipherProvider.MyCipherProvider</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.html#conf">conf</a></span> - Static variable in class org.apache.hadoop.hbase.io.encoding.<a href="./org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.html" title="class in org.apache.hadoop.hbase.io.encoding">TestChangingEncoding</a></dt>
@@ -4746,6 +4762,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestMajorCompaction.html#count()">count()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestMajorCompaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestMajorCompaction</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#count">count</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.CrossRowCellIncrementer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#count">count</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.SingleCellIncrementer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestScanner.html#count(org.apache.hadoop.hbase.client.Table,%20int,%20boolean)">count(Table, int, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.PingHandler.html#count(com.google.protobuf.RpcController,%20org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.CountRequest,%20com.google.protobuf.RpcCallback)">count(RpcController, PingProtos.CountRequest, RpcCallback&lt;PingProtos.CountResponse&gt;)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.PingHandler.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerCustomProtocol.PingHandler</a></dt>
@@ -6495,6 +6515,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestingUtility.html#DEFAULT_HBASE_CLUSTER_MANAGER_CLASS">DEFAULT_HBASE_CLUSTER_MANAGER_CLASS</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestingUtility.html" title="class in org.apache.hadoop.hbase">IntegrationTestingUtility</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#DEFAULT_INCREMENT_COUNT">DEFAULT_INCREMENT_COUNT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/MultiThreadedReader.html#DEFAULT_KEY_WINDOW">DEFAULT_KEY_WINDOW</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/MultiThreadedReader.html" title="class in org.apache.hadoop.hbase.util">MultiThreadedReader</a></dt>
 <dd>
 <div class="block">Default "window" size between the last key written by the writer and the
@@ -6626,6 +6648,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/test/IntegrationTestBigLinkedListWithVisibility.html#DEFAULT_TABLES_COUNT">DEFAULT_TABLES_COUNT</a></span> - Static variable in class org.apache.hadoop.hbase.test.<a href="./org/apache/hadoop/hbase/test/IntegrationTestBigLinkedListWithVisibility.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestBigLinkedListWithVisibility</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#DEFAULT_THREAD_COUNT">DEFAULT_THREAD_COUNT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.html#DEFAULT_TIMEOUT_MINUTES">DEFAULT_TIMEOUT_MINUTES</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.html" title="class in org.apache.hadoop.hbase">IntegrationTestLazyCfLoading</a></dt>
 <dd>
 <div class="block">A soft test timeout; duration of the test, as such, depends on number of keys to put.</div>
@@ -7737,7 +7761,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/filter/TestBitComparator.html#Equal">Equal</a></span> - Variable in class org.apache.hadoop.hbase.filter.<a href="./org/apache/hadoop/hbase/filter/TestBitComparator.html" title="class in org.apache.hadoop.hbase.filter">TestBitComparator</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html#equals(byte[],%20byte[])">equals(byte[], byte[])</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html#equals(byte[],%20byte[])">equals(byte[], byte[])</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mapreduce/TestMultiTableSnapshotInputFormatImpl.ScanWithEquals.html#equals(java.lang.Object)">equals(Object)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="./org/apache/hadoop/hbase/mapreduce/TestMultiTableSnapshotInputFormatImpl.ScanWithEquals.html" title="class in org.apache.hadoop.hbase.mapreduce">TestMultiTableSnapshotInputFormatImpl.ScanWithEquals</a></dt>
 <dd>&nbsp;</dd>
@@ -8306,6 +8330,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html" title="class in org.apache.hadoop.hbase.client">TestHTableMultiplexerFlushCache</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestLeaseRenewal.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client">TestLeaseRenewal</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestMultiParallel.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel</a></dt>
@@ -8670,8 +8696,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestHRegion.html#FILESYSTEM">FILESYSTEM</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#FILESYSTEM">FILESYSTEM</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionReplayEvents</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/ResourceChecker.html#fill(org.apache.hadoop.hbase.ResourceChecker.Phase,%20int[])">fill(ResourceChecker.Phase, int[])</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/ResourceChecker.html" title="class in org.apache.hadoop.hbase">ResourceChecker</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/TestByteBufferUtils.html#fillArray(byte[],%20byte)">fillArray(byte[], byte)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/TestByteBufferUtils.html" title="class in org.apache.hadoop.hbase.util">TestByteBufferUtils</a></dt>
@@ -8746,6 +8770,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestOperation.html#FILTERS_INFO">FILTERS_INFO</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestOperation.html" title="class in org.apache.hadoop.hbase.client">TestOperation</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#filterStringSoTableNameSafe(java.lang.String)">filterStringSoTableNameSafe(String)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/handler/TestEnableTableHandler.html#filterTableRegions(org.apache.hadoop.hbase.TableName,%20java.util.List)">filterTableRegions(TableName, List&lt;HRegionInfo&gt;)</a></span> - Method in class org.apache.hadoop.hbase.master.handler.<a href="./org/apache/hadoop/hbase/master/handler/TestEnableTableHandler.html" title="class in org.apache.hadoop.hbase.master.handler">TestEnableTableHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/filter/FilterTestingCluster.html" title="class in org.apache.hadoop.hbase.filter"><span class="strong">FilterTestingCluster</span></a> - Class in <a href="./org/apache/hadoop/hbase/filter/package-summary.html">org.apache.hadoop.hbase.filter</a></dt>
@@ -9885,6 +9911,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseCluster.html#getConf()">getConf()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseCluster.html" title="class in org.apache.hadoop.hbase">HBaseCluster</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#getConf()">getConf()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestBase.html#getConf()">getConf()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/crypto/TestCipherProvider.MyCipherProvider.html#getConf()">getConf()</a></span> - Method in class org.apache.hadoop.hbase.io.crypto.<a href="./org/apache/hadoop/hbase/io/crypto/TestCipherProvider.MyCipherProvider.html" title="class in org.apache.hadoop.hbase.io.crypto">TestCipherProvider.MyCipherProvider</a></dt>
@@ -11334,6 +11362,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html#getReferredToFile(java.lang.String)">getReferredToFile(String)</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="./org/apache/hadoop/hbase/snapshot/TestRestoreSnapshotHelper.html" title="class in org.apache.hadoop.hbase.snapshot">TestRestoreSnapshotHelper</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#getRegion(org.apache.hadoop.conf.Configuration,%20java.lang.String)">getRegion(Configuration, String)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/HFileArchiveTestingUtil.html#getRegionArchiveDir(org.apache.hadoop.conf.Configuration,%20org.apache.hadoop.hbase.regionserver.HRegion)">getRegionArchiveDir(Configuration, HRegion)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/HFileArchiveTestingUtil.html" title="class in org.apache.hadoop.hbase.util">HFileArchiveTestingUtil</a></dt>
 <dd>
 <div class="block">Helper method to get the archive directory for the specified region</div>
@@ -13098,6 +13128,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/RegionAsTable.html#increment(org.apache.hadoop.hbase.client.Increment)">increment(Increment)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/RegionAsTable.html" title="class in org.apache.hadoop.hbase.regionserver">RegionAsTable</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#increment">increment</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.SingleCellIncrementer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.PingHandler.html#increment(com.google.protobuf.RpcController,%20org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.IncrementCountRequest,%20com.google.protobuf.RpcCallback)">increment(RpcController, PingProtos.IncrementCountRequest, RpcCallback&lt;PingProtos.IncrementCountResponse&gt;)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestServerCustomProtocol.PingHandler.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerCustomProtocol.PingHandler</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html#increment(com.google.protobuf.RpcController,%20org.apache.hadoop.hbase.coprocessor.protobuf.generated.PingProtos.IncrementCountRequest,%20com.google.protobuf.RpcCallback)">increment(RpcController, PingProtos.IncrementCountRequest, RpcCallback&lt;PingProtos.IncrementCountResponse&gt;)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="./org/apache/hadoop/hbase/security/access/TestAccessController.PingCoprocessor.html" title="class in org.apache.hadoop.hbase.security.access">TestAccessController.PingCoprocessor</a></dt>
@@ -13106,14 +13138,28 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/TimeOffsetEnvironmentEdge.html#increment(long)">increment(long)</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/TimeOffsetEnvironmentEdge.html" title="class in org.apache.hadoop.hbase.util">TimeOffsetEnvironmentEdge</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#INCREMENT_BYTES">INCREMENT_BYTES</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#INCREMENT_COUNT">INCREMENT_COUNT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#INCREMENT_COUNT">INCREMENT_COUNT</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/RegionAsTable.html#incrementColumnValue(byte[],%20byte[],%20byte[],%20long)">incrementColumnValue(byte[], byte[], byte[], long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/RegionAsTable.html" title="class in org.apache.hadoop.hbase.regionserver">RegionAsTable</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/RegionAsTable.html#incrementColumnValue(byte[],%20byte[],%20byte[],%20long,%20org.apache.hadoop.hbase.client.Durability)">incrementColumnValue(byte[], byte[], byte[], long, Durability)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/RegionAsTable.html" title="class in org.apache.hadoop.hbase.regionserver">RegionAsTable</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.html#incrementCounter(org.apache.hadoop.hbase.client.Table)">incrementCounter(Table)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="./org/apache/hadoop/hbase/coprocessor/TestRowProcessorEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRowProcessorEndpoint</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase"><span class="strong">IncrementPerformanceTest</span></a> - Class in <a href="./org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
+<dd>
+<div class="block">Simple Increments Performance Test.</div>
+</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#IncrementPerformanceTest()">IncrementPerformanceTest()</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/KVGenerator.html#incrementPrefix()">incrementPrefix()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/KVGenerator.html" title="class in org.apache.hadoop.hbase.io.hfile">KVGenerator</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#increments">increments</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.CrossRowCellIncrementer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html#increments">increments</a></span> - Variable in class org.apache.hadoop.hbase.wal.<a href="./org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html" title="class in org.apache.hadoop.hbase.wal">TestWALFactory.DumbWALActionsListener</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html#incRow">incRow</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestHRegion.Incrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion.Incrementer</a></dt>
@@ -15537,6 +15583,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html" title="class in org.apache.hadoop.hbase.client">TestHTableMultiplexerFlushCache</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#LOG">LOG</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestLeaseRenewal.html#LOG">LOG</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client">TestLeaseRenewal</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestMetaWithReplicas.html" title="class in org.apache.hadoop.hbase.client">TestMetaWithReplicas</a></dt>
@@ -15679,6 +15727,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/http/TestSSLHttpServer.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.http.<a href="./org/apache/hadoop/hbase/http/TestSSLHttpServer.html" title="class in org.apache.hadoop.hbase.http">TestSSLHttpServer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestBase.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestBase.html" title="class in org.apache.hadoop.hbase">IntegrationTestBase</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html" title="class in org.apache.hadoop.hbase">IntegrationTestDDLMasterFailover</a></dt>
@@ -16043,6 +16093,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEdits</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicaFailover</a></dt>
@@ -16521,6 +16573,8 @@
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/HFilePerformanceEvaluation.html#main(java.lang.String[])">main(String[])</a></span> - Static method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HFilePerformanceEvaluation.html" title="class in org.apache.hadoop.hbase">HFilePerformanceEvaluation</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#main(java.lang.String[])">main(String[])</a></span> - Static method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html#main(java.lang.String[])">main(String[])</a></span> - Static method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestAcidGuarantees.html" title="class in org.apache.hadoop.hbase">IntegrationTestAcidGuarantees</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html#main(java.lang.String[])">main(String[])</a></span> - Static method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html" title="class in org.apache.hadoop.hbase">IntegrationTestDDLMasterFailover</a></dt>
@@ -17151,6 +17205,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestMetricsConnection.html#METRICS">METRICS</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestMetricsConnection.html" title="class in org.apache.hadoop.hbase.client">TestMetricsConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#metrics">metrics</a></span> - Variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/master/snapshot/TestSnapshotManager.html#metrics">metrics</a></span> - Variable in class org.apache.hadoop.hbase.master.snapshot.<a href="./org/apache/hadoop/hbase/master/snapshot/TestSnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">TestSnapshotManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html#metrics">metrics</a></span> - Variable in class org.apache.hadoop.hbase.wal.<a href="./org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase.wal">WALPerformanceEvaluation</a></dt>
@@ -17835,6 +17891,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/rest/PerformanceEvaluation.html#N">N</a></span> - Variable in class org.apache.hadoop.hbase.rest.<a href="./org/apache/hadoop/hbase/rest/PerformanceEvaluation.html" title="class in org.apache.hadoop.hbase.rest">PerformanceEvaluation</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/ClusterManager.ServiceType.html#name">name</a></span> - Variable in enum org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase">ClusterManager.ServiceType</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.coprocessor.<a href="./org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.html" title="class in org.apache.hadoop.hbase.coprocessor">TestCoprocessorInterface</a></dt>
@@ -17901,6 +17959,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestParallelPut.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class in org.apache.hadoop.hbase.regionserver">TestParallelPut</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionReplicaFailover.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionReplicaFailover</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestScanner.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanner</a></dt>
@@ -21700,6 +21760,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/filter/TestDependentColumnFilter.html#QUALIFIER">QUALIFIER</a></span> - Static variable in class org.apache.hadoop.hbase.filter.<a href="./org/apache/hadoop/hbase/filter/TestDependentColumnFilter.html" title="class in org.apache.hadoop.hbase.filter">TestDependentColumnFilter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#QUALIFIER">QUALIFIER</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mapreduce/TestCellCounter.html#QUALIFIER">QUALIFIER</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="./org/apache/hadoop/hbase/mapreduce/TestCellCounter.html" title="class in org.apache.hadoop.hbase.mapreduce">TestCellCounter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mapreduce/TestCopyTable.html#QUALIFIER">QUALIFIER</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="./org/apache/hadoop/hbase/mapreduce/TestCopyTable.html" title="class in org.apache.hadoop.hbase.mapreduce">TestCopyTable</a></dt>
@@ -22386,6 +22448,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestParallelPut.html#region">region</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class in org.apache.hadoop.hbase.regionserver">TestParallelPut</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#region">region</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.CrossRowCellIncrementer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#region">region</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.SingleCellIncrementer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestScanner.html#region">region</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html#region">region</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanWithBloomError</a></dt>
@@ -23286,6 +23352,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestHCM.html#ROW">ROW</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestHCM.html" title="class in org.apache.hadoop.hbase.client">TestHCM</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#ROW">ROW</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestOperation.html#ROW">ROW</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestOperation.html" title="class in org.apache.hadoop.hbase.client">TestOperation</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestPutDeleteEtcCellIteration.html#ROW">ROW</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestPutDeleteEtcCellIteration.html" title="class in org.apache.hadoop.hbase.client">TestPutDeleteEtcCellIteration</a></dt>
@@ -23966,6 +24034,8 @@
 <dd>
 <div class="block">Run benchmark</div>
 </dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#run(java.lang.String[])">run(String[])</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.Worker.html#run()">run()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.Worker.html" title="class in org.apache.hadoop.hbase">IntegrationTestDDLMasterFailover.Worker</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestManyRegions.Worker.html#run()">run()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestManyRegions.Worker.html" title="class in org.apache.hadoop.hbase">IntegrationTestManyRegions.Worker</a></dt>
@@ -24018,6 +24088,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html#run()">run()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestParallelPut.Putter.html" title="class in org.apache.hadoop.hbase.regionserver">TestParallelPut.Putter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#run()">run()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.CrossRowCellIncrementer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#run()">run()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.SingleCellIncrementer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestServerNonceManager.TestRunnable.html#run()">run()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestServerNonceManager.TestRunnable.html" title="class in org.apache.hadoop.hbase.regionserver">TestServerNonceManager.TestRunnable</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.Appender.html#run()">run()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="./org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.Appender.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestLogRollingNoCluster.Appender</a></dt>
@@ -24963,6 +25037,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/HBaseClusterManager.html#setConf(org.apache.hadoop.conf.Configuration)">setConf(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HBaseClusterManager.html" title="class in org.apache.hadoop.hbase">HBaseClusterManager</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#setConf(org.apache.hadoop.conf.Configuration)">setConf(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestRegionReplicaReplication.html#setConf(org.apache.hadoop.conf.Configuration)">setConf(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestRegionReplicaReplication.html" title="class in org.apache.hadoop.hbase">IntegrationTestRegionReplicaReplication</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/crypto/TestCipherProvider.MyCipherProvider.html#setConf(org.apache.hadoop.conf.Configuration)">setConf(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.io.crypto.<a href="./org/apache/hadoop/hbase/io/crypto/TestCipherProvider.MyCipherProvider.html" title="class in org.apache.hadoop.hbase.io.crypto">TestCipherProvider.MyCipherProvider</a></dt>
@@ -25607,6 +25683,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestQueryMatcher.html#setUp()">setUp()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver">TestQueryMatcher</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#setUp()">setUp()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html#setup()">setup()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransaction</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html#setUp()">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerOnlineConfigChange</a></dt>
@@ -26851,6 +26929,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html#SLAVES">SLAVES</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html" title="class in org.apache.hadoop.hbase.client">TestHTableMultiplexerFlushCache</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#SLAVES">SLAVES</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestMultiParallel.html#slaves">slaves</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestSizeFailures.html#SLAVES">SLAVES</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestSizeFailures.html" title="class in org.apache.hadoop.hbase.client">TestSizeFailures</a></dt>
@@ -28734,6 +28814,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.html#tableName">tableName</a></span> - Variable in class org.apache.hadoop.hbase.filter.<a href="./org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.html" title="class in org.apache.hadoop.hbase.filter">TestMultiRowRangeFilter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#TABLENAME">TABLENAME</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html#tableName">tableName</a></span> - Variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.html" title="class in org.apache.hadoop.hbase">IntegrationTestRegionReplicaPerf</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.html#tableName">tableName</a></span> - Variable in class org.apache.hadoop.hbase.io.encoding.<a href="./org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.html" title="class in org.apache.hadoop.hbase.io.encoding">TestChangingEncoding</a></dt>
@@ -29177,6 +29259,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestParallelPut.html#tearDown()">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestParallelPut.html" title="class in org.apache.hadoop.hbase.regionserver">TestParallelPut</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#tearDown()">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html#teardown()">teardown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransaction</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html#tearDown()">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionServerOnlineConfigChange.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerOnlineConfigChange</a></dt>
@@ -29688,8 +29772,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestClientOperationInterrupt.html#test">test</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestClientOperationInterrupt.html" title="class in org.apache.hadoop.hbase.client">TestClientOperationInterrupt</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrement.html#test()">test()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client">TestIncrement</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/constraint/TestConstraint.html#test">test</a></span> - Static variable in class org.apache.hadoop.hbase.constraint.<a href="./org/apache/hadoop/hbase/constraint/TestConstraint.html" title="class in org.apache.hadoop.hbase.constraint">TestConstraint</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html#test">test</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="./org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverBypass</a></dt>
@@ -30091,6 +30173,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html" title="class in org.apache.hadoop.hbase.client">TestHTableMultiplexerFlushCache</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIntraRowPagination.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client">TestIntraRowPagination</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestLeaseRenewal.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client">TestLeaseRenewal</a></dt>
@@ -30357,6 +30441,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionFavoredNodes.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionFavoredNodes</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html#TEST_UTIL">TEST_UTIL</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransaction.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransaction</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster</a></dt>
@@ -31158,7 +31244,8 @@
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestAtomicOperation.Incrementer</span></a> - Class in <a href="./org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
 <dd>
-<div class="block">A thread that makes a few increment calls</div>
+<div class="block">A thread that makes increment calls always on the same row, this.row against two column
+ families on this row.</div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html#TestAtomicOperation.Incrementer(org.apache.hadoop.hbase.regionserver.Region,%20int,%20int,%20int)">TestAtomicOperation.Incrementer(Region, int, int, int)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.Incrementer</a></dt>
 <dd>&nbsp;</dd>
@@ -33155,6 +33242,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestHRegionInfo.html#testContainsRange()">testContainsRange()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestHRegionInfo.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionInfo</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#testContendedAcrossCellsIncrement()">testContendedAcrossCellsIncrement()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>
+<div class="block">Have each thread update its own Cell.</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.html#testContendedLogRolling()">testContendedLogRolling()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="./org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestLogRollingNoCluster</a></dt>
 <dd>
 <div class="block">Spin up a bunch of threads and have them all append to a WAL.</div>
@@ -35109,7 +35200,7 @@
 <dt><a href="./org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestFromClientSideWithCoprocessor</span></a> - Class in <a href="./org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>
 <div class="block">Test all client operations with a coprocessor that
- just implements the default flush/compact/scan policy</div>
+ just implements the default flush/compact/scan policy.</div>
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#TestFromClientSideWithCoprocessor()">TestFromClientSideWithCoprocessor()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideWithCoprocessor</a></dt>
 <dd>&nbsp;</dd>
@@ -36633,12 +36724,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html#testIncreasingToUpperBoundRegionSplitPolicy()">testIncreasingToUpperBoundRegionSplitPolicy()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionSplitPolicy.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionSplitPolicy</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrement()">testIncrement()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></dt>
-<dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestIncrement</span></a> - Class in <a href="./org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrement.html#TestIncrement()">TestIncrement()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client">TestIncrement</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrement()">testIncrement()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#testIncrement()">testIncrement()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerMetrics</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/wal/TestDurability.html#testIncrement()">testIncrement()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="./org/apache/hadoop/hbase/regionserver/wal/TestDurability.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestDurability</a></dt>
@@ -36655,6 +36746,13 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestStore.html#testIncrementColumnValue_SnapshotFlushCombo()">testIncrementColumnValue_SnapshotFlushCombo()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestStore</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="./org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestIncrementFromClientSideWithCoprocessor</span></a> - Class in <a href="./org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
+<dd>
+<div class="block">Test all <code>Increment</code> client operations with a coprocessor that
+ just implements the default flush/compact/scan policy.</div>
+</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html#TestIncrementFromClientSideWithCoprocessor()">TestIncrementFromClientSideWithCoprocessor()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestIncrementFromClientSideWithCoprocessor</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.html#testIncrementHook()">testIncrementHook()</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="./org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.html" title="class in org.apache.hadoop.hbase.coprocessor">TestRegionObserverInterface</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/util/TestIncrementingEnvironmentEdge.html" title="class in org.apache.hadoop.hbase.util"><span class="strong">TestIncrementingEnvironmentEdge</span></a> - Class in <a href="./org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
@@ -36664,9 +36762,11 @@
 </dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/TestIncrementingEnvironmentEdge.html#TestIncrementingEnvironmentEdge()">TestIncrementingEnvironmentEdge()</a></span> - Constructor for class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/TestIncrementingEnvironmentEdge.html" title="class in org.apache.hadoop.hbase.util">TestIncrementingEnvironmentEdge</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementingInvalidValue()">testIncrementingInvalidValue()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementingInvalidValue()">testIncrementingInvalidValue()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrement.html#testIncrementInstance()">testIncrementInstance()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client">TestIncrement</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementInvalidArguments()">testIncrementInvalidArguments()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementInvalidArguments()">testIncrementInvalidArguments()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestPutDeleteEtcCellIteration.html#testIncrementIteration()">testIncrementIteration()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestPutDeleteEtcCellIteration.html" title="class in org.apache.hadoop.hbase.client">TestPutDeleteEtcCellIteration</a></dt>
 <dd>&nbsp;</dd>
@@ -36674,13 +36774,19 @@
 <dd>
 <div class="block">Test multi-threaded increments.</div>
 </dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementOnSameColumn()">testIncrementOnSameColumn()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementOnSameColumn()">testIncrementOnSameColumn()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementOutOfOrder()">testIncrementOutOfOrder()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementOutOfOrder()">testIncrementOutOfOrder()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestIncrementsFromClientSide</span></a> - Class in <a href="./org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
+<dd>
+<div class="block">Run Increment tests that use the HBase clients; <code>HTable</code>.</div>
+</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#TestIncrementsFromClientSide()">TestIncrementsFromClientSide()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestHRegion.html#testIncrementTimestampsAreMonotonic()">testIncrementTimestampsAreMonotonic()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegion</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html#testIncrementWithDeletes()">testIncrementWithDeletes()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></dt>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementWithDeletes()">testIncrementWithDeletes()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html#testIncrementWithNonExistingFamily()">testIncrementWithNonExistingFamily()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html" title="class in org.apache.hadoop.hbase.regionserver">TestAtomicOperation</a></dt>
 <dd>&nbsp;</dd>
@@ -39075,6 +39181,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html#testMutationsWithoutWal()">testMutationsWithoutWal()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionServerMetrics</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#testMVCCCausingMisRead()">testMVCCCausingMisRead()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/io/hfile/TestHFile.html#testName">testName</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="./org/apache/hadoop/hbase/io/hfile/TestHFile.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFile</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/PerformanceEvaluation.Test.html#testName">testName</a></span> - Variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/PerformanceEvaluation.Test.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.Test</a></dt>
@@ -40784,6 +40892,24 @@
 <div class="block">This creates and fixes a bad table with a missing region -- hole in meta
  and data missing in the fs.</div>
 </dd>
+<dt><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionIncrement</span></a> - Class in <a href="./org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
+<dd>
+<div class="block">Increments with some concurrency against a region to ensure we get the right answer.</div>
+</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#TestRegionIncrement()">TestRegionIncrement()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionIncrement.CrossRowCellIncrementer</span></a> - Class in <a href="./org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
+<dd>
+<div class="block">Increments a random row's Cell <code>count</code> times.</div>
+</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html#TestRegionIncrement.CrossRowCellIncrementer(int,%20int,%20org.apache.hadoop.hbase.regionserver.HRegion,%20int)">TestRegionIncrement.CrossRowCellIncrementer(int, int, HRegion, int)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.CrossRowCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.CrossRowCellIncrementer</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="strong">TestRegionIncrement.SingleCellIncrementer</span></a> - Class in <a href="./org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></dt>
+<dd>
+<div class="block">Increments a single cell a bunch of times.</div>
+</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html#TestRegionIncrement.SingleCellIncrementer(int,%20int,%20org.apache.hadoop.hbase.regionserver.HRegion,%20org.apache.hadoop.hbase.client.Increment)">TestRegionIncrement.SingleCellIncrementer(int, int, HRegion, Increment)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.SingleCellIncrementer.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement.SingleCellIncrementer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/TestSerialization.html#testRegionInfo()">testRegionInfo()</a></span> - Method in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/TestSerialization.html" title="class in org.apache.hadoop.hbase">TestSerialization</a></dt>
 <dd>
 <div class="block">Test RegionInfo serialization</div>
@@ -45377,6 +45503,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/client/TestAsyncProcess.html#testUncheckedException()">testUncheckedException()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="./org/apache/hadoop/hbase/client/TestAsyncProcess.html" title="class in org.apache.hadoop.hbase.client">TestAsyncProcess</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#testUnContendedSingleCellIncrement()">testUnContendedSingleCellIncrement()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>
+<div class="block">Have each thread update its own Cell.</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/filter/TestParseFilter.html#testUnescapedQuote1()">testUnescapedQuote1()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="./org/apache/hadoop/hbase/filter/TestParseFilter.html" title="class in org.apache.hadoop.hbase.filter">TestParseFilter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/filter/TestParseFilter.html#testUnescapedQuote2()">testUnescapedQuote2()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="./org/apache/hadoop/hbase/filter/TestParseFilter.html" title="class in org.apache.hadoop.hbase.filter">TestParseFilter</a></dt>
@@ -46460,6 +46590,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestScanner.html#thirdRowBytes">thirdRowBytes</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html#THREAD_COUNT">THREAD_COUNT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase">IncrementPerformanceTest</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#THREAD_COUNT">THREAD_COUNT</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.html#THREAD_COUNT">THREAD_COUNT</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.wal.<a href="./org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestLogRollingNoCluster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/util/TestCounter.html#THREAD_COUNTS">THREAD_COUNTS</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="./org/apache/hadoop/hbase/util/TestCounter.html" title="class in org.apache.hadoop.hbase.util">TestCounter</a></dt>
@@ -46579,6 +46713,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestColumnSeeking.html#timeout">timeout</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestColumnSeeking.html" title="class in org.apache.hadoop.hbase.regionserver">TestColumnSeeking</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html#timeout">timeout</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestRegionIncrement.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionIncrement</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/TestScanner.html#timeout">timeout</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="./org/apache/hadoop/hbase/regionserver/TestScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.html#timeout">timeout</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.wal.<a href="./org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestLogRollingNoCluster</a></dt>


[51/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.


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

Branch: refs/heads/asf-site
Commit: 6a13df3e1774cdcdbff8d8183a37f73e7731ef4c
Parents: 4bb5e36
Author: jenkins <bu...@apache.org>
Authored: Wed Feb 3 15:21:45 2016 +0000
Committer: Misty Stanley-Jones <ms...@cloudera.com>
Committed: Wed Feb 3 09:24:41 2016 -0800

----------------------------------------------------------------------
 acid-semantics.html                             |    4 +-
 apache_hbase_reference_guide.pdf                |    4 +-
 apache_hbase_reference_guide.pdfmarks           |    4 +-
 apidocs/constant-values.html                    |   51 +-
 apidocs/index-all.html                          |    6 +
 apidocs/org/apache/hadoop/hbase/HConstants.html |  420 +-
 .../org/apache/hadoop/hbase/HConstants.html     |   13 +-
 .../hbase/mapreduce/HFileOutputFormat2.html     |  299 +-
 book.html                                       |    2 +-
 bulk-loads.html                                 |    4 +-
 checkstyle-aggregate.html                       |  156 +-
 coc.html                                        |    4 +-
 cygwin.html                                     |    4 +-
 dependencies.html                               |    4 +-
 dependency-convergence.html                     |    4 +-
 dependency-info.html                            |    4 +-
 dependency-management.html                      |    4 +-
 devapidocs/constant-values.html                 |   51 +-
 devapidocs/deprecated-list.html                 |    2 +-
 devapidocs/index-all.html                       |    8 +-
 .../org/apache/hadoop/hbase/HConstants.html     |  422 +-
 .../InterfaceAudience.LimitedPrivate.html       |    2 +-
 .../hbase/classification/package-tree.html      |    8 +-
 .../hadoop/hbase/client/package-tree.html       |    6 +-
 .../hadoop/hbase/executor/package-tree.html     |    2 +-
 .../hadoop/hbase/filter/package-tree.html       |   10 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    6 +-
 .../hbase/mapreduce/HFileOutputFormat2.html     |    8 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |    4 +-
 ...talogJanitor.SplitParentFirstComparator.html |    8 +-
 .../hadoop/hbase/master/CatalogJanitor.html     |   10 +-
 .../hadoop/hbase/master/package-tree.html       |    4 +-
 .../hbase/master/procedure/package-tree.html    |    2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    8 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    2 +-
 .../hadoop/hbase/quotas/package-tree.html       |    4 +-
 .../hadoop/hbase/regionserver/HRegion.html      |    2 +-
 ...ltiVersionConcurrencyControl.WriteEntry.html |   16 +-
 .../MultiVersionConcurrencyControl.html         |   12 +-
 .../hadoop/hbase/regionserver/Region.html       |    2 +-
 .../regionserver/class-use/SequenceId.html      |    2 +-
 .../hadoop/hbase/regionserver/package-tree.html |   24 +-
 .../wal/FSHLog.RingBufferEventHandler.html      |   36 +-
 .../wal/FSHLog.RingBufferExceptionHandler.html  |   10 +-
 .../wal/FSHLog.SafePointZigZagLatch.html        |   16 +-
 .../regionserver/wal/FSHLog.SyncRunner.html     |   18 +-
 .../hadoop/hbase/regionserver/wal/FSHLog.html   |  206 +-
 .../hadoop/hbase/regionserver/wal/HLogKey.html  |    2 +-
 .../hbase/regionserver/wal/ReplayHLogKey.html   |   13 +-
 .../hbase/regionserver/wal/package-use.html     |    8 +-
 .../hbase/security/SecureBulkLoadUtil.html      |   10 +-
 .../hbase/security/access/package-tree.html     |    2 +-
 .../hadoop/hbase/security/package-tree.html     |    2 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |  270 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |  108 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |   54 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |  120 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |   48 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   24 +-
 .../apache/hadoop/hbase/util/package-tree.html  |    6 +-
 .../hadoop/hbase/wal/class-use/WALKey.html      |    2 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    4 +-
 .../apache/hadoop/hbase/HConstants.Modify.html  |   13 +-
 .../hbase/HConstants.OperationStatusCode.html   |   13 +-
 .../org/apache/hadoop/hbase/HConstants.html     |   13 +-
 .../HFileOutputFormat2.WriterLength.html        |  299 +-
 .../hbase/mapreduce/HFileOutputFormat2.html     |  299 +-
 ...talogJanitor.SplitParentFirstComparator.html |  443 +-
 .../hadoop/hbase/master/CatalogJanitor.html     |  443 +-
 .../HRegion.BatchOperationInProgress.html       |    2 +-
 .../regionserver/HRegion.FlushResultImpl.html   |    2 +-
 .../regionserver/HRegion.MutationBatch.html     |    2 +-
 .../HRegion.PrepareFlushResult.html             |    2 +-
 .../regionserver/HRegion.RegionScannerImpl.html |    2 +-
 .../hbase/regionserver/HRegion.ReplayBatch.html |    2 +-
 .../regionserver/HRegion.RowLockContext.html    |    2 +-
 .../hbase/regionserver/HRegion.RowLockImpl.html |    2 +-
 .../hbase/regionserver/HRegion.WriteState.html  |    2 +-
 .../hadoop/hbase/regionserver/HRegion.html      |    2 +-
 ...ltiVersionConcurrencyControl.WriteEntry.html |  229 +-
 .../MultiVersionConcurrencyControl.html         |  229 +-
 .../regionserver/Region.BulkLoadListener.html   |    2 +-
 .../regionserver/Region.FlushResult.Result.html |    2 +-
 .../hbase/regionserver/Region.FlushResult.html  |    2 +-
 .../hbase/regionserver/Region.Operation.html    |    2 +-
 .../hbase/regionserver/Region.RowLock.html      |    2 +-
 .../hadoop/hbase/regionserver/Region.html       |    2 +-
 .../wal/FSHLog.RingBufferEventHandler.html      | 3979 +++++++++---------
 .../wal/FSHLog.RingBufferExceptionHandler.html  | 3979 +++++++++---------
 .../wal/FSHLog.SafePointZigZagLatch.html        | 3979 +++++++++---------
 .../regionserver/wal/FSHLog.SyncRunner.html     | 3979 +++++++++---------
 .../hadoop/hbase/regionserver/wal/FSHLog.html   | 3979 +++++++++---------
 .../hadoop/hbase/regionserver/wal/HLogKey.html  |    2 +-
 .../hbase/regionserver/wal/ReplayHLogKey.html   |   69 +-
 .../hbase/security/SecureBulkLoadUtil.html      |   44 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |  270 +-
 .../tmpl/master/MasterStatusTmpl.Intf.html      |  270 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |  270 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |   72 +-
 .../regionserver/RSStatusTmpl.ImplData.html     |  120 +-
 .../tmpl/regionserver/RSStatusTmpl.Intf.html    |  120 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |  120 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   32 +-
 distribution-management.html                    |    4 +-
 export_control.html                             |    4 +-
 hbase-annotations/checkstyle.html               |    6 +-
 hbase-annotations/dependencies.html             |    6 +-
 hbase-annotations/dependency-convergence.html   |    6 +-
 hbase-annotations/dependency-info.html          |    6 +-
 hbase-annotations/dependency-management.html    |    6 +-
 hbase-annotations/distribution-management.html  |    6 +-
 hbase-annotations/index.html                    |    6 +-
 hbase-annotations/integration.html              |    6 +-
 hbase-annotations/issue-tracking.html           |    6 +-
 hbase-annotations/license.html                  |    6 +-
 hbase-annotations/mail-lists.html               |    6 +-
 hbase-annotations/plugin-management.html        |    6 +-
 hbase-annotations/plugins.html                  |    6 +-
 hbase-annotations/project-info.html             |    6 +-
 hbase-annotations/project-reports.html          |    6 +-
 hbase-annotations/project-summary.html          |    6 +-
 hbase-annotations/source-repository.html        |    6 +-
 hbase-annotations/team-list.html                |    6 +-
 hbase-spark/checkstyle.html                     |    6 +-
 hbase-spark/dependencies.html                   |    6 +-
 hbase-spark/dependency-convergence.html         |    6 +-
 hbase-spark/dependency-info.html                |    6 +-
 hbase-spark/dependency-management.html          |    6 +-
 hbase-spark/distribution-management.html        |    6 +-
 hbase-spark/index.html                          |    6 +-
 hbase-spark/integration.html                    |    6 +-
 hbase-spark/issue-tracking.html                 |    6 +-
 hbase-spark/license.html                        |  211 +-
 hbase-spark/mail-lists.html                     |    6 +-
 hbase-spark/plugin-management.html              |    6 +-
 hbase-spark/plugins.html                        |    6 +-
 hbase-spark/project-info.html                   |    6 +-
 hbase-spark/project-reports.html                |    6 +-
 hbase-spark/project-summary.html                |    6 +-
 hbase-spark/source-repository.html              |    6 +-
 hbase-spark/team-list.html                      |    6 +-
 index.html                                      |    4 +-
 integration.html                                |    4 +-
 issue-tracking.html                             |    4 +-
 license.html                                    |    4 +-
 mail-lists.html                                 |    4 +-
 metrics.html                                    |    4 +-
 modules.html                                    |    4 +-
 old_news.html                                   |    4 +-
 plugin-management.html                          |    4 +-
 plugins.html                                    |    4 +-
 poweredbyhbase.html                             |    4 +-
 project-info.html                               |    4 +-
 project-reports.html                            |    4 +-
 project-summary.html                            |    4 +-
 pseudo-distributed.html                         |    4 +-
 replication.html                                |    4 +-
 resources.html                                  |    4 +-
 source-repository.html                          |    4 +-
 sponsors.html                                   |    4 +-
 supportingprojects.html                         |    4 +-
 team-list.html                                  |    4 +-
 testdevapidocs/allclasses-frame.html            |    6 +
 testdevapidocs/allclasses-noframe.html          |    6 +
 testdevapidocs/constant-values.html             |   80 +
 testdevapidocs/index-all.html                   |  168 +-
 .../org/apache/hadoop/hbase/HTestConst.html     |    4 +-
 .../hadoop/hbase/IncrementPerformanceTest.html  |  482 +++
 .../hbase/IntegrationTestAcidGuarantees.html    |    4 +-
 .../hbase/class-use/HBaseTestingUtility.html    |  148 +-
 .../class-use/IncrementPerformanceTest.html     |  115 +
 .../client/TestFromClientSide.ListAppender.html |   14 +-
 .../hadoop/hbase/client/TestFromClientSide.html |  172 +-
 .../hbase/client/TestFromClientSide3.html       |   58 +-
 .../TestFromClientSideWithCoprocessor.html      |    4 +-
 .../hadoop/hbase/client/TestIncrement.html      |   12 +-
 ...tIncrementFromClientSideWithCoprocessor.html |  291 ++
 .../client/TestIncrementsFromClientSide.html    |  523 +++
 .../hbase/client/TestIntraRowPagination.html    |    4 +-
 .../client/class-use/TestFromClientSide.html    |    2 +-
 ...tIncrementFromClientSideWithCoprocessor.html |  115 +
 .../class-use/TestIncrementsFromClientSide.html |  158 +
 .../hadoop/hbase/client/package-frame.html      |    2 +
 .../hadoop/hbase/client/package-summary.html    |   15 +-
 .../hadoop/hbase/client/package-tree.html       |    5 +
 .../apache/hadoop/hbase/client/package-use.html |    7 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    2 +-
 .../hbase/mapreduce/TestHFileOutputFormat2.html |   56 +-
 .../org/apache/hadoop/hbase/package-frame.html  |    1 +
 .../apache/hadoop/hbase/package-summary.html    |  292 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   11 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    2 +-
 .../TestAtomicOperation.AtomicOperation.html    |   14 +-
 .../TestAtomicOperation.CheckAndPutThread.html  |    8 +-
 .../TestAtomicOperation.Incrementer.html        |   15 +-
 ...micOperation.MockHRegion.WrappedRowLock.html |    8 +-
 .../TestAtomicOperation.MockHRegion.html        |    6 +-
 .../TestAtomicOperation.PutThread.html          |    8 +-
 .../TestAtomicOperation.TestStep.html           |   16 +-
 .../hbase/regionserver/TestAtomicOperation.html |   33 +-
 .../TestHRegion.HRegionWithSeqId.html           |    4 +-
 .../hadoop/hbase/regionserver/TestHRegion.html  |   44 +-
 .../regionserver/TestHRegionReplayEvents.html   |  181 +-
 .../regionserver/TestRegionFavoredNodes.html    |    4 +-
 ...RegionIncrement.CrossRowCellIncrementer.html |  373 ++
 ...stRegionIncrement.SingleCellIncrementer.html |  373 ++
 .../hbase/regionserver/TestRegionIncrement.html |  518 +++
 .../TestRegionMergeTransaction.html             |    4 +-
 ...egionMergeTransactionOnCluster.MyMaster.html |    6 +-
 ...ransactionOnCluster.MyMasterRpcServices.html |   10 +-
 .../TestRegionMergeTransactionOnCluster.html    |   20 +-
 .../regionserver/TestRegionReplicaFailover.html |   48 +-
 .../TestTags.TestCoprocessorForTags.html        |    2 +-
 ...RegionIncrement.CrossRowCellIncrementer.html |  115 +
 ...stRegionIncrement.SingleCellIncrementer.html |  115 +
 .../class-use/TestRegionIncrement.html          |  115 +
 .../hbase/regionserver/package-frame.html       |    3 +
 .../hbase/regionserver/package-summary.html     |  173 +-
 .../hadoop/hbase/regionserver/package-tree.html |    5 +-
 .../replication/TestReplicationSmallTests.html  |   32 +-
 .../hadoop/hbase/util/TestHBaseFsckOneRS.html   |   40 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    2 +-
 testdevapidocs/overview-tree.html               |    9 +
 .../hadoop/hbase/IncrementPerformanceTest.html  |  200 +
 .../client/TestFromClientSide.ListAppender.html | 3814 ++++++++---------
 .../hadoop/hbase/client/TestFromClientSide.html | 3814 ++++++++---------
 .../hbase/client/TestFromClientSide3.html       |  907 ++--
 .../TestFromClientSideWithCoprocessor.html      |    2 +-
 .../hadoop/hbase/client/TestIncrement.html      |    2 +-
 ...tIncrementFromClientSideWithCoprocessor.html |  116 +
 .../client/TestIncrementsFromClientSide.html    |  445 ++
 ...eOutputFormat2.RandomKVGeneratingMapper.html | 1621 +++----
 .../hbase/mapreduce/TestHFileOutputFormat2.html | 1621 +++----
 .../TestAtomicOperation.AtomicOperation.html    | 1086 ++---
 .../TestAtomicOperation.CheckAndPutThread.html  | 1086 ++---
 .../TestAtomicOperation.Incrementer.html        | 1086 ++---
 ...micOperation.MockHRegion.WrappedRowLock.html | 1086 ++---
 .../TestAtomicOperation.MockHRegion.html        | 1086 ++---
 .../TestAtomicOperation.PutThread.html          | 1086 ++---
 .../TestAtomicOperation.TestStep.html           | 1086 ++---
 .../hbase/regionserver/TestAtomicOperation.html | 1086 ++---
 .../regionserver/TestHRegion.Appender.html      | 2126 +++++-----
 .../regionserver/TestHRegion.FlushThread.html   | 2126 +++++-----
 .../TestHRegion.GetTillDoneOrException.html     | 2126 +++++-----
 .../TestHRegion.HRegionWithSeqId.html           | 2126 +++++-----
 .../regionserver/TestHRegion.Incrementer.html   | 2126 +++++-----
 .../TestHRegion.IsFlushWALMarker.html           | 2126 +++++-----
 .../regionserver/TestHRegion.PutThread.html     | 2126 +++++-----
 .../hadoop/hbase/regionserver/TestHRegion.html  | 2126 +++++-----
 .../regionserver/TestHRegionReplayEvents.html   | 3211 +++++++-------
 ...RegionIncrement.CrossRowCellIncrementer.html |  317 ++
 ...stRegionIncrement.SingleCellIncrementer.html |  317 ++
 .../hbase/regionserver/TestRegionIncrement.html |  317 ++
 ...egionMergeTransactionOnCluster.MyMaster.html |  521 +--
 ...ransactionOnCluster.MyMasterRpcServices.html |  521 +--
 .../TestRegionMergeTransactionOnCluster.html    |  521 +--
 .../regionserver/TestRegionReplicaFailover.html |  749 ++--
 .../TestTags.TestCoprocessorForTags.html        |    2 +-
 .../hadoop/hbase/regionserver/TestTags.html     |    2 +-
 .../hbase/regionserver/wal/TestFSHLog.html      |    4 +-
 .../wal/TestWALReplay.CustomStoreFlusher.html   |    2 +-
 .../regionserver/wal/TestWALReplay.MockWAL.html |    2 +-
 .../wal/TestWALReplay.TestFlusher.html          |    2 +-
 .../hbase/regionserver/wal/TestWALReplay.html   |    2 +-
 .../replication/TestReplicationSmallTests.html  | 1444 ++++---
 ...eplicationEndpointNoMaster.WALEditCopro.html |    3 +-
 ...egionReplicaReplicationEndpointNoMaster.html |    3 +-
 .../hadoop/hbase/util/TestHBaseFsckOneRS.html   | 1791 ++++----
 xref-test/allclasses-frame.html                 |   18 +
 .../hadoop/hbase/IncrementPerformanceTest.html  |  142 +
 .../hadoop/hbase/client/TestFromClientSide.html | 3814 ++++++++---------
 .../hbase/client/TestFromClientSide3.html       |  907 ++--
 .../TestFromClientSideWithCoprocessor.html      |    2 +-
 .../hadoop/hbase/client/TestIncrement.html      |    2 +-
 ...tIncrementFromClientSideWithCoprocessor.html |   58 +
 .../client/TestIncrementsFromClientSide.html    |  387 ++
 .../hadoop/hbase/client/package-frame.html      |    6 +
 .../hadoop/hbase/client/package-summary.html    |   10 +
 .../hbase/mapreduce/TestHFileOutputFormat2.html | 1621 +++----
 .../org/apache/hadoop/hbase/package-frame.html  |    3 +
 .../apache/hadoop/hbase/package-summary.html    |    5 +
 .../hbase/regionserver/TestAtomicOperation.html | 1086 ++---
 .../hadoop/hbase/regionserver/TestHRegion.html  | 2126 +++++-----
 .../regionserver/TestHRegionReplayEvents.html   | 3211 +++++++-------
 .../hbase/regionserver/TestRegionIncrement.html |  259 ++
 .../TestRegionMergeTransactionOnCluster.html    |  521 +--
 .../regionserver/TestRegionReplicaFailover.html |  749 ++--
 .../hadoop/hbase/regionserver/TestTags.html     |    2 +-
 .../hbase/regionserver/package-frame.html       |    9 +
 .../hbase/regionserver/package-summary.html     |   15 +
 .../hbase/regionserver/wal/TestFSHLog.html      |    4 +-
 .../hbase/regionserver/wal/TestWALReplay.html   |    2 +-
 .../replication/TestReplicationSmallTests.html  | 1444 ++++---
 ...egionReplicaReplicationEndpointNoMaster.html |    3 +-
 .../hadoop/hbase/util/TestHBaseFsckOneRS.html   | 1791 ++++----
 xref/org/apache/hadoop/hbase/HConstants.html    |   13 +-
 .../hbase/mapreduce/HFileOutputFormat2.html     |  299 +-
 .../hadoop/hbase/master/CatalogJanitor.html     |  443 +-
 .../hadoop/hbase/regionserver/HRegion.html      |    2 +-
 .../MultiVersionConcurrencyControl.html         |  229 +-
 .../hadoop/hbase/regionserver/Region.html       |    2 +-
 .../hadoop/hbase/regionserver/wal/FSHLog.html   | 3979 +++++++++---------
 .../hadoop/hbase/regionserver/wal/HLogKey.html  |    2 +-
 .../hbase/regionserver/wal/ReplayHLogKey.html   |   69 +-
 .../hbase/security/SecureBulkLoadUtil.html      |   44 +-
 .../hbase/tmpl/common/TaskMonitorTmpl.html      |   90 +-
 .../hbase/tmpl/common/TaskMonitorTmplImpl.html  |   24 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |  270 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |   72 +-
 .../hbase/tmpl/regionserver/RSStatusTmpl.html   |  120 +-
 .../tmpl/regionserver/RSStatusTmplImpl.html     |   32 +-
 311 files changed, 54531 insertions(+), 48769 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 05cedf4..f259420 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -600,7 +600,7 @@ under the License. -->
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 329dcf1..194efe8 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.6, based on Prawn 1.2.1)
 /Producer (Apache HBase Team)
-/CreationDate (D:20160202155253+00'00')
-/ModDate (D:20160202155253+00'00')
+/CreationDate (D:20160203151627+00'00')
+/ModDate (D:20160203151627+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/apache_hbase_reference_guide.pdfmarks
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdfmarks b/apache_hbase_reference_guide.pdfmarks
index 3122eaf..fb7466d 100644
--- a/apache_hbase_reference_guide.pdfmarks
+++ b/apache_hbase_reference_guide.pdfmarks
@@ -2,8 +2,8 @@
   /Author (Apache HBase Team)
   /Subject ()
   /Keywords ()
-  /ModDate (D:20160202155447)
-  /CreationDate (D:20160202155447)
+  /ModDate (D:20160203151818)
+  /CreationDate (D:20160203151818)
   /Creator (Asciidoctor PDF 1.5.0.alpha.6, based on Prawn 1.2.1)
   /Producer ()
   /DOCINFO pdfmark

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/apidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/apidocs/constant-values.html b/apidocs/constant-values.html
index 483e4c2..5f68710 100644
--- a/apidocs/constant-values.html
+++ b/apidocs/constant-values.html
@@ -2165,160 +2165,167 @@
 <td class="colLast"><code>"hbase.table.max.rowsize"</code></td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.TEMPORARY_FS_DIRECTORY_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/hadoop/hbase/HConstants.html#TEMPORARY_FS_DIRECTORY_KEY">TEMPORARY_FS_DIRECTORY_KEY</a></code></td>
+<td class="colLast"><code>"hbase.fs.tmp.dir"</code></td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.THREAD_WAKE_FREQUENCY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#THREAD_WAKE_FREQUENCY">THREAD_WAKE_FREQUENCY</a></code></td>
 <td class="colLast"><code>"hbase.server.thread.wakefrequency"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.USE_META_REPLICAS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#USE_META_REPLICAS">USE_META_REPLICAS</a></code></td>
 <td class="colLast"><code>"hbase.meta.replicas.use"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.UTF8_ENCODING">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#UTF8_ENCODING">UTF8_ENCODING</a></code></td>
 <td class="colLast"><code>"UTF-8"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.VERSION_FILE_NAME">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#VERSION_FILE_NAME">VERSION_FILE_NAME</a></code></td>
 <td class="colLast"><code>"hbase.version"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.VERSION_FILE_WRITE_ATTEMPTS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#VERSION_FILE_WRITE_ATTEMPTS">VERSION_FILE_WRITE_ATTEMPTS</a></code></td>
 <td class="colLast"><code>"hbase.server.versionfile.writeattempts"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.VERSIONS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#VERSIONS">VERSIONS</a></code></td>
 <td class="colLast"><code>"VERSIONS"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.WAL_STORAGE_POLICY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#WAL_STORAGE_POLICY">WAL_STORAGE_POLICY</a></code></td>
 <td class="colLast"><code>"hbase.wal.storage.policy"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.WEEK_IN_SECONDS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#WEEK_IN_SECONDS">WEEK_IN_SECONDS</a></code></td>
 <td class="colLast"><code>604800</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZEROES">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZEROES">ZEROES</a></code></td>
 <td class="colLast"><code>"00000000000000"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZK_CFG_PROPERTY_PREFIX">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZK_CFG_PROPERTY_PREFIX">ZK_CFG_PROPERTY_PREFIX</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.property."</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZK_CLIENT_KERBEROS_PRINCIPAL">ZK_CLIENT_KERBEROS_PRINCIPAL</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.client.kerberos.principal"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZK_CLIENT_KEYTAB_FILE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZK_CLIENT_KEYTAB_FILE">ZK_CLIENT_KEYTAB_FILE</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.client.keytab.file"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZK_SERVER_KERBEROS_PRINCIPAL">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZK_SERVER_KERBEROS_PRINCIPAL">ZK_SERVER_KERBEROS_PRINCIPAL</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.server.kerberos.principal"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZK_SERVER_KEYTAB_FILE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZK_SERVER_KEYTAB_FILE">ZK_SERVER_KEYTAB_FILE</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.server.keytab.file"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZK_SESSION_TIMEOUT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZK_SESSION_TIMEOUT">ZK_SESSION_TIMEOUT</a></code></td>
 <td class="colLast"><code>"zookeeper.session.timeout"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_CLIENT_PORT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_CLIENT_PORT">ZOOKEEPER_CLIENT_PORT</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.property.clientPort"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_DATA_DIR">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_DATA_DIR">ZOOKEEPER_DATA_DIR</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.property.dataDir"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_MAX_CLIENT_CNXNS">ZOOKEEPER_MAX_CLIENT_CNXNS</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.property.maxClientCnxns"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_QUORUM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_QUORUM">ZOOKEEPER_QUORUM</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.quorum"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_RECOVERABLE_WAITTIME">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_RECOVERABLE_WAITTIME">ZOOKEEPER_RECOVERABLE_WAITTIME</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.recoverable.waittime"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_TICK_TIME">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_TICK_TIME">ZOOKEEPER_TICK_TIME</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.property.tickTime"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_USEMULTI">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_USEMULTI">ZOOKEEPER_USEMULTI</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.useMulti"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_ZNODE_PARENT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/apidocs/index-all.html
----------------------------------------------------------------------
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index a64f504..ed8442e 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -2776,6 +2776,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mob/MobConstants.html#DEFAULT_SWEEP_TOOL_MOB_COMPACTION_RATIO">DEFAULT_SWEEP_TOOL_MOB_COMPACTION_RATIO</a></span> - Static variable in class org.apache.hadoop.hbase.mob.<a href="./org/apache/hadoop/hbase/mob/MobConstants.html" title="class in org.apache.hadoop.hbase.mob">MobConstants</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HConstants.html#DEFAULT_TEMPORARY_HDFS_DIRECTORY">DEFAULT_TEMPORARY_HDFS_DIRECTORY</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/HConstants.html#DEFAULT_THREAD_WAKE_FREQUENCY">DEFAULT_THREAD_WAKE_FREQUENCY</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
 <dd>
 <div class="block">Default value for thread wake frequency</div>
@@ -13228,6 +13230,10 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <dd>&nbsp;</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/mob/MobConstants.html#TEMP_DIR_NAME">TEMP_DIR_NAME</a></span> - Static variable in class org.apache.hadoop.hbase.mob.<a href="./org/apache/hadoop/hbase/mob/MobConstants.html" title="class in org.apache.hadoop.hbase.mob">MobConstants</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="strong"><a href="./org/apache/hadoop/hbase/HConstants.html#TEMPORARY_FS_DIRECTORY_KEY">TEMPORARY_FS_DIRECTORY_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="./org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>
+<div class="block">Config key for hbase temporary directory in hdfs</div>
+</dd>
 <dt><span class="strong"><a href="./org/apache/hadoop/hbase/types/TerminatedWrapper.html#term">term</a></span> - Variable in class org.apache.hadoop.hbase.types.<a href="./org/apache/hadoop/hbase/types/TerminatedWrapper.html" title="class in org.apache.hadoop.hbase.types">TerminatedWrapper</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="./org/apache/hadoop/hbase/types/TerminatedWrapper.html" title="class in org.apache.hadoop.hbase.types"><span class="strong">TerminatedWrapper</span></a>&lt;<a href="./org/apache/hadoop/hbase/types/TerminatedWrapper.html" title="type parameter in TerminatedWrapper">T</a>&gt; - Class in <a href="./org/apache/hadoop/hbase/types/package-summary.html">org.apache.hadoop.hbase.types</a></dt>


[25/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html
index 6d18509..6104f50 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html
@@ -553,7 +553,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>generateRandomStartKeys</h4>
-<pre>private&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.363">generateRandomStartKeys</a>(int&nbsp;numKeys)</pre>
+<pre>private&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.364">generateRandomStartKeys</a>(int&nbsp;numKeys)</pre>
 </li>
 </ul>
 <a name="generateRandomSplitKeys(int)">
@@ -562,7 +562,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>generateRandomSplitKeys</h4>
-<pre>private&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.375">generateRandomSplitKeys</a>(int&nbsp;numKeys)</pre>
+<pre>private&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.376">generateRandomSplitKeys</a>(int&nbsp;numKeys)</pre>
 </li>
 </ul>
 <a name="testMRIncrementalLoad()">
@@ -571,7 +571,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMRIncrementalLoad</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.386">testMRIncrementalLoad</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.387">testMRIncrementalLoad</a>()
                            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -583,7 +583,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMRIncrementalLoadWithSplit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.392">testMRIncrementalLoadWithSplit</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.393">testMRIncrementalLoadWithSplit</a>()
                                     throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -595,7 +595,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMRIncrementalLoadWithLocality</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.406">testMRIncrementalLoadWithLocality</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.407">testMRIncrementalLoadWithLocality</a>()
                                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test for HFileOutputFormat2.LOCALITY_SENSITIVE_CONF_KEY = true
  This test could only check the correctness of original logic if LOCALITY_SENSITIVE_CONF_KEY
@@ -613,7 +613,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doIncrementalLoadTest</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.412">doIncrementalLoadTest</a>(boolean&nbsp;shouldChangeRegions,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.413">doIncrementalLoadTest</a>(boolean&nbsp;shouldChangeRegions,
                          boolean&nbsp;shouldKeepLocality)
                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -626,7 +626,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>runIncrementalPELoad</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.526">runIncrementalPELoad</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.527">runIncrementalPELoad</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                         org.apache.hadoop.hbase.HTableDescriptor&nbsp;tableDescriptor,
                         org.apache.hadoop.hbase.client.RegionLocator&nbsp;regionLocator,
                         org.apache.hadoop.fs.Path&nbsp;outDir)
@@ -647,7 +647,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSerializeDeserializeFamilyCompressionMap</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.555">testSerializeDeserializeFamilyCompressionMap</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.556">testSerializeDeserializeFamilyCompressionMap</a>()
                                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test for <code>HFileOutputFormat2#configureCompression(org.apache.hadoop.hbase.client.Table,
  Configuration)</code> and <code>(Configuration)</code>.
@@ -663,7 +663,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setupMockColumnFamiliesForCompression</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.578">setupMockColumnFamiliesForCompression</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.579">setupMockColumnFamiliesForCompression</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                                          <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.hadoop.hbase.io.compress.Compression.Algorithm&gt;&nbsp;familyToCompression)
                                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -676,7 +676,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMockColumnFamiliesForCompression</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.hadoop.hbase.io.compress.Compression.Algorithm&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.596">getMockColumnFamiliesForCompression</a>(int&nbsp;numCfs)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.hadoop.hbase.io.compress.Compression.Algorithm&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.597">getMockColumnFamiliesForCompression</a>(int&nbsp;numCfs)</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>a map from column family names to compression algorithms for
          testing column family compression. Column family names have special characters</dd></dl>
 </li>
@@ -687,7 +687,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSerializeDeserializeFamilyBloomTypeMap</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.626">testSerializeDeserializeFamilyBloomTypeMap</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.627">testSerializeDeserializeFamilyBloomTypeMap</a>()
                                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test for <code>HFileOutputFormat2#configureBloomType(org.apache.hadoop.hbase.client.Table,
  Configuration)</code> and <code>(Configuration)</code>.
@@ -703,7 +703,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setupMockColumnFamiliesForBloomType</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.652">setupMockColumnFamiliesForBloomType</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.653">setupMockColumnFamiliesForBloomType</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                                        <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.hadoop.hbase.regionserver.BloomType&gt;&nbsp;familyToDataBlockEncoding)
                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -716,7 +716,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMockColumnFamiliesForBloomType</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.hadoop.hbase.regionserver.BloomType&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.670">getMockColumnFamiliesForBloomType</a>(int&nbsp;numCfs)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.hadoop.hbase.regionserver.BloomType&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.671">getMockColumnFamiliesForBloomType</a>(int&nbsp;numCfs)</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>a map from column family names to compression algorithms for
          testing column family compression. Column family names have special characters</dd></dl>
 </li>
@@ -727,7 +727,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSerializeDeserializeFamilyBlockSizeMap</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.697">testSerializeDeserializeFamilyBlockSizeMap</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.698">testSerializeDeserializeFamilyBlockSizeMap</a>()
                                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test for <code>HFileOutputFormat2#configureBlockSize(org.apache.hadoop.hbase.client.Table,
  Configuration)</code> and <code>(Configuration)</code>.
@@ -743,7 +743,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setupMockColumnFamiliesForBlockSize</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.724">setupMockColumnFamiliesForBlockSize</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.725">setupMockColumnFamiliesForBlockSize</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                                        <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;familyToDataBlockEncoding)
                                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -756,7 +756,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMockColumnFamiliesForBlockSize</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.742">getMockColumnFamiliesForBlockSize</a>(int&nbsp;numCfs)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.743">getMockColumnFamiliesForBlockSize</a>(int&nbsp;numCfs)</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>a map from column family names to compression algorithms for
          testing column family compression. Column family names have special characters</dd></dl>
 </li>
@@ -767,7 +767,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSerializeDeserializeFamilyDataBlockEncodingMap</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.772">testSerializeDeserializeFamilyDataBlockEncodingMap</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.773">testSerializeDeserializeFamilyDataBlockEncodingMap</a>()
                                                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test for <code>HFileOutputFormat2.configureDataBlockEncoding(HTableDescriptor, Configuration)</code>
  and <code>HFileOutputFormat2.createFamilyDataBlockEncodingMap(Configuration)</code>.
@@ -783,7 +783,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setupMockColumnFamiliesForDataBlockEncoding</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.799">setupMockColumnFamiliesForDataBlockEncoding</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.800">setupMockColumnFamiliesForDataBlockEncoding</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                                                <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.hadoop.hbase.io.encoding.DataBlockEncoding&gt;&nbsp;familyToDataBlockEncoding)
                                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -796,7 +796,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMockColumnFamiliesForDataBlockEncoding</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.hadoop.hbase.io.encoding.DataBlockEncoding&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.817">getMockColumnFamiliesForDataBlockEncoding</a>(int&nbsp;numCfs)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,org.apache.hadoop.hbase.io.encoding.DataBlockEncoding&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.818">getMockColumnFamiliesForDataBlockEncoding</a>(int&nbsp;numCfs)</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>a map from column family names to compression algorithms for
          testing column family compression. Column family names have special characters</dd></dl>
 </li>
@@ -807,7 +807,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setupMockStartKeys</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.838">setupMockStartKeys</a>(org.apache.hadoop.hbase.client.RegionLocator&nbsp;table)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.839">setupMockStartKeys</a>(org.apache.hadoop.hbase.client.RegionLocator&nbsp;table)
                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -819,7 +819,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setupMockTableName</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.848">setupMockTableName</a>(org.apache.hadoop.hbase.client.RegionLocator&nbsp;table)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.849">setupMockTableName</a>(org.apache.hadoop.hbase.client.RegionLocator&nbsp;table)
                          throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
@@ -831,7 +831,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testColumnFamilySettings</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.858">testColumnFamilySettings</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.859">testColumnFamilySettings</a>()
                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test that <code>HFileOutputFormat2</code> RecordWriter uses compression and
  bloom filter settings from the column family descriptor</div>
@@ -845,7 +845,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>writeRandomKeyValues</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.932">writeRandomKeyValues</a>(org.apache.hadoop.mapreduce.RecordWriter&lt;org.apache.hadoop.hbase.io.ImmutableBytesWritable,org.apache.hadoop.hbase.Cell&gt;&nbsp;writer,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.933">writeRandomKeyValues</a>(org.apache.hadoop.mapreduce.RecordWriter&lt;org.apache.hadoop.hbase.io.ImmutableBytesWritable,org.apache.hadoop.hbase.Cell&gt;&nbsp;writer,
                         org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context,
                         <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;byte[]&gt;&nbsp;families,
                         int&nbsp;numRows)
@@ -864,7 +864,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testExcludeAllFromMinorCompaction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.963">testExcludeAllFromMinorCompaction</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.964">testExcludeAllFromMinorCompaction</a>()
                                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This test is to test the scenario happened in HBASE-6901.
  All files are bulk loaded and excluded from minor compaction.
@@ -880,7 +880,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testExcludeMinorCompaction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.1044">testExcludeMinorCompaction</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.1045">testExcludeMinorCompaction</a>()
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -892,7 +892,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>quickPoll</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.1123">quickPoll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;c,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.1124">quickPoll</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;c,
              int&nbsp;waitMs)
                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -905,7 +905,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.1135">main</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.1136">main</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
@@ -917,7 +917,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>manualTest</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.1139">manualTest</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html#line.1140">manualTest</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)
                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/package-frame.html
index 2f0bb80..8bfc29a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-frame.html
@@ -61,6 +61,7 @@
 <li><a href="HFilePerformanceEvaluation.UniformRandomReadBenchmark.html" title="class in org.apache.hadoop.hbase" target="classFrame">HFilePerformanceEvaluation.UniformRandomReadBenchmark</a></li>
 <li><a href="HFilePerformanceEvaluation.UniformRandomSmallScan.html" title="class in org.apache.hadoop.hbase" target="classFrame">HFilePerformanceEvaluation.UniformRandomSmallScan</a></li>
 <li><a href="HTestConst.html" title="class in org.apache.hadoop.hbase" target="classFrame">HTestConst</a></li>
+<li><a href="IncrementPerformanceTest.html" title="class in org.apache.hadoop.hbase" target="classFrame">IncrementPerformanceTest</a></li>
 <li><a href="IntegrationTestAcidGuarantees.html" title="class in org.apache.hadoop.hbase" target="classFrame">IntegrationTestAcidGuarantees</a></li>
 <li><a href="IntegrationTestBase.html" title="class in org.apache.hadoop.hbase" target="classFrame">IntegrationTestBase</a></li>
 <li><a href="IntegrationTestDDLMasterFailover.html" title="class in org.apache.hadoop.hbase" target="classFrame">IntegrationTestDDLMasterFailover</a></li>

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

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

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


[40/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html
index 0129065..f72db18 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html
@@ -222,227 +222,228 @@
 <span class="sourceLineNo">214</span>  int scan() throws IOException {<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    try {<a name="line.215"></a>
 <span class="sourceLineNo">216</span>      if (!alreadyRunning.compareAndSet(false, true)) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        return 0;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      Triple&lt;Integer, Map&lt;HRegionInfo, Result&gt;, Map&lt;HRegionInfo, Result&gt;&gt; scanTriple =<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        getMergedRegionsAndSplitParents();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      int count = scanTriple.getFirst();<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span>       * clean merge regions first<a name="line.223"></a>
-<span class="sourceLineNo">224</span>       */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      int mergeCleaned = 0;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      Map&lt;HRegionInfo, Result&gt; mergedRegions = scanTriple.getSecond();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      for (Map.Entry&lt;HRegionInfo, Result&gt; e : mergedRegions.entrySet()) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        PairOfSameType&lt;HRegionInfo&gt; p = MetaTableAccessor.getMergeRegions(e.getValue());<a name="line.228"></a>
-<span class="sourceLineNo">229</span>        HRegionInfo regionA = p.getFirst();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        HRegionInfo regionB = p.getSecond();<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        if (regionA == null || regionB == null) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>          LOG.warn("Unexpected references regionA="<a name="line.232"></a>
-<span class="sourceLineNo">233</span>              + (regionA == null ? "null" : regionA.getRegionNameAsString())<a name="line.233"></a>
-<span class="sourceLineNo">234</span>              + ",regionB="<a name="line.234"></a>
-<span class="sourceLineNo">235</span>              + (regionB == null ? "null" : regionB.getRegionNameAsString())<a name="line.235"></a>
-<span class="sourceLineNo">236</span>              + " in merged region " + e.getKey().getRegionNameAsString());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        } else {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          if (cleanMergeRegion(e.getKey(), regionA, regionB)) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>            mergeCleaned++;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>          }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        }<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      /**<a name="line.243"></a>
-<span class="sourceLineNo">244</span>       * clean split parents<a name="line.244"></a>
-<span class="sourceLineNo">245</span>       */<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      Map&lt;HRegionInfo, Result&gt; splitParents = scanTriple.getThird();<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>      // Now work on our list of found parents. See if any we can clean up.<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      int splitCleaned = 0;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // regions whose parents are still around<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      HashSet&lt;String&gt; parentNotCleaned = new HashSet&lt;String&gt;();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      for (Map.Entry&lt;HRegionInfo, Result&gt; e : splitParents.entrySet()) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        if (!parentNotCleaned.contains(e.getKey().getEncodedName()) &amp;&amp;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>            cleanParent(e.getKey(), e.getValue())) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          splitCleaned++;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        } else {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>          // We could not clean the parent, so it's daughters should not be<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          // cleaned either (HBASE-6160)<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          PairOfSameType&lt;HRegionInfo&gt; daughters =<a name="line.259"></a>
-<span class="sourceLineNo">260</span>              MetaTableAccessor.getDaughterRegions(e.getValue());<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          parentNotCleaned.add(daughters.getFirst().getEncodedName());<a name="line.261"></a>
-<span class="sourceLineNo">262</span>          parentNotCleaned.add(daughters.getSecond().getEncodedName());<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>      if ((mergeCleaned + splitCleaned) != 0) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        LOG.info("Scanned " + count + " catalog row(s), gc'd " + mergeCleaned<a name="line.266"></a>
-<span class="sourceLineNo">267</span>            + " unreferenced merged region(s) and " + splitCleaned<a name="line.267"></a>
-<span class="sourceLineNo">268</span>            + " unreferenced parent region(s)");<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      } else if (LOG.isTraceEnabled()) {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        LOG.trace("Scanned " + count + " catalog row(s), gc'd " + mergeCleaned<a name="line.270"></a>
-<span class="sourceLineNo">271</span>            + " unreferenced merged region(s) and " + splitCleaned<a name="line.271"></a>
-<span class="sourceLineNo">272</span>            + " unreferenced parent region(s)");<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      return mergeCleaned + splitCleaned;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    } finally {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      alreadyRunning.set(false);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  }<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  /**<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * Compare HRegionInfos in a way that has split parents sort BEFORE their<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   * daughters.<a name="line.282"></a>
-<span class="sourceLineNo">283</span>   */<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  static class SplitParentFirstComparator implements Comparator&lt;HRegionInfo&gt; {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    Comparator&lt;byte[]&gt; rowEndKeyComparator = new Bytes.RowEndKeyComparator();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    @Override<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    public int compare(HRegionInfo left, HRegionInfo right) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      // This comparator differs from the one HRegionInfo in that it sorts<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      // parent before daughters.<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      if (left == null) return -1;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      if (right == null) return 1;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // Same table name.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      int result = left.getTable().compareTo(right.getTable());<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      if (result != 0) return result;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      // Compare start keys.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      result = Bytes.compareTo(left.getStartKey(), right.getStartKey());<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      if (result != 0) return result;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      // Compare end keys, but flip the operands so parent comes first<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      result = rowEndKeyComparator.compare(right.getEndKey(), left.getEndKey());<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>      return result;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  /**<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * If daughters no longer hold reference to the parents, delete the parent.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @param parent HRegionInfo of split offlined parent<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param rowContent Content of &lt;code&gt;parent&lt;/code&gt; row in<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * &lt;code&gt;metaRegionName&lt;/code&gt;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @return True if we removed &lt;code&gt;parent&lt;/code&gt; from meta table and from<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   * the filesystem.<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * @throws IOException<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   */<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  boolean cleanParent(final HRegionInfo parent, Result rowContent)<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  throws IOException {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    boolean result = false;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    // Check whether it is a merged region and not clean reference<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    // No necessary to check MERGEB_QUALIFIER because these two qualifiers will<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    // be inserted/deleted together<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    if (rowContent.getValue(HConstants.CATALOG_FAMILY,<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        HConstants.MERGEA_QUALIFIER) != null) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      // wait cleaning merge region first<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      return result;<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // Run checks on each daughter split.<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    PairOfSameType&lt;HRegionInfo&gt; daughters = MetaTableAccessor.getDaughterRegions(rowContent);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    Pair&lt;Boolean, Boolean&gt; a = checkDaughterInFs(parent, daughters.getFirst());<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    Pair&lt;Boolean, Boolean&gt; b = checkDaughterInFs(parent, daughters.getSecond());<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    if (hasNoReferences(a) &amp;&amp; hasNoReferences(b)) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>      LOG.debug("Deleting region " + parent.getRegionNameAsString() +<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        " because daughter splits no longer hold references");<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      if (LOG.isTraceEnabled()) LOG.trace("Archiving parent region: " + parent);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      HFileArchiver.archiveRegion(this.services.getConfiguration(), fs, parent);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      MetaTableAccessor.deleteRegion(this.connection, parent);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      result = true;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    return result;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /**<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * @param p A pair where the first boolean says whether or not the daughter<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   * region directory exists in the filesystem and then the second boolean says<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * whether the daughter has references to the parent.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @return True the passed &lt;code&gt;p&lt;/code&gt; signifies no references.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private boolean hasNoReferences(final Pair&lt;Boolean, Boolean&gt; p) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    return !p.getFirst() || !p.getSecond();<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  /**<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * Checks if a daughter region -- either splitA or splitB -- still holds<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   * references to parent.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * @param parent Parent region<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @param daughter Daughter region<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * @return A pair where the first boolean says whether or not the daughter<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * region directory exists in the filesystem and then the second boolean says<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * whether the daughter has references to the parent.<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @throws IOException<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  Pair&lt;Boolean, Boolean&gt; checkDaughterInFs(final HRegionInfo parent, final HRegionInfo daughter)<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  throws IOException {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    if (daughter == null)  {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      return new Pair&lt;Boolean, Boolean&gt;(Boolean.FALSE, Boolean.FALSE);<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>    FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    Path rootdir = this.services.getMasterFileSystem().getRootDir();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    Path tabledir = FSUtils.getTableDir(rootdir, daughter.getTable());<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>    Path daughterRegionDir = new Path(tabledir, daughter.getEncodedName());<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>    HRegionFileSystem regionFs = null;<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>      if (!FSUtils.isExists(fs, daughterRegionDir)) {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return new Pair&lt;Boolean, Boolean&gt;(Boolean.FALSE, Boolean.FALSE);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    } catch (IOException ioe) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      LOG.warn("Error trying to determine if daughter region exists, " +<a name="line.380"></a>
-<span class="sourceLineNo">381</span>               "assuming exists and has references", ioe);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      return new Pair&lt;Boolean, Boolean&gt;(Boolean.TRUE, Boolean.TRUE);<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>    try {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          this.services.getConfiguration(), fs, tabledir, daughter, true);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    } catch (IOException e) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      LOG.warn("Error trying to determine referenced files from : " + daughter.getEncodedName()<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          + ", to: " + parent.getEncodedName() + " assuming has references", e);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      return new Pair&lt;Boolean, Boolean&gt;(Boolean.TRUE, Boolean.TRUE);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    }<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>    boolean references = false;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    HTableDescriptor parentDescriptor = getTableDescriptor(parent.getTable());<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    for (HColumnDescriptor family: parentDescriptor.getFamilies()) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      if ((references = regionFs.hasReferences(family.getNameAsString()))) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        break;<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>    return new Pair&lt;Boolean, Boolean&gt;(Boolean.TRUE, Boolean.valueOf(references));<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>  private HTableDescriptor getTableDescriptor(final TableName tableName)<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      throws FileNotFoundException, IOException {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    return this.services.getTableDescriptors().get(tableName);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  /**<a name="line.409"></a>
-<span class="sourceLineNo">410</span>   * Checks if the specified region has merge qualifiers, if so, try to clean<a name="line.410"></a>
-<span class="sourceLineNo">411</span>   * them<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * @param region<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * @return true if the specified region doesn't have merge qualifier now<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * @throws IOException<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   */<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  public boolean cleanMergeQualifier(final HRegionInfo region)<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      throws IOException {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    // Get merge regions if it is a merged region and already has merge<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    // qualifier<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    Pair&lt;HRegionInfo, HRegionInfo&gt; mergeRegions = MetaTableAccessor<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        .getRegionsFromMergeQualifier(this.services.getConnection(),<a name="line.421"></a>
-<span class="sourceLineNo">422</span>          region.getRegionName());<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    if (mergeRegions == null<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        || (mergeRegions.getFirst() == null &amp;&amp; mergeRegions.getSecond() == null)) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      // It doesn't have merge qualifier, no need to clean<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      return true;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    }<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    // It shouldn't happen, we must insert/delete these two qualifiers together<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    if (mergeRegions.getFirst() == null || mergeRegions.getSecond() == null) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      LOG.error("Merged region " + region.getRegionNameAsString()<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          + " has only one merge qualifier in META.");<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      return false;<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    return cleanMergeRegion(region, mergeRegions.getFirst(),<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        mergeRegions.getSecond());<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
-<span class="sourceLineNo">437</span>}<a name="line.437"></a>
+<span class="sourceLineNo">217</span>        LOG.debug("CatalogJanitor already running");<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        return 0;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      Triple&lt;Integer, Map&lt;HRegionInfo, Result&gt;, Map&lt;HRegionInfo, Result&gt;&gt; scanTriple =<a name="line.220"></a>
+<span class="sourceLineNo">221</span>        getMergedRegionsAndSplitParents();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      int count = scanTriple.getFirst();<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      /**<a name="line.223"></a>
+<span class="sourceLineNo">224</span>       * clean merge regions first<a name="line.224"></a>
+<span class="sourceLineNo">225</span>       */<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      int mergeCleaned = 0;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      Map&lt;HRegionInfo, Result&gt; mergedRegions = scanTriple.getSecond();<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      for (Map.Entry&lt;HRegionInfo, Result&gt; e : mergedRegions.entrySet()) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        PairOfSameType&lt;HRegionInfo&gt; p = MetaTableAccessor.getMergeRegions(e.getValue());<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        HRegionInfo regionA = p.getFirst();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        HRegionInfo regionB = p.getSecond();<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        if (regionA == null || regionB == null) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>          LOG.warn("Unexpected references regionA="<a name="line.233"></a>
+<span class="sourceLineNo">234</span>              + (regionA == null ? "null" : regionA.getRegionNameAsString())<a name="line.234"></a>
+<span class="sourceLineNo">235</span>              + ",regionB="<a name="line.235"></a>
+<span class="sourceLineNo">236</span>              + (regionB == null ? "null" : regionB.getRegionNameAsString())<a name="line.236"></a>
+<span class="sourceLineNo">237</span>              + " in merged region " + e.getKey().getRegionNameAsString());<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        } else {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          if (cleanMergeRegion(e.getKey(), regionA, regionB)) {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>            mergeCleaned++;<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          }<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      }<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      /**<a name="line.244"></a>
+<span class="sourceLineNo">245</span>       * clean split parents<a name="line.245"></a>
+<span class="sourceLineNo">246</span>       */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      Map&lt;HRegionInfo, Result&gt; splitParents = scanTriple.getThird();<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>      // Now work on our list of found parents. See if any we can clean up.<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      int splitCleaned = 0;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      // regions whose parents are still around<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      HashSet&lt;String&gt; parentNotCleaned = new HashSet&lt;String&gt;();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      for (Map.Entry&lt;HRegionInfo, Result&gt; e : splitParents.entrySet()) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        if (!parentNotCleaned.contains(e.getKey().getEncodedName()) &amp;&amp;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>            cleanParent(e.getKey(), e.getValue())) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>          splitCleaned++;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>        } else {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>          // We could not clean the parent, so it's daughters should not be<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          // cleaned either (HBASE-6160)<a name="line.259"></a>
+<span class="sourceLineNo">260</span>          PairOfSameType&lt;HRegionInfo&gt; daughters =<a name="line.260"></a>
+<span class="sourceLineNo">261</span>              MetaTableAccessor.getDaughterRegions(e.getValue());<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          parentNotCleaned.add(daughters.getFirst().getEncodedName());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>          parentNotCleaned.add(daughters.getSecond().getEncodedName());<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>      if ((mergeCleaned + splitCleaned) != 0) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        LOG.info("Scanned " + count + " catalog row(s), gc'd " + mergeCleaned<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            + " unreferenced merged region(s) and " + splitCleaned<a name="line.268"></a>
+<span class="sourceLineNo">269</span>            + " unreferenced parent region(s)");<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      } else if (LOG.isTraceEnabled()) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        LOG.trace("Scanned " + count + " catalog row(s), gc'd " + mergeCleaned<a name="line.271"></a>
+<span class="sourceLineNo">272</span>            + " unreferenced merged region(s) and " + splitCleaned<a name="line.272"></a>
+<span class="sourceLineNo">273</span>            + " unreferenced parent region(s)");<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      return mergeCleaned + splitCleaned;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    } finally {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      alreadyRunning.set(false);<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>  /**<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * Compare HRegionInfos in a way that has split parents sort BEFORE their<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * daughters.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   */<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  static class SplitParentFirstComparator implements Comparator&lt;HRegionInfo&gt; {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    Comparator&lt;byte[]&gt; rowEndKeyComparator = new Bytes.RowEndKeyComparator();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    @Override<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    public int compare(HRegionInfo left, HRegionInfo right) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      // This comparator differs from the one HRegionInfo in that it sorts<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      // parent before daughters.<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      if (left == null) return -1;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      if (right == null) return 1;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      // Same table name.<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      int result = left.getTable().compareTo(right.getTable());<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      if (result != 0) return result;<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      // Compare start keys.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      result = Bytes.compareTo(left.getStartKey(), right.getStartKey());<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      if (result != 0) return result;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      // Compare end keys, but flip the operands so parent comes first<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      result = rowEndKeyComparator.compare(right.getEndKey(), left.getEndKey());<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>      return result;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>  /**<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * If daughters no longer hold reference to the parents, delete the parent.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   * @param parent HRegionInfo of split offlined parent<a name="line.308"></a>
+<span class="sourceLineNo">309</span>   * @param rowContent Content of &lt;code&gt;parent&lt;/code&gt; row in<a name="line.309"></a>
+<span class="sourceLineNo">310</span>   * &lt;code&gt;metaRegionName&lt;/code&gt;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>   * @return True if we removed &lt;code&gt;parent&lt;/code&gt; from meta table and from<a name="line.311"></a>
+<span class="sourceLineNo">312</span>   * the filesystem.<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * @throws IOException<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  boolean cleanParent(final HRegionInfo parent, Result rowContent)<a name="line.315"></a>
+<span class="sourceLineNo">316</span>  throws IOException {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    boolean result = false;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    // Check whether it is a merged region and not clean reference<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    // No necessary to check MERGEB_QUALIFIER because these two qualifiers will<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    // be inserted/deleted together<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    if (rowContent.getValue(HConstants.CATALOG_FAMILY,<a name="line.321"></a>
+<span class="sourceLineNo">322</span>        HConstants.MERGEA_QUALIFIER) != null) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      // wait cleaning merge region first<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      return result;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    // Run checks on each daughter split.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    PairOfSameType&lt;HRegionInfo&gt; daughters = MetaTableAccessor.getDaughterRegions(rowContent);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    Pair&lt;Boolean, Boolean&gt; a = checkDaughterInFs(parent, daughters.getFirst());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Pair&lt;Boolean, Boolean&gt; b = checkDaughterInFs(parent, daughters.getSecond());<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    if (hasNoReferences(a) &amp;&amp; hasNoReferences(b)) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      LOG.debug("Deleting region " + parent.getRegionNameAsString() +<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        " because daughter splits no longer hold references");<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      if (LOG.isTraceEnabled()) LOG.trace("Archiving parent region: " + parent);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      HFileArchiver.archiveRegion(this.services.getConfiguration(), fs, parent);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      MetaTableAccessor.deleteRegion(this.connection, parent);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      result = true;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    return result;<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>  /**<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * @param p A pair where the first boolean says whether or not the daughter<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * region directory exists in the filesystem and then the second boolean says<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * whether the daughter has references to the parent.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return True the passed &lt;code&gt;p&lt;/code&gt; signifies no references.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   */<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private boolean hasNoReferences(final Pair&lt;Boolean, Boolean&gt; p) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    return !p.getFirst() || !p.getSecond();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  }<a name="line.350"></a>
+<span class="sourceLineNo">351</span><a name="line.351"></a>
+<span class="sourceLineNo">352</span>  /**<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   * Checks if a daughter region -- either splitA or splitB -- still holds<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * references to parent.<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param parent Parent region<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @param daughter Daughter region<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @return A pair where the first boolean says whether or not the daughter<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * region directory exists in the filesystem and then the second boolean says<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   * whether the daughter has references to the parent.<a name="line.359"></a>
+<span class="sourceLineNo">360</span>   * @throws IOException<a name="line.360"></a>
+<span class="sourceLineNo">361</span>   */<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  Pair&lt;Boolean, Boolean&gt; checkDaughterInFs(final HRegionInfo parent, final HRegionInfo daughter)<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  throws IOException {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    if (daughter == null)  {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      return new Pair&lt;Boolean, Boolean&gt;(Boolean.FALSE, Boolean.FALSE);<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>    FileSystem fs = this.services.getMasterFileSystem().getFileSystem();<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    Path rootdir = this.services.getMasterFileSystem().getRootDir();<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    Path tabledir = FSUtils.getTableDir(rootdir, daughter.getTable());<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>    Path daughterRegionDir = new Path(tabledir, daughter.getEncodedName());<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>    HRegionFileSystem regionFs = null;<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    try {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      if (!FSUtils.isExists(fs, daughterRegionDir)) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        return new Pair&lt;Boolean, Boolean&gt;(Boolean.FALSE, Boolean.FALSE);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    } catch (IOException ioe) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      LOG.warn("Error trying to determine if daughter region exists, " +<a name="line.381"></a>
+<span class="sourceLineNo">382</span>               "assuming exists and has references", ioe);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      return new Pair&lt;Boolean, Boolean&gt;(Boolean.TRUE, Boolean.TRUE);<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>    try {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      regionFs = HRegionFileSystem.openRegionFromFileSystem(<a name="line.387"></a>
+<span class="sourceLineNo">388</span>          this.services.getConfiguration(), fs, tabledir, daughter, true);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    } catch (IOException e) {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      LOG.warn("Error trying to determine referenced files from : " + daughter.getEncodedName()<a name="line.390"></a>
+<span class="sourceLineNo">391</span>          + ", to: " + parent.getEncodedName() + " assuming has references", e);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      return new Pair&lt;Boolean, Boolean&gt;(Boolean.TRUE, Boolean.TRUE);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
+<span class="sourceLineNo">394</span><a name="line.394"></a>
+<span class="sourceLineNo">395</span>    boolean references = false;<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    HTableDescriptor parentDescriptor = getTableDescriptor(parent.getTable());<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    for (HColumnDescriptor family: parentDescriptor.getFamilies()) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      if ((references = regionFs.hasReferences(family.getNameAsString()))) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        break;<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>    return new Pair&lt;Boolean, Boolean&gt;(Boolean.TRUE, Boolean.valueOf(references));<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>  private HTableDescriptor getTableDescriptor(final TableName tableName)<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      throws FileNotFoundException, IOException {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    return this.services.getTableDescriptors().get(tableName);<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>   * Checks if the specified region has merge qualifiers, if so, try to clean<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * them<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   * @param region<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   * @return true if the specified region doesn't have merge qualifier now<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * @throws IOException<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public boolean cleanMergeQualifier(final HRegionInfo region)<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      throws IOException {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    // Get merge regions if it is a merged region and already has merge<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    // qualifier<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    Pair&lt;HRegionInfo, HRegionInfo&gt; mergeRegions = MetaTableAccessor<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        .getRegionsFromMergeQualifier(this.services.getConnection(),<a name="line.422"></a>
+<span class="sourceLineNo">423</span>          region.getRegionName());<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    if (mergeRegions == null<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        || (mergeRegions.getFirst() == null &amp;&amp; mergeRegions.getSecond() == null)) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      // It doesn't have merge qualifier, no need to clean<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      return true;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    // It shouldn't happen, we must insert/delete these two qualifiers together<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    if (mergeRegions.getFirst() == null || mergeRegions.getSecond() == null) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      LOG.error("Merged region " + region.getRegionNameAsString()<a name="line.431"></a>
+<span class="sourceLineNo">432</span>          + " has only one merge qualifier in META.");<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      return false;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    }<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    return cleanMergeRegion(region, mergeRegions.getFirst(),<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        mergeRegions.getSecond());<a name="line.436"></a>
+<span class="sourceLineNo">437</span>  }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>}<a name="line.438"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperationInProgress.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperationInProgress.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperationInProgress.html
index a0ca7d9..e2c4389 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperationInProgress.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperationInProgress.html
@@ -1283,7 +1283,7 @@
 <span class="sourceLineNo">1275</span><a name="line.1275"></a>
 <span class="sourceLineNo">1276</span>  @Override<a name="line.1276"></a>
 <span class="sourceLineNo">1277</span>  public long getReadPoint(IsolationLevel isolationLevel) {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>    if (isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
+<span class="sourceLineNo">1278</span>    if (isolationLevel != null &amp;&amp; isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
 <span class="sourceLineNo">1279</span>      // This scan can read even uncommitted transactions<a name="line.1279"></a>
 <span class="sourceLineNo">1280</span>      return Long.MAX_VALUE;<a name="line.1280"></a>
 <span class="sourceLineNo">1281</span>    }<a name="line.1281"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/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 a0ca7d9..e2c4389 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
@@ -1283,7 +1283,7 @@
 <span class="sourceLineNo">1275</span><a name="line.1275"></a>
 <span class="sourceLineNo">1276</span>  @Override<a name="line.1276"></a>
 <span class="sourceLineNo">1277</span>  public long getReadPoint(IsolationLevel isolationLevel) {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>    if (isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
+<span class="sourceLineNo">1278</span>    if (isolationLevel != null &amp;&amp; isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
 <span class="sourceLineNo">1279</span>      // This scan can read even uncommitted transactions<a name="line.1279"></a>
 <span class="sourceLineNo">1280</span>      return Long.MAX_VALUE;<a name="line.1280"></a>
 <span class="sourceLineNo">1281</span>    }<a name="line.1281"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatch.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatch.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatch.html
index a0ca7d9..e2c4389 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatch.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatch.html
@@ -1283,7 +1283,7 @@
 <span class="sourceLineNo">1275</span><a name="line.1275"></a>
 <span class="sourceLineNo">1276</span>  @Override<a name="line.1276"></a>
 <span class="sourceLineNo">1277</span>  public long getReadPoint(IsolationLevel isolationLevel) {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>    if (isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
+<span class="sourceLineNo">1278</span>    if (isolationLevel != null &amp;&amp; isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
 <span class="sourceLineNo">1279</span>      // This scan can read even uncommitted transactions<a name="line.1279"></a>
 <span class="sourceLineNo">1280</span>      return Long.MAX_VALUE;<a name="line.1280"></a>
 <span class="sourceLineNo">1281</span>    }<a name="line.1281"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/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 a0ca7d9..e2c4389 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
@@ -1283,7 +1283,7 @@
 <span class="sourceLineNo">1275</span><a name="line.1275"></a>
 <span class="sourceLineNo">1276</span>  @Override<a name="line.1276"></a>
 <span class="sourceLineNo">1277</span>  public long getReadPoint(IsolationLevel isolationLevel) {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>    if (isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
+<span class="sourceLineNo">1278</span>    if (isolationLevel != null &amp;&amp; isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
 <span class="sourceLineNo">1279</span>      // This scan can read even uncommitted transactions<a name="line.1279"></a>
 <span class="sourceLineNo">1280</span>      return Long.MAX_VALUE;<a name="line.1280"></a>
 <span class="sourceLineNo">1281</span>    }<a name="line.1281"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/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 a0ca7d9..e2c4389 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
@@ -1283,7 +1283,7 @@
 <span class="sourceLineNo">1275</span><a name="line.1275"></a>
 <span class="sourceLineNo">1276</span>  @Override<a name="line.1276"></a>
 <span class="sourceLineNo">1277</span>  public long getReadPoint(IsolationLevel isolationLevel) {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>    if (isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
+<span class="sourceLineNo">1278</span>    if (isolationLevel != null &amp;&amp; isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
 <span class="sourceLineNo">1279</span>      // This scan can read even uncommitted transactions<a name="line.1279"></a>
 <span class="sourceLineNo">1280</span>      return Long.MAX_VALUE;<a name="line.1280"></a>
 <span class="sourceLineNo">1281</span>    }<a name="line.1281"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatch.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatch.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatch.html
index a0ca7d9..e2c4389 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatch.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatch.html
@@ -1283,7 +1283,7 @@
 <span class="sourceLineNo">1275</span><a name="line.1275"></a>
 <span class="sourceLineNo">1276</span>  @Override<a name="line.1276"></a>
 <span class="sourceLineNo">1277</span>  public long getReadPoint(IsolationLevel isolationLevel) {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>    if (isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
+<span class="sourceLineNo">1278</span>    if (isolationLevel != null &amp;&amp; isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
 <span class="sourceLineNo">1279</span>      // This scan can read even uncommitted transactions<a name="line.1279"></a>
 <span class="sourceLineNo">1280</span>      return Long.MAX_VALUE;<a name="line.1280"></a>
 <span class="sourceLineNo">1281</span>    }<a name="line.1281"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/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 a0ca7d9..e2c4389 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
@@ -1283,7 +1283,7 @@
 <span class="sourceLineNo">1275</span><a name="line.1275"></a>
 <span class="sourceLineNo">1276</span>  @Override<a name="line.1276"></a>
 <span class="sourceLineNo">1277</span>  public long getReadPoint(IsolationLevel isolationLevel) {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>    if (isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
+<span class="sourceLineNo">1278</span>    if (isolationLevel != null &amp;&amp; isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
 <span class="sourceLineNo">1279</span>      // This scan can read even uncommitted transactions<a name="line.1279"></a>
 <span class="sourceLineNo">1280</span>      return Long.MAX_VALUE;<a name="line.1280"></a>
 <span class="sourceLineNo">1281</span>    }<a name="line.1281"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/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 a0ca7d9..e2c4389 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
@@ -1283,7 +1283,7 @@
 <span class="sourceLineNo">1275</span><a name="line.1275"></a>
 <span class="sourceLineNo">1276</span>  @Override<a name="line.1276"></a>
 <span class="sourceLineNo">1277</span>  public long getReadPoint(IsolationLevel isolationLevel) {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>    if (isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
+<span class="sourceLineNo">1278</span>    if (isolationLevel != null &amp;&amp; isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
 <span class="sourceLineNo">1279</span>      // This scan can read even uncommitted transactions<a name="line.1279"></a>
 <span class="sourceLineNo">1280</span>      return Long.MAX_VALUE;<a name="line.1280"></a>
 <span class="sourceLineNo">1281</span>    }<a name="line.1281"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/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 a0ca7d9..e2c4389 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
@@ -1283,7 +1283,7 @@
 <span class="sourceLineNo">1275</span><a name="line.1275"></a>
 <span class="sourceLineNo">1276</span>  @Override<a name="line.1276"></a>
 <span class="sourceLineNo">1277</span>  public long getReadPoint(IsolationLevel isolationLevel) {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>    if (isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
+<span class="sourceLineNo">1278</span>    if (isolationLevel != null &amp;&amp; isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
 <span class="sourceLineNo">1279</span>      // This scan can read even uncommitted transactions<a name="line.1279"></a>
 <span class="sourceLineNo">1280</span>      return Long.MAX_VALUE;<a name="line.1280"></a>
 <span class="sourceLineNo">1281</span>    }<a name="line.1281"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/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 a0ca7d9..e2c4389 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
@@ -1283,7 +1283,7 @@
 <span class="sourceLineNo">1275</span><a name="line.1275"></a>
 <span class="sourceLineNo">1276</span>  @Override<a name="line.1276"></a>
 <span class="sourceLineNo">1277</span>  public long getReadPoint(IsolationLevel isolationLevel) {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>    if (isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
+<span class="sourceLineNo">1278</span>    if (isolationLevel != null &amp;&amp; isolationLevel == IsolationLevel.READ_UNCOMMITTED) {<a name="line.1278"></a>
 <span class="sourceLineNo">1279</span>      // This scan can read even uncommitted transactions<a name="line.1279"></a>
 <span class="sourceLineNo">1280</span>      return Long.MAX_VALUE;<a name="line.1280"></a>
 <span class="sourceLineNo">1281</span>    }<a name="line.1281"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html
index bd087f6..5f46b26 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html
@@ -163,7 +163,7 @@
 <span class="sourceLineNo">155</span>   * changes completely) so we can clean up the outstanding transaction.<a name="line.155"></a>
 <span class="sourceLineNo">156</span>   *<a name="line.156"></a>
 <span class="sourceLineNo">157</span>   * How much is the read point advanced?<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * <a name="line.158"></a>
+<span class="sourceLineNo">158</span>   *<a name="line.158"></a>
 <span class="sourceLineNo">159</span>   * Let S be the set of all write numbers that are completed. Set the read point to the highest<a name="line.159"></a>
 <span class="sourceLineNo">160</span>   * numbered write of S.<a name="line.160"></a>
 <span class="sourceLineNo">161</span>   *<a name="line.161"></a>
@@ -174,120 +174,119 @@
 <span class="sourceLineNo">166</span>  public boolean complete(WriteEntry writeEntry) {<a name="line.166"></a>
 <span class="sourceLineNo">167</span>    synchronized (writeQueue) {<a name="line.167"></a>
 <span class="sourceLineNo">168</span>      writeEntry.markCompleted();<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>      long nextReadValue = NONE;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      boolean ranOnce = false;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      while (!writeQueue.isEmpty()) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        ranOnce = true;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        WriteEntry queueFirst = writeQueue.getFirst();<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>        if (nextReadValue &gt; 0) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          if (nextReadValue + 1 != queueFirst.getWriteNumber()) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>            throw new RuntimeException("Invariant in complete violated, nextReadValue="<a name="line.178"></a>
-<span class="sourceLineNo">179</span>                + nextReadValue + ", writeNumber=" + queueFirst.getWriteNumber());<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>        if (queueFirst.isCompleted()) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>          nextReadValue = queueFirst.getWriteNumber();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>          writeQueue.removeFirst();<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        } else {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>          break;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        }<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>      if (!ranOnce) {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        throw new RuntimeException("There is no first!");<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>      if (nextReadValue &gt; 0) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        synchronized (readWaiters) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>          readPoint.set(nextReadValue);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>          readWaiters.notifyAll();<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>      return readPoint.get() &gt;= writeEntry.getWriteNumber();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  }<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>  /**<a name="line.205"></a>
-<span class="sourceLineNo">206</span>   * Wait for the global readPoint to advance up to the passed in write entry number.<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   */<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  void waitForRead(WriteEntry e) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    boolean interrupted = false;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    int count = 0;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    synchronized (readWaiters) {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      while (readPoint.get() &lt; e.getWriteNumber()) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        if (count % 100 == 0 &amp;&amp; count &gt; 0) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          LOG.warn("STUCK: " + this);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        count++;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        try {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>          readWaiters.wait(10);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        } catch (InterruptedException ie) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>          // We were interrupted... finish the loop -- i.e. cleanup --and then<a name="line.220"></a>
-<span class="sourceLineNo">221</span>          // on our way out, reset the interrupt flag.<a name="line.221"></a>
-<span class="sourceLineNo">222</span>          interrupted = true;<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>    if (interrupted) {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      Thread.currentThread().interrupt();<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>  @VisibleForTesting<a name="line.231"></a>
-<span class="sourceLineNo">232</span>  public String toString() {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return Objects.toStringHelper(this)<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        .add("readPoint", readPoint)<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        .add("writePoint", writePoint).toString();<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>  public long getReadPoint() {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    return readPoint.get();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  @VisibleForTesting<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  public long getWritePoint() {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    return writePoint.get();<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * Write number and whether write has completed given out at start of a write transaction.<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * Every created WriteEntry must be completed by calling mvcc#complete or #completeAndWait.<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  @InterfaceAudience.Private<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public static class WriteEntry {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    private final long writeNumber;<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    private boolean completed = false;<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    WriteEntry(long writeNumber) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      this.writeNumber = writeNumber;<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>    void markCompleted() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      this.completed = true;<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>    boolean isCompleted() {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      return this.completed;<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>    public long getWriteNumber() {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      return this.writeNumber;<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>    @Override<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    public String toString() {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      return this.writeNumber + ", " + this.completed;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span>  public static final long FIXED_SIZE = ClassSize.align(<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      ClassSize.OBJECT +<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      2 * Bytes.SIZEOF_LONG +<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      2 * ClassSize.REFERENCE);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>}<a name="line.282"></a>
+<span class="sourceLineNo">169</span>      long nextReadValue = NONE;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>      boolean ranOnce = false;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      while (!writeQueue.isEmpty()) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        ranOnce = true;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        WriteEntry queueFirst = writeQueue.getFirst();<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>        if (nextReadValue &gt; 0) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          if (nextReadValue + 1 != queueFirst.getWriteNumber()) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            throw new RuntimeException("Invariant in complete violated, nextReadValue="<a name="line.177"></a>
+<span class="sourceLineNo">178</span>                + nextReadValue + ", writeNumber=" + queueFirst.getWriteNumber());<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>        if (queueFirst.isCompleted()) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          nextReadValue = queueFirst.getWriteNumber();<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          writeQueue.removeFirst();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        } else {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          break;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      }<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>      if (!ranOnce) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        throw new RuntimeException("There is no first!");<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>      if (nextReadValue &gt; 0) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        synchronized (readWaiters) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>          readPoint.set(nextReadValue);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          readWaiters.notifyAll();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      return readPoint.get() &gt;= writeEntry.getWriteNumber();<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Wait for the global readPoint to advance up to the passed in write entry number.<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   */<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  void waitForRead(WriteEntry e) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    boolean interrupted = false;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    int count = 0;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    synchronized (readWaiters) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      while (readPoint.get() &lt; e.getWriteNumber()) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        if (count % 100 == 0 &amp;&amp; count &gt; 0) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          LOG.warn("STUCK: " + this);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        }<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        count++;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        try {<a name="line.216"></a>
+<span class="sourceLineNo">217</span>          readWaiters.wait(10);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>        } catch (InterruptedException ie) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>          // We were interrupted... finish the loop -- i.e. cleanup --and then<a name="line.219"></a>
+<span class="sourceLineNo">220</span>          // on our way out, reset the interrupt flag.<a name="line.220"></a>
+<span class="sourceLineNo">221</span>          interrupted = true;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    if (interrupted) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      Thread.currentThread().interrupt();<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>  @VisibleForTesting<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  public String toString() {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    return Objects.toStringHelper(this)<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        .add("readPoint", readPoint)<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        .add("writePoint", writePoint).toString();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public long getReadPoint() {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    return readPoint.get();<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  }<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  @VisibleForTesting<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  public long getWritePoint() {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    return writePoint.get();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  /**<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * Write number and whether write has completed given out at start of a write transaction.<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   * Every created WriteEntry must be completed by calling mvcc#complete or #completeAndWait.<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>  @InterfaceAudience.Private<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  public static class WriteEntry {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    private final long writeNumber;<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    private boolean completed = false;<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>    WriteEntry(long writeNumber) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      this.writeNumber = writeNumber;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    void markCompleted() {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      this.completed = true;<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>    boolean isCompleted() {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      return this.completed;<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>    public long getWriteNumber() {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      return this.writeNumber;<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>    @Override<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    public String toString() {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      return this.writeNumber + ", " + this.completed;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  public static final long FIXED_SIZE = ClassSize.align(<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      ClassSize.OBJECT +<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      2 * Bytes.SIZEOF_LONG +<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      2 * ClassSize.REFERENCE);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>}<a name="line.281"></a>
 
 
 


[46/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
index b259d74..84cdb8c 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
@@ -734,7 +734,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>configureCompression</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.661">configureCompression</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.664">configureCompression</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                         <a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;tableDescriptor)
                           throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/UnsupportedEncodingException.html?is-external=true" title="class or interface in java.io">UnsupportedEncodingException</a></pre>
 <div class="block">Serialize column family to compression algorithm map to configuration.
@@ -751,7 +751,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>configureBlockSize</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.694">configureBlockSize</a>(<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;tableDescriptor,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.697">configureBlockSize</a>(<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;tableDescriptor,
                       org.apache.hadoop.conf.Configuration&nbsp;conf)
                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/UnsupportedEncodingException.html?is-external=true" title="class or interface in java.io">UnsupportedEncodingException</a></pre>
 <div class="block">Serialize column family to block size map to configuration.
@@ -768,7 +768,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockList">
 <li class="blockList">
 <h4>configureBloomType</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.727">configureBloomType</a>(<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;tableDescriptor,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.730">configureBloomType</a>(<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;tableDescriptor,
                       org.apache.hadoop.conf.Configuration&nbsp;conf)
                         throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/UnsupportedEncodingException.html?is-external=true" title="class or interface in java.io">UnsupportedEncodingException</a></pre>
 <div class="block">Serialize column family to bloom type map to configuration.
@@ -785,7 +785,7 @@ extends org.apache.hadoop.mapreduce.lib.output.FileOutputFormat&lt;<a href="../.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>configureDataBlockEncoding</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.762">configureDataBlockEncoding</a>(<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;tableDescriptor,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html#line.765">configureDataBlockEncoding</a>(<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;tableDescriptor,
                               org.apache.hadoop.conf.Configuration&nbsp;conf)
                                 throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/UnsupportedEncodingException.html?is-external=true" title="class or interface in java.io">UnsupportedEncodingException</a></pre>
 <div class="block">Serialize column family to data block encoding map to configuration.

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html b/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
index 100bca9..b85b665 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.284">CatalogJanitor.SplitParentFirstComparator</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.285">CatalogJanitor.SplitParentFirstComparator</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&gt;</pre>
 <div class="block">Compare HRegionInfos in a way that has split parents sort BEFORE their
@@ -202,7 +202,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparato
 <ul class="blockListLast">
 <li class="blockList">
 <h4>rowEndKeyComparator</h4>
-<pre><a href="http://docs.oracle.com/javase/7/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/master/CatalogJanitor.SplitParentFirstComparator.html#line.285">rowEndKeyComparator</a></pre>
+<pre><a href="http://docs.oracle.com/javase/7/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/master/CatalogJanitor.SplitParentFirstComparator.html#line.286">rowEndKeyComparator</a></pre>
 </li>
 </ul>
 </li>
@@ -219,7 +219,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparato
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CatalogJanitor.SplitParentFirstComparator</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html#line.284">CatalogJanitor.SplitParentFirstComparator</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html#line.285">CatalogJanitor.SplitParentFirstComparator</a>()</pre>
 </li>
 </ul>
 </li>
@@ -236,7 +236,7 @@ implements <a href="http://docs.oracle.com/javase/7/docs/api/java/util/Comparato
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html#line.287">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.SplitParentFirstComparator.html#line.288">compare</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;left,
           <a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;right)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.html b/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.html
index fdcb35e..8f8e0ba 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/CatalogJanitor.html
@@ -519,7 +519,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanParent</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.314">cleanParent</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;parent,
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.315">cleanParent</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;parent,
                   <a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;rowContent)
               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">If daughters no longer hold reference to the parents, delete the parent.</div>
@@ -537,7 +537,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>hasNoReferences</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.347">hasNoReferences</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;p)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.348">hasNoReferences</a>(<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;p)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>p</code> - A pair where the first boolean says whether or not the daughter
  region directory exists in the filesystem and then the second boolean says
  whether the daughter has references to the parent.</dd>
@@ -550,7 +550,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>checkDaughterInFs</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.361">checkDaughterInFs</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;parent,
+<pre><a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.362">checkDaughterInFs</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;parent,
                                       <a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;daughter)
                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Checks if a daughter region -- either splitA or splitB -- still holds
@@ -569,7 +569,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableDescriptor</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.404">getTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.405">getTableDescriptor</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                                      throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/FileNotFoundException.html?is-external=true" title="class or interface in java.io">FileNotFoundException</a>,
                                             <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl><dt><span class="strong">Throws:</span></dt>
@@ -583,7 +583,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>cleanMergeQualifier</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.416">cleanMergeQualifier</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;region)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/CatalogJanitor.html#line.417">cleanMergeQualifier</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;region)
                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Checks if the specified region has merge qualifiers, if so, try to clean
  them</div>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/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 e5bf586..aaf26d9 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -146,8 +146,8 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/DisableTableProcedure.MarkRegionOfflineOpResult.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="strong">DisableTableProcedure.MarkRegionOfflineOpResult</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="strong">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="strong">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="strong">ServerProcedureInterface.ServerOperationType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/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 2d543dd..f5b0fb7 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -361,14 +361,14 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="strong">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="strong">KeepDeletedCells</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="strong">HConstants.OperationStatusCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="strong">MetaTableAccessor.QueryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.Modify.html" title="enum in org.apache.hadoop.hbase"><span class="strong">HConstants.Modify</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="strong">Coprocessor.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="strong">MetaTableAccessor.QueryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="strong">KeyValue.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="strong">KeepDeletedCells</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="strong">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="strong">HealthChecker.HealthCheckerExitStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="strong">Coprocessor.State</span></a></li>
 </ul>
 </li>
 </ul>

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
index e74c820..95b557f 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
@@ -3420,7 +3420,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getReadPoint(org.apache.hadoop.hbase.client.IsolationLevel)">getReadPoint</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html" title="interface in org.apache.hadoop.hbase.regionserver">Region</a></code></dd>
-<dt><span class="strong">Returns:</span></dt><dd>readpoint considering given IsolationLevel</dd></dl>
+<dt><span class="strong">Returns:</span></dt><dd>readpoint considering given IsolationLevel; pass null for default</dd></dl>
 </li>
 </ul>
 <a name="getReadpoint(org.apache.hadoop.hbase.client.IsolationLevel)">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html b/devapidocs/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html
index 605eabf..3655bed 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html
@@ -100,7 +100,7 @@
 <hr>
 <br>
 <pre><a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html#line.252">MultiVersionConcurrencyControl.WriteEntry</a>
+public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html#line.251">MultiVersionConcurrencyControl.WriteEntry</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Write number and whether write has completed given out at start of a write transaction.
  Every created WriteEntry must be completed by calling mvcc#complete or #completeAndWait.</div>
@@ -206,7 +206,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>writeNumber</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.253">writeNumber</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.252">writeNumber</a></pre>
 </li>
 </ul>
 <a name="completed">
@@ -215,7 +215,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>completed</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.254">completed</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.253">completed</a></pre>
 </li>
 </ul>
 </li>
@@ -232,7 +232,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MultiVersionConcurrencyControl.WriteEntry</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.256">MultiVersionConcurrencyControl.WriteEntry</a>(long&nbsp;writeNumber)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.255">MultiVersionConcurrencyControl.WriteEntry</a>(long&nbsp;writeNumber)</pre>
 </li>
 </ul>
 </li>
@@ -249,7 +249,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>markCompleted</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.260">markCompleted</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.259">markCompleted</a>()</pre>
 </li>
 </ul>
 <a name="isCompleted()">
@@ -258,7 +258,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isCompleted</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.264">isCompleted</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.263">isCompleted</a>()</pre>
 </li>
 </ul>
 <a name="getWriteNumber()">
@@ -267,7 +267,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getWriteNumber</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.268">getWriteNumber</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.267">getWriteNumber</a>()</pre>
 </li>
 </ul>
 <a name="toString()">
@@ -276,7 +276,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.273">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html#line.272">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html
index 78bd9ad..8db6136 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html
@@ -347,7 +347,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FIXED_SIZE</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html#line.278">FIXED_SIZE</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html#line.277">FIXED_SIZE</a></pre>
 </li>
 </ul>
 </li>
@@ -465,7 +465,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
  changes completely) so we can clean up the outstanding transaction.
 
  How much is the read point advanced?
- 
+
  Let S be the set of all write numbers that are completed. Set the read point to the highest
  numbered write of S.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>writeEntry</code> - </dd>
@@ -478,7 +478,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForRead</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html#line.208">waitForRead</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;e)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html#line.207">waitForRead</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;e)</pre>
 <div class="block">Wait for the global readPoint to advance up to the passed in write entry number.</div>
 </li>
 </ul>
@@ -488,7 +488,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html#line.232">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html#line.231">toString</a>()</pre>
 <dl>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -501,7 +501,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getReadPoint</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html#line.238">getReadPoint</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html#line.237">getReadPoint</a>()</pre>
 </li>
 </ul>
 <a name="getWritePoint()">
@@ -510,7 +510,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getWritePoint</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html#line.243">getWritePoint</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html#line.242">getWritePoint</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/Region.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/Region.html b/devapidocs/org/apache/hadoop/hbase/regionserver/Region.html
index 95d36ed..03e1a97 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/Region.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/Region.html
@@ -807,7 +807,7 @@ long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <li class="blockList">
 <h4>getReadPoint</h4>
 <pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/Region.html#line.160">getReadPoint</a>(<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client">IsolationLevel</a>&nbsp;isolationLevel)</pre>
-<dl><dt><span class="strong">Returns:</span></dt><dd>readpoint considering given IsolationLevel</dd></dl>
+<dl><dt><span class="strong">Returns:</span></dt><dd>readpoint considering given IsolationLevel; pass null for default</dd></dl>
 </li>
 </ul>
 <a name="getReadpoint(org.apache.hadoop.hbase.client.IsolationLevel)">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/SequenceId.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/SequenceId.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/SequenceId.html
index 2ff2e16..fed825a 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/SequenceId.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/SequenceId.html
@@ -102,7 +102,7 @@
 <td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/HLogKey.html" title="class in org.apache.hadoop.hbase.regionserver.wal">HLogKey</a></strong></code>
 <div class="block"><strong>Deprecated.</strong>&nbsp;
-<div class="block"><i>use WALKey.  as of 2.0.  Remove in 3.0</i></div>
+<div class="block"><i>use WALKey. Deprecated as of 1.0 (HBASE-12522). Remove in 2.0</i></div>
 </div>
 </td>
 </tr>

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


[49/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/apidocs/src-html/org/apache/hadoop/hbase/HConstants.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/HConstants.html b/apidocs/src-html/org/apache/hadoop/hbase/HConstants.html
index 8c20ead..de0d003 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/HConstants.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/HConstants.html
@@ -1263,10 +1263,15 @@
 <span class="sourceLineNo">1255</span>  public static final String ZK_SERVER_KERBEROS_PRINCIPAL =<a name="line.1255"></a>
 <span class="sourceLineNo">1256</span>      "hbase.zookeeper.server.kerberos.principal";<a name="line.1256"></a>
 <span class="sourceLineNo">1257</span><a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  private HConstants() {<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>    // Can't be instantiated with this ctor.<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  }<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>}<a name="line.1261"></a>
+<span class="sourceLineNo">1258</span>  /** Config key for hbase temporary directory in hdfs */<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>  public static final String TEMPORARY_FS_DIRECTORY_KEY = "hbase.fs.tmp.dir";<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>  public static final String DEFAULT_TEMPORARY_HDFS_DIRECTORY = "/user/"<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>      + System.getProperty("user.name") + "/hbase-staging";<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span><a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>  private HConstants() {<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    // Can't be instantiated with this ctor.<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>  }<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>}<a name="line.1266"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
index f41a45b..9f165f1 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.html
@@ -644,156 +644,159 @@
 <span class="sourceLineNo">636</span>    Configuration conf = job.getConfiguration();<a name="line.636"></a>
 <span class="sourceLineNo">637</span>    // create the partitions file<a name="line.637"></a>
 <span class="sourceLineNo">638</span>    FileSystem fs = FileSystem.get(conf);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    Path partitionsPath = new Path(conf.get("hbase.fs.tmp.dir"), "partitions_" + UUID.randomUUID());<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    fs.makeQualified(partitionsPath);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    writePartitions(conf, partitionsPath, splitPoints);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    fs.deleteOnExit(partitionsPath);<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    // configure job to use it<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    job.setPartitionerClass(TotalOrderPartitioner.class);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    TotalOrderPartitioner.setPartitionFile(conf, partitionsPath);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>  }<a name="line.647"></a>
-<span class="sourceLineNo">648</span><a name="line.648"></a>
-<span class="sourceLineNo">649</span>  /**<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * Serialize column family to compression algorithm map to configuration.<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * Invoked while configuring the MR job for incremental load.<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   *<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @param tableDescriptor to read the properties from<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   * @param conf to persist serialized values into<a name="line.654"></a>
-<span class="sourceLineNo">655</span>   * @throws IOException<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   *           on failure to read column family descriptors<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   */<a name="line.657"></a>
-<span class="sourceLineNo">658</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      value="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE")<a name="line.659"></a>
-<span class="sourceLineNo">660</span>  @VisibleForTesting<a name="line.660"></a>
-<span class="sourceLineNo">661</span>  static void configureCompression(Configuration conf, HTableDescriptor tableDescriptor)<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      throws UnsupportedEncodingException {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    StringBuilder compressionConfigValue = new StringBuilder();<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    if(tableDescriptor == null){<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      // could happen with mock table instance<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      return;<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    int i = 0;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      if (i++ &gt; 0) {<a name="line.671"></a>
-<span class="sourceLineNo">672</span>        compressionConfigValue.append('&amp;');<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      compressionConfigValue.append(URLEncoder.encode(<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.675"></a>
-<span class="sourceLineNo">676</span>      compressionConfigValue.append('=');<a name="line.676"></a>
+<span class="sourceLineNo">639</span>    String hbaseTmpFsDir =<a name="line.639"></a>
+<span class="sourceLineNo">640</span>        conf.get(HConstants.TEMPORARY_FS_DIRECTORY_KEY,<a name="line.640"></a>
+<span class="sourceLineNo">641</span>          HConstants.DEFAULT_TEMPORARY_HDFS_DIRECTORY);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    Path partitionsPath = new Path(hbaseTmpFsDir, "partitions_" + UUID.randomUUID());<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    fs.makeQualified(partitionsPath);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>    writePartitions(conf, partitionsPath, splitPoints);<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    fs.deleteOnExit(partitionsPath);<a name="line.645"></a>
+<span class="sourceLineNo">646</span><a name="line.646"></a>
+<span class="sourceLineNo">647</span>    // configure job to use it<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    job.setPartitionerClass(TotalOrderPartitioner.class);<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    TotalOrderPartitioner.setPartitionFile(conf, partitionsPath);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>  }<a name="line.650"></a>
+<span class="sourceLineNo">651</span><a name="line.651"></a>
+<span class="sourceLineNo">652</span>  /**<a name="line.652"></a>
+<span class="sourceLineNo">653</span>   * Serialize column family to compression algorithm map to configuration.<a name="line.653"></a>
+<span class="sourceLineNo">654</span>   * Invoked while configuring the MR job for incremental load.<a name="line.654"></a>
+<span class="sourceLineNo">655</span>   *<a name="line.655"></a>
+<span class="sourceLineNo">656</span>   * @param tableDescriptor to read the properties from<a name="line.656"></a>
+<span class="sourceLineNo">657</span>   * @param conf to persist serialized values into<a name="line.657"></a>
+<span class="sourceLineNo">658</span>   * @throws IOException<a name="line.658"></a>
+<span class="sourceLineNo">659</span>   *           on failure to read column family descriptors<a name="line.659"></a>
+<span class="sourceLineNo">660</span>   */<a name="line.660"></a>
+<span class="sourceLineNo">661</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      value="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE")<a name="line.662"></a>
+<span class="sourceLineNo">663</span>  @VisibleForTesting<a name="line.663"></a>
+<span class="sourceLineNo">664</span>  static void configureCompression(Configuration conf, HTableDescriptor tableDescriptor)<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      throws UnsupportedEncodingException {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    StringBuilder compressionConfigValue = new StringBuilder();<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    if(tableDescriptor == null){<a name="line.667"></a>
+<span class="sourceLineNo">668</span>      // could happen with mock table instance<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      return;<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    }<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    int i = 0;<a name="line.672"></a>
+<span class="sourceLineNo">673</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.673"></a>
+<span class="sourceLineNo">674</span>      if (i++ &gt; 0) {<a name="line.674"></a>
+<span class="sourceLineNo">675</span>        compressionConfigValue.append('&amp;');<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      }<a name="line.676"></a>
 <span class="sourceLineNo">677</span>      compressionConfigValue.append(URLEncoder.encode(<a name="line.677"></a>
-<span class="sourceLineNo">678</span>        familyDescriptor.getCompressionType().getName(), "UTF-8"));<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    }<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    // Get rid of the last ampersand<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    conf.set(COMPRESSION_FAMILIES_CONF_KEY, compressionConfigValue.toString());<a name="line.681"></a>
-<span class="sourceLineNo">682</span>  }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><a name="line.683"></a>
-<span class="sourceLineNo">684</span>  /**<a name="line.684"></a>
-<span class="sourceLineNo">685</span>   * Serialize column family to block size map to configuration.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * Invoked while configuring the MR job for incremental load.<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   * @param tableDescriptor to read the properties from<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * @param conf to persist serialized values into<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   *<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * @throws IOException<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   *           on failure to read column family descriptors<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   */<a name="line.692"></a>
-<span class="sourceLineNo">693</span>  @VisibleForTesting<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  static void configureBlockSize(HTableDescriptor tableDescriptor, Configuration conf)<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      throws UnsupportedEncodingException {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    StringBuilder blockSizeConfigValue = new StringBuilder();<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    if (tableDescriptor == null) {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      // could happen with mock table instance<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      return;<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    }<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    int i = 0;<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      if (i++ &gt; 0) {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>        blockSizeConfigValue.append('&amp;');<a name="line.705"></a>
-<span class="sourceLineNo">706</span>      }<a name="line.706"></a>
-<span class="sourceLineNo">707</span>      blockSizeConfigValue.append(URLEncoder.encode(<a name="line.707"></a>
-<span class="sourceLineNo">708</span>          familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      blockSizeConfigValue.append('=');<a name="line.709"></a>
+<span class="sourceLineNo">678</span>        familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      compressionConfigValue.append('=');<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      compressionConfigValue.append(URLEncoder.encode(<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        familyDescriptor.getCompressionType().getName(), "UTF-8"));<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    }<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    // Get rid of the last ampersand<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    conf.set(COMPRESSION_FAMILIES_CONF_KEY, compressionConfigValue.toString());<a name="line.684"></a>
+<span class="sourceLineNo">685</span>  }<a name="line.685"></a>
+<span class="sourceLineNo">686</span><a name="line.686"></a>
+<span class="sourceLineNo">687</span>  /**<a name="line.687"></a>
+<span class="sourceLineNo">688</span>   * Serialize column family to block size map to configuration.<a name="line.688"></a>
+<span class="sourceLineNo">689</span>   * Invoked while configuring the MR job for incremental load.<a name="line.689"></a>
+<span class="sourceLineNo">690</span>   * @param tableDescriptor to read the properties from<a name="line.690"></a>
+<span class="sourceLineNo">691</span>   * @param conf to persist serialized values into<a name="line.691"></a>
+<span class="sourceLineNo">692</span>   *<a name="line.692"></a>
+<span class="sourceLineNo">693</span>   * @throws IOException<a name="line.693"></a>
+<span class="sourceLineNo">694</span>   *           on failure to read column family descriptors<a name="line.694"></a>
+<span class="sourceLineNo">695</span>   */<a name="line.695"></a>
+<span class="sourceLineNo">696</span>  @VisibleForTesting<a name="line.696"></a>
+<span class="sourceLineNo">697</span>  static void configureBlockSize(HTableDescriptor tableDescriptor, Configuration conf)<a name="line.697"></a>
+<span class="sourceLineNo">698</span>      throws UnsupportedEncodingException {<a name="line.698"></a>
+<span class="sourceLineNo">699</span>    StringBuilder blockSizeConfigValue = new StringBuilder();<a name="line.699"></a>
+<span class="sourceLineNo">700</span>    if (tableDescriptor == null) {<a name="line.700"></a>
+<span class="sourceLineNo">701</span>      // could happen with mock table instance<a name="line.701"></a>
+<span class="sourceLineNo">702</span>      return;<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    }<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    int i = 0;<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      if (i++ &gt; 0) {<a name="line.707"></a>
+<span class="sourceLineNo">708</span>        blockSizeConfigValue.append('&amp;');<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      }<a name="line.709"></a>
 <span class="sourceLineNo">710</span>      blockSizeConfigValue.append(URLEncoder.encode(<a name="line.710"></a>
-<span class="sourceLineNo">711</span>          String.valueOf(familyDescriptor.getBlocksize()), "UTF-8"));<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    }<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    // Get rid of the last ampersand<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    conf.set(BLOCK_SIZE_FAMILIES_CONF_KEY, blockSizeConfigValue.toString());<a name="line.714"></a>
-<span class="sourceLineNo">715</span>  }<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>   * Serialize column family to bloom type map to configuration.<a name="line.718"></a>
-<span class="sourceLineNo">719</span>   * Invoked while configuring the MR job for incremental load.<a name="line.719"></a>
-<span class="sourceLineNo">720</span>   * @param tableDescriptor to read the properties from<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   * @param conf to persist serialized values into<a name="line.721"></a>
-<span class="sourceLineNo">722</span>   *<a name="line.722"></a>
-<span class="sourceLineNo">723</span>   * @throws IOException<a name="line.723"></a>
-<span class="sourceLineNo">724</span>   *           on failure to read column family descriptors<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   */<a name="line.725"></a>
-<span class="sourceLineNo">726</span>  @VisibleForTesting<a name="line.726"></a>
-<span class="sourceLineNo">727</span>  static void configureBloomType(HTableDescriptor tableDescriptor, Configuration conf)<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      throws UnsupportedEncodingException {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    if (tableDescriptor == null) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      // could happen with mock table instance<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return;<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    }<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    StringBuilder bloomTypeConfigValue = new StringBuilder();<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    int i = 0;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      if (i++ &gt; 0) {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>        bloomTypeConfigValue.append('&amp;');<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      }<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      bloomTypeConfigValue.append(URLEncoder.encode(<a name="line.740"></a>
-<span class="sourceLineNo">741</span>        familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      bloomTypeConfigValue.append('=');<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      String bloomType = familyDescriptor.getBloomFilterType().toString();<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      if (bloomType == null) {<a name="line.744"></a>
-<span class="sourceLineNo">745</span>        bloomType = HColumnDescriptor.DEFAULT_BLOOMFILTER;<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      }<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      bloomTypeConfigValue.append(URLEncoder.encode(bloomType, "UTF-8"));<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    }<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    conf.set(BLOOM_TYPE_FAMILIES_CONF_KEY, bloomTypeConfigValue.toString());<a name="line.749"></a>
-<span class="sourceLineNo">750</span>  }<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>  /**<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   * Serialize column family to data block encoding map to configuration.<a name="line.753"></a>
-<span class="sourceLineNo">754</span>   * Invoked while configuring the MR job for incremental load.<a name="line.754"></a>
-<span class="sourceLineNo">755</span>   *<a name="line.755"></a>
-<span class="sourceLineNo">756</span>   * @param tableDescriptor to read the properties from<a name="line.756"></a>
-<span class="sourceLineNo">757</span>   * @param conf to persist serialized values into<a name="line.757"></a>
-<span class="sourceLineNo">758</span>   * @throws IOException<a name="line.758"></a>
-<span class="sourceLineNo">759</span>   *           on failure to read column family descriptors<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   */<a name="line.760"></a>
-<span class="sourceLineNo">761</span>  @VisibleForTesting<a name="line.761"></a>
-<span class="sourceLineNo">762</span>  static void configureDataBlockEncoding(HTableDescriptor tableDescriptor,<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      Configuration conf) throws UnsupportedEncodingException {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    if (tableDescriptor == null) {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      // could happen with mock table instance<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      return;<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    }<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    StringBuilder dataBlockEncodingConfigValue = new StringBuilder();<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    int i = 0;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      if (i++ &gt; 0) {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>        dataBlockEncodingConfigValue.append('&amp;');<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      }<a name="line.774"></a>
-<span class="sourceLineNo">775</span>      dataBlockEncodingConfigValue.append(<a name="line.775"></a>
-<span class="sourceLineNo">776</span>          URLEncoder.encode(familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      dataBlockEncodingConfigValue.append('=');<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      DataBlockEncoding encoding = familyDescriptor.getDataBlockEncoding();<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      if (encoding == null) {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>        encoding = DataBlockEncoding.NONE;<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      }<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      dataBlockEncodingConfigValue.append(URLEncoder.encode(encoding.toString(),<a name="line.782"></a>
-<span class="sourceLineNo">783</span>          "UTF-8"));<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    conf.set(DATABLOCK_ENCODING_FAMILIES_CONF_KEY,<a name="line.785"></a>
-<span class="sourceLineNo">786</span>        dataBlockEncodingConfigValue.toString());<a name="line.786"></a>
-<span class="sourceLineNo">787</span>  }<a name="line.787"></a>
-<span class="sourceLineNo">788</span>}<a name="line.788"></a>
+<span class="sourceLineNo">711</span>          familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      blockSizeConfigValue.append('=');<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      blockSizeConfigValue.append(URLEncoder.encode(<a name="line.713"></a>
+<span class="sourceLineNo">714</span>          String.valueOf(familyDescriptor.getBlocksize()), "UTF-8"));<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    }<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    // Get rid of the last ampersand<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    conf.set(BLOCK_SIZE_FAMILIES_CONF_KEY, blockSizeConfigValue.toString());<a name="line.717"></a>
+<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
+<span class="sourceLineNo">719</span><a name="line.719"></a>
+<span class="sourceLineNo">720</span>  /**<a name="line.720"></a>
+<span class="sourceLineNo">721</span>   * Serialize column family to bloom type map to configuration.<a name="line.721"></a>
+<span class="sourceLineNo">722</span>   * Invoked while configuring the MR job for incremental load.<a name="line.722"></a>
+<span class="sourceLineNo">723</span>   * @param tableDescriptor to read the properties from<a name="line.723"></a>
+<span class="sourceLineNo">724</span>   * @param conf to persist serialized values into<a name="line.724"></a>
+<span class="sourceLineNo">725</span>   *<a name="line.725"></a>
+<span class="sourceLineNo">726</span>   * @throws IOException<a name="line.726"></a>
+<span class="sourceLineNo">727</span>   *           on failure to read column family descriptors<a name="line.727"></a>
+<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
+<span class="sourceLineNo">729</span>  @VisibleForTesting<a name="line.729"></a>
+<span class="sourceLineNo">730</span>  static void configureBloomType(HTableDescriptor tableDescriptor, Configuration conf)<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      throws UnsupportedEncodingException {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    if (tableDescriptor == null) {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      // could happen with mock table instance<a name="line.733"></a>
+<span class="sourceLineNo">734</span>      return;<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    }<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    StringBuilder bloomTypeConfigValue = new StringBuilder();<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    int i = 0;<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      if (i++ &gt; 0) {<a name="line.740"></a>
+<span class="sourceLineNo">741</span>        bloomTypeConfigValue.append('&amp;');<a name="line.741"></a>
+<span class="sourceLineNo">742</span>      }<a name="line.742"></a>
+<span class="sourceLineNo">743</span>      bloomTypeConfigValue.append(URLEncoder.encode(<a name="line.743"></a>
+<span class="sourceLineNo">744</span>        familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.744"></a>
+<span class="sourceLineNo">745</span>      bloomTypeConfigValue.append('=');<a name="line.745"></a>
+<span class="sourceLineNo">746</span>      String bloomType = familyDescriptor.getBloomFilterType().toString();<a name="line.746"></a>
+<span class="sourceLineNo">747</span>      if (bloomType == null) {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>        bloomType = HColumnDescriptor.DEFAULT_BLOOMFILTER;<a name="line.748"></a>
+<span class="sourceLineNo">749</span>      }<a name="line.749"></a>
+<span class="sourceLineNo">750</span>      bloomTypeConfigValue.append(URLEncoder.encode(bloomType, "UTF-8"));<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    }<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    conf.set(BLOOM_TYPE_FAMILIES_CONF_KEY, bloomTypeConfigValue.toString());<a name="line.752"></a>
+<span class="sourceLineNo">753</span>  }<a name="line.753"></a>
+<span class="sourceLineNo">754</span><a name="line.754"></a>
+<span class="sourceLineNo">755</span>  /**<a name="line.755"></a>
+<span class="sourceLineNo">756</span>   * Serialize column family to data block encoding map to configuration.<a name="line.756"></a>
+<span class="sourceLineNo">757</span>   * Invoked while configuring the MR job for incremental load.<a name="line.757"></a>
+<span class="sourceLineNo">758</span>   *<a name="line.758"></a>
+<span class="sourceLineNo">759</span>   * @param tableDescriptor to read the properties from<a name="line.759"></a>
+<span class="sourceLineNo">760</span>   * @param conf to persist serialized values into<a name="line.760"></a>
+<span class="sourceLineNo">761</span>   * @throws IOException<a name="line.761"></a>
+<span class="sourceLineNo">762</span>   *           on failure to read column family descriptors<a name="line.762"></a>
+<span class="sourceLineNo">763</span>   */<a name="line.763"></a>
+<span class="sourceLineNo">764</span>  @VisibleForTesting<a name="line.764"></a>
+<span class="sourceLineNo">765</span>  static void configureDataBlockEncoding(HTableDescriptor tableDescriptor,<a name="line.765"></a>
+<span class="sourceLineNo">766</span>      Configuration conf) throws UnsupportedEncodingException {<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    if (tableDescriptor == null) {<a name="line.767"></a>
+<span class="sourceLineNo">768</span>      // could happen with mock table instance<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      return;<a name="line.769"></a>
+<span class="sourceLineNo">770</span>    }<a name="line.770"></a>
+<span class="sourceLineNo">771</span>    StringBuilder dataBlockEncodingConfigValue = new StringBuilder();<a name="line.771"></a>
+<span class="sourceLineNo">772</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.772"></a>
+<span class="sourceLineNo">773</span>    int i = 0;<a name="line.773"></a>
+<span class="sourceLineNo">774</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      if (i++ &gt; 0) {<a name="line.775"></a>
+<span class="sourceLineNo">776</span>        dataBlockEncodingConfigValue.append('&amp;');<a name="line.776"></a>
+<span class="sourceLineNo">777</span>      }<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      dataBlockEncodingConfigValue.append(<a name="line.778"></a>
+<span class="sourceLineNo">779</span>          URLEncoder.encode(familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      dataBlockEncodingConfigValue.append('=');<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      DataBlockEncoding encoding = familyDescriptor.getDataBlockEncoding();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      if (encoding == null) {<a name="line.782"></a>
+<span class="sourceLineNo">783</span>        encoding = DataBlockEncoding.NONE;<a name="line.783"></a>
+<span class="sourceLineNo">784</span>      }<a name="line.784"></a>
+<span class="sourceLineNo">785</span>      dataBlockEncodingConfigValue.append(URLEncoder.encode(encoding.toString(),<a name="line.785"></a>
+<span class="sourceLineNo">786</span>          "UTF-8"));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    }<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    conf.set(DATABLOCK_ENCODING_FAMILIES_CONF_KEY,<a name="line.788"></a>
+<span class="sourceLineNo">789</span>        dataBlockEncodingConfigValue.toString());<a name="line.789"></a>
+<span class="sourceLineNo">790</span>  }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>}<a name="line.791"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 2f700ea..67b3be5 100644
--- a/book.html
+++ b/book.html
@@ -33059,7 +33059,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 2.0.0-SNAPSHOT<br>
-Last updated 2016-02-02 15:16:23 UTC
+Last updated 2016-02-03 14:50:15 UTC
 </div>
 </div>
 </body>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 1761fa8..10ca7b3 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <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" />
@@ -37940,91 +37940,91 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L290">290</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L291">291</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L291">291</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L292">292</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L294">294</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L295">295</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L297">297</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L298">298</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L311">311</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L312">312</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L312">312</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L313">313</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L333">333</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L334">334</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L343">343</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L344">344</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L344">344</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L345">345</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L357">357</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L358">358</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L358">358</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L359">359</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L359">359</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L360">360</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L397">397</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L398">398</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L412">412</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L413">413</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L414">414</a></td></tr></table></div>
+<td><a href="./xref/org/apache/hadoop/hbase/master/CatalogJanitor.html#L415">415</a></td></tr></table></div>
 <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">
@@ -67502,361 +67502,361 @@
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.FileNotFoundException' import.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L23">23</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L22">22</a></td></tr>
 <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 'com.google.common.annotations.VisibleForTesting' import.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L92">92</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L91">91</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L361">361</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L360">360</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L404">404</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L403">403</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L424">424</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L423">423</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L425">425</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L424">424</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L433">433</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L432">432</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L595">595</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L594">594</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L630">630</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L629">629</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L643">643</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L642">642</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L656">656</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L655">655</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L657">657</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L656">656</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L675">675</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L674">674</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L730">730</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L729">729</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L740">740</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L739">739</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L742">742</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L741">741</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L759">759</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L758">758</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L772">772</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L771">771</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L838">838</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L837">837</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L899">899</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L898">898</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L981">981</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L980">980</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L985">985</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L984">984</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1052">1052</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1051">1051</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1089">1089</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1088">1088</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1135">1135</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1134">1134</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1137">1137</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1136">1136</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1138">1138</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1137">1137</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1139">1139</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1138">1138</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1140">1140</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1139">1139</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1170">1170</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1169">1169</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1171">1171</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1170">1170</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1172">1172</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1171">1171</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1177">1177</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1176">1176</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1184">1184</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1183">1183</a></td></tr>
 <tr class="a">
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1190">1190</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1189">1189</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1191">1191</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1190">1190</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1267">1267</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1266">1266</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'else' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1268">1268</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1267">1267</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1286">1286</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1285">1285</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1438">1438</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1437">1437</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1439">1439</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1438">1438</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1442">1442</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1441">1441</a></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 6, expected level should be 4.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1538">1538</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1537">1537</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1620">1620</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1619">1619</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1621">1621</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1620">1620</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1622">1622</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1621">1621</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1624">1624</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1623">1623</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1629">1629</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1628">1628</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1641">1641</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1640">1640</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1721">1721</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1720">1720</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1730">1730</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1729">1729</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1751">1751</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1750">1750</a></td></tr>
 <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><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1789">1789</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1788">1788</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1826">1826</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1825">1825</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1855">1855</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1854">1854</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1856">1856</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1855">1855</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1912">1912</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1911">1911</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1917">1917</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1916">1916</a></td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1948">1948</a></td></tr>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1947">1947</a></td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1949">1949</a></td></tr></table></div>
+<td><a href="./xref/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#L1948">1948</a></td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.wal.FSWALEntry.java">org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.java</h3>
 <table border="0" class="table table-striped">
@@ -75134,7 +75134,7 @@
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
-<td><a href="./xref/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html#L26">26</a></td></tr></table></div>
+<td><a href="./xref/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html#L27">27</a></td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.security.SecurityInfo.java">org/apache/hadoop/hbase/security/SecurityInfo.java</h3>
 <table border="0" class="table table-striped">
@@ -93594,7 +93594,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/cygwin.html
----------------------------------------------------------------------
diff --git a/cygwin.html b/cygwin.html
index 8fbb274..eb447ba 100644
--- a/cygwin.html
+++ b/cygwin.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Installing Apache HBase (TM) on Windows using Cygwin</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -673,7 +673,7 @@ Now your <b>HBase </b>server is running, <b>start coding</b> and build that next
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 3b7595c..4d6095c 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -518,7 +518,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index a6534b2..9c1b228 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <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" />
@@ -1593,7 +1593,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index cf48f6f..0e63ac1 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -312,7 +312,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 4a23dc4..8a518bf 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -786,7 +786,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index aa6f10f..4ffb63d 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -2404,160 +2404,167 @@
 <td class="colLast"><code>"hbase.table.max.rowsize"</code></td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.TEMPORARY_FS_DIRECTORY_KEY">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td><code><a href="org/apache/hadoop/hbase/HConstants.html#TEMPORARY_FS_DIRECTORY_KEY">TEMPORARY_FS_DIRECTORY_KEY</a></code></td>
+<td class="colLast"><code>"hbase.fs.tmp.dir"</code></td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.THREAD_WAKE_FREQUENCY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#THREAD_WAKE_FREQUENCY">THREAD_WAKE_FREQUENCY</a></code></td>
 <td class="colLast"><code>"hbase.server.thread.wakefrequency"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.USE_META_REPLICAS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#USE_META_REPLICAS">USE_META_REPLICAS</a></code></td>
 <td class="colLast"><code>"hbase.meta.replicas.use"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.UTF8_ENCODING">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#UTF8_ENCODING">UTF8_ENCODING</a></code></td>
 <td class="colLast"><code>"UTF-8"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.VERSION_FILE_NAME">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#VERSION_FILE_NAME">VERSION_FILE_NAME</a></code></td>
 <td class="colLast"><code>"hbase.version"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.VERSION_FILE_WRITE_ATTEMPTS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#VERSION_FILE_WRITE_ATTEMPTS">VERSION_FILE_WRITE_ATTEMPTS</a></code></td>
 <td class="colLast"><code>"hbase.server.versionfile.writeattempts"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.VERSIONS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#VERSIONS">VERSIONS</a></code></td>
 <td class="colLast"><code>"VERSIONS"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.WAL_STORAGE_POLICY">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#WAL_STORAGE_POLICY">WAL_STORAGE_POLICY</a></code></td>
 <td class="colLast"><code>"hbase.wal.storage.policy"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.WEEK_IN_SECONDS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#WEEK_IN_SECONDS">WEEK_IN_SECONDS</a></code></td>
 <td class="colLast"><code>604800</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZEROES">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZEROES">ZEROES</a></code></td>
 <td class="colLast"><code>"00000000000000"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZK_CFG_PROPERTY_PREFIX">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZK_CFG_PROPERTY_PREFIX">ZK_CFG_PROPERTY_PREFIX</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.property."</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZK_CLIENT_KERBEROS_PRINCIPAL">ZK_CLIENT_KERBEROS_PRINCIPAL</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.client.kerberos.principal"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZK_CLIENT_KEYTAB_FILE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZK_CLIENT_KEYTAB_FILE">ZK_CLIENT_KEYTAB_FILE</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.client.keytab.file"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZK_SERVER_KERBEROS_PRINCIPAL">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZK_SERVER_KERBEROS_PRINCIPAL">ZK_SERVER_KERBEROS_PRINCIPAL</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.server.kerberos.principal"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZK_SERVER_KEYTAB_FILE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZK_SERVER_KEYTAB_FILE">ZK_SERVER_KEYTAB_FILE</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.server.keytab.file"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZK_SESSION_TIMEOUT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZK_SESSION_TIMEOUT">ZK_SESSION_TIMEOUT</a></code></td>
 <td class="colLast"><code>"zookeeper.session.timeout"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_CLIENT_PORT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_CLIENT_PORT">ZOOKEEPER_CLIENT_PORT</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.property.clientPort"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_DATA_DIR">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_DATA_DIR">ZOOKEEPER_DATA_DIR</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.property.dataDir"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_MAX_CLIENT_CNXNS">ZOOKEEPER_MAX_CLIENT_CNXNS</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.property.maxClientCnxns"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_QUORUM">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_QUORUM">ZOOKEEPER_QUORUM</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.quorum"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_RECOVERABLE_WAITTIME">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_RECOVERABLE_WAITTIME">ZOOKEEPER_RECOVERABLE_WAITTIME</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.recoverable.waittime"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_TICK_TIME">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_TICK_TIME">ZOOKEEPER_TICK_TIME</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.property.tickTime"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_USEMULTI">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#ZOOKEEPER_USEMULTI">ZOOKEEPER_USEMULTI</a></code></td>
 <td class="colLast"><code>"hbase.zookeeper.useMulti"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.ZOOKEEPER_ZNODE_PARENT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/deprecated-list.html
----------------------------------------------------------------------
diff --git a/devapidocs/deprecated-list.html b/devapidocs/deprecated-list.html
index 639e5f7..529bafe 100644
--- a/devapidocs/deprecated-list.html
+++ b/devapidocs/deprecated-list.html
@@ -129,7 +129,7 @@
 </tr>
 <tr class="rowColor">
 <td class="colOne"><a href="org/apache/hadoop/hbase/regionserver/wal/HLogKey.html" title="class in org.apache.hadoop.hbase.regionserver.wal">org.apache.hadoop.hbase.regionserver.wal.HLogKey</a>
-<div class="block"><i>use WALKey.  as of 2.0.  Remove in 3.0</i></div>
+<div class="block"><i>use WALKey. Deprecated as of 1.0 (HBASE-12522). Remove in 2.0</i></div>
 </td>
 </tr>
 <tr class="altColor">


[02/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
index f538aaa..99eccfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.HRegionWithSeqId.html
@@ -5018,1055 +5018,1055 @@
 <span class="sourceLineNo">5010</span>        put.addColumn(family, qf, null);<a name="line.5010"></a>
 <span class="sourceLineNo">5011</span>      }<a name="line.5011"></a>
 <span class="sourceLineNo">5012</span>      region.put(put);<a name="line.5012"></a>
-<span class="sourceLineNo">5013</span>    }<a name="line.5013"></a>
-<span class="sourceLineNo">5014</span>  }<a name="line.5014"></a>
-<span class="sourceLineNo">5015</span><a name="line.5015"></a>
-<span class="sourceLineNo">5016</span>  static void verifyData(HRegion newReg, int startRow, int numRows, byte[] qf, byte[]... families)<a name="line.5016"></a>
-<span class="sourceLineNo">5017</span>      throws IOException {<a name="line.5017"></a>
-<span class="sourceLineNo">5018</span>    for (int i = startRow; i &lt; startRow + numRows; i++) {<a name="line.5018"></a>
-<span class="sourceLineNo">5019</span>      byte[] row = Bytes.toBytes("" + i);<a name="line.5019"></a>
-<span class="sourceLineNo">5020</span>      Get get = new Get(row);<a name="line.5020"></a>
-<span class="sourceLineNo">5021</span>      for (byte[] family : families) {<a name="line.5021"></a>
-<span class="sourceLineNo">5022</span>        get.addColumn(family, qf);<a name="line.5022"></a>
-<span class="sourceLineNo">5023</span>      }<a name="line.5023"></a>
-<span class="sourceLineNo">5024</span>      Result result = newReg.get(get);<a name="line.5024"></a>
-<span class="sourceLineNo">5025</span>      Cell[] raw = result.rawCells();<a name="line.5025"></a>
-<span class="sourceLineNo">5026</span>      assertEquals(families.length, result.size());<a name="line.5026"></a>
-<span class="sourceLineNo">5027</span>      for (int j = 0; j &lt; families.length; j++) {<a name="line.5027"></a>
-<span class="sourceLineNo">5028</span>        assertTrue(CellUtil.matchingRow(raw[j], row));<a name="line.5028"></a>
-<span class="sourceLineNo">5029</span>        assertTrue(CellUtil.matchingFamily(raw[j], families[j]));<a name="line.5029"></a>
-<span class="sourceLineNo">5030</span>        assertTrue(CellUtil.matchingQualifier(raw[j], qf));<a name="line.5030"></a>
-<span class="sourceLineNo">5031</span>      }<a name="line.5031"></a>
-<span class="sourceLineNo">5032</span>    }<a name="line.5032"></a>
-<span class="sourceLineNo">5033</span>  }<a name="line.5033"></a>
-<span class="sourceLineNo">5034</span><a name="line.5034"></a>
-<span class="sourceLineNo">5035</span>  static void assertGet(final HRegion r, final byte[] family, final byte[] k) throws IOException {<a name="line.5035"></a>
-<span class="sourceLineNo">5036</span>    // Now I have k, get values out and assert they are as expected.<a name="line.5036"></a>
-<span class="sourceLineNo">5037</span>    Get get = new Get(k).addFamily(family).setMaxVersions();<a name="line.5037"></a>
-<span class="sourceLineNo">5038</span>    Cell[] results = r.get(get).rawCells();<a name="line.5038"></a>
-<span class="sourceLineNo">5039</span>    for (int j = 0; j &lt; results.length; j++) {<a name="line.5039"></a>
-<span class="sourceLineNo">5040</span>      byte[] tmp = CellUtil.cloneValue(results[j]);<a name="line.5040"></a>
-<span class="sourceLineNo">5041</span>      // Row should be equal to value every time.<a name="line.5041"></a>
-<span class="sourceLineNo">5042</span>      assertTrue(Bytes.equals(k, tmp));<a name="line.5042"></a>
-<span class="sourceLineNo">5043</span>    }<a name="line.5043"></a>
-<span class="sourceLineNo">5044</span>  }<a name="line.5044"></a>
-<span class="sourceLineNo">5045</span><a name="line.5045"></a>
-<span class="sourceLineNo">5046</span>  /*<a name="line.5046"></a>
-<span class="sourceLineNo">5047</span>   * Assert first value in the passed region is &lt;code&gt;firstValue&lt;/code&gt;.<a name="line.5047"></a>
-<span class="sourceLineNo">5048</span>   *<a name="line.5048"></a>
-<span class="sourceLineNo">5049</span>   * @param r<a name="line.5049"></a>
-<span class="sourceLineNo">5050</span>   *<a name="line.5050"></a>
-<span class="sourceLineNo">5051</span>   * @param fs<a name="line.5051"></a>
-<span class="sourceLineNo">5052</span>   *<a name="line.5052"></a>
-<span class="sourceLineNo">5053</span>   * @param firstValue<a name="line.5053"></a>
-<span class="sourceLineNo">5054</span>   *<a name="line.5054"></a>
-<span class="sourceLineNo">5055</span>   * @throws IOException<a name="line.5055"></a>
-<span class="sourceLineNo">5056</span>   */<a name="line.5056"></a>
-<span class="sourceLineNo">5057</span>  private void assertScan(final HRegion r, final byte[] fs, final byte[] firstValue)<a name="line.5057"></a>
-<span class="sourceLineNo">5058</span>      throws IOException {<a name="line.5058"></a>
-<span class="sourceLineNo">5059</span>    byte[][] families = { fs };<a name="line.5059"></a>
-<span class="sourceLineNo">5060</span>    Scan scan = new Scan();<a name="line.5060"></a>
-<span class="sourceLineNo">5061</span>    for (int i = 0; i &lt; families.length; i++)<a name="line.5061"></a>
-<span class="sourceLineNo">5062</span>      scan.addFamily(families[i]);<a name="line.5062"></a>
-<span class="sourceLineNo">5063</span>    InternalScanner s = r.getScanner(scan);<a name="line.5063"></a>
-<span class="sourceLineNo">5064</span>    try {<a name="line.5064"></a>
-<span class="sourceLineNo">5065</span>      List&lt;Cell&gt; curVals = new ArrayList&lt;Cell&gt;();<a name="line.5065"></a>
-<span class="sourceLineNo">5066</span>      boolean first = true;<a name="line.5066"></a>
-<span class="sourceLineNo">5067</span>      OUTER_LOOP: while (s.next(curVals)) {<a name="line.5067"></a>
-<span class="sourceLineNo">5068</span>        for (Cell kv : curVals) {<a name="line.5068"></a>
-<span class="sourceLineNo">5069</span>          byte[] val = CellUtil.cloneValue(kv);<a name="line.5069"></a>
-<span class="sourceLineNo">5070</span>          byte[] curval = val;<a name="line.5070"></a>
-<span class="sourceLineNo">5071</span>          if (first) {<a name="line.5071"></a>
-<span class="sourceLineNo">5072</span>            first = false;<a name="line.5072"></a>
-<span class="sourceLineNo">5073</span>            assertTrue(Bytes.compareTo(curval, firstValue) == 0);<a name="line.5073"></a>
-<span class="sourceLineNo">5074</span>          } else {<a name="line.5074"></a>
-<span class="sourceLineNo">5075</span>            // Not asserting anything. Might as well break.<a name="line.5075"></a>
-<span class="sourceLineNo">5076</span>            break OUTER_LOOP;<a name="line.5076"></a>
-<span class="sourceLineNo">5077</span>          }<a name="line.5077"></a>
-<span class="sourceLineNo">5078</span>        }<a name="line.5078"></a>
-<span class="sourceLineNo">5079</span>      }<a name="line.5079"></a>
-<span class="sourceLineNo">5080</span>    } finally {<a name="line.5080"></a>
-<span class="sourceLineNo">5081</span>      s.close();<a name="line.5081"></a>
-<span class="sourceLineNo">5082</span>    }<a name="line.5082"></a>
-<span class="sourceLineNo">5083</span>  }<a name="line.5083"></a>
-<span class="sourceLineNo">5084</span><a name="line.5084"></a>
-<span class="sourceLineNo">5085</span>  /**<a name="line.5085"></a>
-<span class="sourceLineNo">5086</span>   * Test that we get the expected flush results back<a name="line.5086"></a>
-<span class="sourceLineNo">5087</span>   * @throws IOException<a name="line.5087"></a>
-<span class="sourceLineNo">5088</span>   */<a name="line.5088"></a>
-<span class="sourceLineNo">5089</span>  @Test<a name="line.5089"></a>
-<span class="sourceLineNo">5090</span>  public void testFlushResult() throws IOException {<a name="line.5090"></a>
-<span class="sourceLineNo">5091</span>    String method = name.getMethodName();<a name="line.5091"></a>
-<span class="sourceLineNo">5092</span>    TableName tableName = TableName.valueOf(method);<a name="line.5092"></a>
-<span class="sourceLineNo">5093</span>    byte[] family = Bytes.toBytes("family");<a name="line.5093"></a>
-<span class="sourceLineNo">5094</span><a name="line.5094"></a>
-<span class="sourceLineNo">5095</span>    this.region = initHRegion(tableName, method, family);<a name="line.5095"></a>
-<span class="sourceLineNo">5096</span><a name="line.5096"></a>
-<span class="sourceLineNo">5097</span>    // empty memstore, flush doesn't run<a name="line.5097"></a>
-<span class="sourceLineNo">5098</span>    HRegion.FlushResult fr = region.flush(true);<a name="line.5098"></a>
-<span class="sourceLineNo">5099</span>    assertFalse(fr.isFlushSucceeded());<a name="line.5099"></a>
-<span class="sourceLineNo">5100</span>    assertFalse(fr.isCompactionNeeded());<a name="line.5100"></a>
-<span class="sourceLineNo">5101</span><a name="line.5101"></a>
-<span class="sourceLineNo">5102</span>    // Flush enough files to get up to the threshold, doesn't need compactions<a name="line.5102"></a>
-<span class="sourceLineNo">5103</span>    for (int i = 0; i &lt; 2; i++) {<a name="line.5103"></a>
-<span class="sourceLineNo">5104</span>      Put put = new Put(tableName.toBytes()).addColumn(family, family, tableName.toBytes());<a name="line.5104"></a>
-<span class="sourceLineNo">5105</span>      region.put(put);<a name="line.5105"></a>
-<span class="sourceLineNo">5106</span>      fr = region.flush(true);<a name="line.5106"></a>
-<span class="sourceLineNo">5107</span>      assertTrue(fr.isFlushSucceeded());<a name="line.5107"></a>
-<span class="sourceLineNo">5108</span>      assertFalse(fr.isCompactionNeeded());<a name="line.5108"></a>
-<span class="sourceLineNo">5109</span>    }<a name="line.5109"></a>
-<span class="sourceLineNo">5110</span><a name="line.5110"></a>
-<span class="sourceLineNo">5111</span>    // Two flushes after the threshold, compactions are needed<a name="line.5111"></a>
-<span class="sourceLineNo">5112</span>    for (int i = 0; i &lt; 2; i++) {<a name="line.5112"></a>
-<span class="sourceLineNo">5113</span>      Put put = new Put(tableName.toBytes()).addColumn(family, family, tableName.toBytes());<a name="line.5113"></a>
-<span class="sourceLineNo">5114</span>      region.put(put);<a name="line.5114"></a>
-<span class="sourceLineNo">5115</span>      fr = region.flush(true);<a name="line.5115"></a>
-<span class="sourceLineNo">5116</span>      assertTrue(fr.isFlushSucceeded());<a name="line.5116"></a>
-<span class="sourceLineNo">5117</span>      assertTrue(fr.isCompactionNeeded());<a name="line.5117"></a>
-<span class="sourceLineNo">5118</span>    }<a name="line.5118"></a>
-<span class="sourceLineNo">5119</span>  }<a name="line.5119"></a>
-<span class="sourceLineNo">5120</span><a name="line.5120"></a>
-<span class="sourceLineNo">5121</span>  private Configuration initSplit() {<a name="line.5121"></a>
-<span class="sourceLineNo">5122</span>    // Always compact if there is more than one store file.<a name="line.5122"></a>
-<span class="sourceLineNo">5123</span>    CONF.setInt("hbase.hstore.compactionThreshold", 2);<a name="line.5123"></a>
-<span class="sourceLineNo">5124</span><a name="line.5124"></a>
-<span class="sourceLineNo">5125</span>    // Make lease timeout longer, lease checks less frequent<a name="line.5125"></a>
-<span class="sourceLineNo">5126</span>    CONF.setInt("hbase.master.lease.thread.wakefrequency", 5 * 1000);<a name="line.5126"></a>
-<span class="sourceLineNo">5127</span><a name="line.5127"></a>
-<span class="sourceLineNo">5128</span>    CONF.setInt(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, 10 * 1000);<a name="line.5128"></a>
-<span class="sourceLineNo">5129</span><a name="line.5129"></a>
-<span class="sourceLineNo">5130</span>    // Increase the amount of time between client retries<a name="line.5130"></a>
-<span class="sourceLineNo">5131</span>    CONF.setLong("hbase.client.pause", 15 * 1000);<a name="line.5131"></a>
-<span class="sourceLineNo">5132</span><a name="line.5132"></a>
-<span class="sourceLineNo">5133</span>    // This size should make it so we always split using the addContent<a name="line.5133"></a>
-<span class="sourceLineNo">5134</span>    // below. After adding all data, the first region is 1.3M<a name="line.5134"></a>
-<span class="sourceLineNo">5135</span>    CONF.setLong(HConstants.HREGION_MAX_FILESIZE, 1024 * 128);<a name="line.5135"></a>
-<span class="sourceLineNo">5136</span>    return CONF;<a name="line.5136"></a>
-<span class="sourceLineNo">5137</span>  }<a name="line.5137"></a>
-<span class="sourceLineNo">5138</span><a name="line.5138"></a>
-<span class="sourceLineNo">5139</span>  /**<a name="line.5139"></a>
-<span class="sourceLineNo">5140</span>   * @param tableName<a name="line.5140"></a>
-<span class="sourceLineNo">5141</span>   * @param callingMethod<a name="line.5141"></a>
-<span class="sourceLineNo">5142</span>   * @param conf<a name="line.5142"></a>
-<span class="sourceLineNo">5143</span>   * @param families<a name="line.5143"></a>
-<span class="sourceLineNo">5144</span>   * @throws IOException<a name="line.5144"></a>
-<span class="sourceLineNo">5145</span>   * @return A region on which you must call<a name="line.5145"></a>
-<span class="sourceLineNo">5146</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5146"></a>
-<span class="sourceLineNo">5147</span>   */<a name="line.5147"></a>
-<span class="sourceLineNo">5148</span>  private static HRegion initHRegion(TableName tableName, String callingMethod, Configuration conf,<a name="line.5148"></a>
-<span class="sourceLineNo">5149</span>      byte[]... families) throws IOException {<a name="line.5149"></a>
-<span class="sourceLineNo">5150</span>    return initHRegion(tableName, null, null, callingMethod, conf, false, families);<a name="line.5150"></a>
-<span class="sourceLineNo">5151</span>  }<a name="line.5151"></a>
-<span class="sourceLineNo">5152</span><a name="line.5152"></a>
-<span class="sourceLineNo">5153</span>  /**<a name="line.5153"></a>
-<span class="sourceLineNo">5154</span>   * @param tableName<a name="line.5154"></a>
-<span class="sourceLineNo">5155</span>   * @param callingMethod<a name="line.5155"></a>
-<span class="sourceLineNo">5156</span>   * @param conf<a name="line.5156"></a>
-<span class="sourceLineNo">5157</span>   * @param isReadOnly<a name="line.5157"></a>
-<span class="sourceLineNo">5158</span>   * @param families<a name="line.5158"></a>
-<span class="sourceLineNo">5159</span>   * @throws IOException<a name="line.5159"></a>
-<span class="sourceLineNo">5160</span>   * @return A region on which you must call<a name="line.5160"></a>
-<span class="sourceLineNo">5161</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5161"></a>
-<span class="sourceLineNo">5162</span>   */<a name="line.5162"></a>
-<span class="sourceLineNo">5163</span>  private static HRegion initHRegion(TableName tableName, String callingMethod, Configuration conf,<a name="line.5163"></a>
-<span class="sourceLineNo">5164</span>      boolean isReadOnly, byte[]... families) throws IOException {<a name="line.5164"></a>
-<span class="sourceLineNo">5165</span>    return initHRegion(tableName, null, null, callingMethod, conf, isReadOnly, families);<a name="line.5165"></a>
-<span class="sourceLineNo">5166</span>  }<a name="line.5166"></a>
-<span class="sourceLineNo">5167</span><a name="line.5167"></a>
-<span class="sourceLineNo">5168</span>  public static HRegion initHRegion(TableName tableName, byte[] startKey, byte[] stopKey,<a name="line.5168"></a>
-<span class="sourceLineNo">5169</span>      String callingMethod, Configuration conf, boolean isReadOnly, byte[]... families)<a name="line.5169"></a>
-<span class="sourceLineNo">5170</span>      throws IOException {<a name="line.5170"></a>
-<span class="sourceLineNo">5171</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.5171"></a>
-<span class="sourceLineNo">5172</span>    HRegionInfo hri = new HRegionInfo(tableName, startKey, stopKey);<a name="line.5172"></a>
-<span class="sourceLineNo">5173</span>    final WAL wal = HBaseTestingUtility.createWal(conf, logDir, hri);<a name="line.5173"></a>
-<span class="sourceLineNo">5174</span>    return initHRegion(tableName, startKey, stopKey, callingMethod, conf, isReadOnly,<a name="line.5174"></a>
-<span class="sourceLineNo">5175</span>        Durability.SYNC_WAL, wal, families);<a name="line.5175"></a>
-<span class="sourceLineNo">5176</span>  }<a name="line.5176"></a>
-<span class="sourceLineNo">5177</span><a name="line.5177"></a>
-<span class="sourceLineNo">5178</span>  /**<a name="line.5178"></a>
-<span class="sourceLineNo">5179</span>   * @param tableName<a name="line.5179"></a>
-<span class="sourceLineNo">5180</span>   * @param startKey<a name="line.5180"></a>
-<span class="sourceLineNo">5181</span>   * @param stopKey<a name="line.5181"></a>
-<span class="sourceLineNo">5182</span>   * @param callingMethod<a name="line.5182"></a>
-<span class="sourceLineNo">5183</span>   * @param conf<a name="line.5183"></a>
-<span class="sourceLineNo">5184</span>   * @param isReadOnly<a name="line.5184"></a>
-<span class="sourceLineNo">5185</span>   * @param families<a name="line.5185"></a>
-<span class="sourceLineNo">5186</span>   * @throws IOException<a name="line.5186"></a>
-<span class="sourceLineNo">5187</span>   * @return A region on which you must call<a name="line.5187"></a>
-<span class="sourceLineNo">5188</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5188"></a>
-<span class="sourceLineNo">5189</span>   */<a name="line.5189"></a>
-<span class="sourceLineNo">5190</span>  public static HRegion initHRegion(TableName tableName, byte[] startKey, byte[] stopKey,<a name="line.5190"></a>
-<span class="sourceLineNo">5191</span>      String callingMethod, Configuration conf, boolean isReadOnly, Durability durability,<a name="line.5191"></a>
-<span class="sourceLineNo">5192</span>      WAL wal, byte[]... families) throws IOException {<a name="line.5192"></a>
-<span class="sourceLineNo">5193</span>    return TEST_UTIL.createLocalHRegion(tableName, startKey, stopKey,<a name="line.5193"></a>
-<span class="sourceLineNo">5194</span>        isReadOnly, durability, wal, families);<a name="line.5194"></a>
-<span class="sourceLineNo">5195</span>  }<a name="line.5195"></a>
-<span class="sourceLineNo">5196</span><a name="line.5196"></a>
-<span class="sourceLineNo">5197</span>  /**<a name="line.5197"></a>
-<span class="sourceLineNo">5198</span>   * Assert that the passed in Cell has expected contents for the specified row,<a name="line.5198"></a>
-<span class="sourceLineNo">5199</span>   * column &amp; timestamp.<a name="line.5199"></a>
-<span class="sourceLineNo">5200</span>   */<a name="line.5200"></a>
-<span class="sourceLineNo">5201</span>  private void checkOneCell(Cell kv, byte[] cf, int rowIdx, int colIdx, long ts) {<a name="line.5201"></a>
-<span class="sourceLineNo">5202</span>    String ctx = "rowIdx=" + rowIdx + "; colIdx=" + colIdx + "; ts=" + ts;<a name="line.5202"></a>
-<span class="sourceLineNo">5203</span>    assertEquals("Row mismatch which checking: " + ctx, "row:" + rowIdx,<a name="line.5203"></a>
-<span class="sourceLineNo">5204</span>        Bytes.toString(CellUtil.cloneRow(kv)));<a name="line.5204"></a>
-<span class="sourceLineNo">5205</span>    assertEquals("ColumnFamily mismatch while checking: " + ctx, Bytes.toString(cf),<a name="line.5205"></a>
-<span class="sourceLineNo">5206</span>        Bytes.toString(CellUtil.cloneFamily(kv)));<a name="line.5206"></a>
-<span class="sourceLineNo">5207</span>    assertEquals("Column qualifier mismatch while checking: " + ctx, "column:" + colIdx,<a name="line.5207"></a>
-<span class="sourceLineNo">5208</span>        Bytes.toString(CellUtil.cloneQualifier(kv)));<a name="line.5208"></a>
-<span class="sourceLineNo">5209</span>    assertEquals("Timestamp mismatch while checking: " + ctx, ts, kv.getTimestamp());<a name="line.5209"></a>
-<span class="sourceLineNo">5210</span>    assertEquals("Value mismatch while checking: " + ctx, "value-version-" + ts,<a name="line.5210"></a>
-<span class="sourceLineNo">5211</span>        Bytes.toString(CellUtil.cloneValue(kv)));<a name="line.5211"></a>
-<span class="sourceLineNo">5212</span>  }<a name="line.5212"></a>
-<span class="sourceLineNo">5213</span><a name="line.5213"></a>
-<span class="sourceLineNo">5214</span>  @Test (timeout=60000)<a name="line.5214"></a>
-<span class="sourceLineNo">5215</span>  public void testReverseScanner_FromMemStore_SingleCF_Normal()<a name="line.5215"></a>
-<span class="sourceLineNo">5216</span>      throws IOException {<a name="line.5216"></a>
-<span class="sourceLineNo">5217</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5217"></a>
-<span class="sourceLineNo">5218</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5218"></a>
-<span class="sourceLineNo">5219</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5219"></a>
-<span class="sourceLineNo">5220</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5220"></a>
-<span class="sourceLineNo">5221</span>    byte[][] families = { cf };<a name="line.5221"></a>
-<span class="sourceLineNo">5222</span>    byte[] col = Bytes.toBytes("C");<a name="line.5222"></a>
-<span class="sourceLineNo">5223</span>    long ts = 1;<a name="line.5223"></a>
-<span class="sourceLineNo">5224</span>    String method = this.getName();<a name="line.5224"></a>
-<span class="sourceLineNo">5225</span>    this.region = initHRegion(tableName, method, families);<a name="line.5225"></a>
-<span class="sourceLineNo">5226</span>    try {<a name="line.5226"></a>
-<span class="sourceLineNo">5227</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5227"></a>
-<span class="sourceLineNo">5228</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5228"></a>
-<span class="sourceLineNo">5229</span>          null);<a name="line.5229"></a>
-<span class="sourceLineNo">5230</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5230"></a>
-<span class="sourceLineNo">5231</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5231"></a>
-<span class="sourceLineNo">5232</span>      Put put = null;<a name="line.5232"></a>
-<span class="sourceLineNo">5233</span>      put = new Put(rowC);<a name="line.5233"></a>
-<span class="sourceLineNo">5234</span>      put.add(kv1);<a name="line.5234"></a>
-<span class="sourceLineNo">5235</span>      put.add(kv11);<a name="line.5235"></a>
-<span class="sourceLineNo">5236</span>      region.put(put);<a name="line.5236"></a>
-<span class="sourceLineNo">5237</span>      put = new Put(rowA);<a name="line.5237"></a>
-<span class="sourceLineNo">5238</span>      put.add(kv2);<a name="line.5238"></a>
-<span class="sourceLineNo">5239</span>      region.put(put);<a name="line.5239"></a>
-<span class="sourceLineNo">5240</span>      put = new Put(rowB);<a name="line.5240"></a>
-<span class="sourceLineNo">5241</span>      put.add(kv3);<a name="line.5241"></a>
-<span class="sourceLineNo">5242</span>      region.put(put);<a name="line.5242"></a>
-<span class="sourceLineNo">5243</span><a name="line.5243"></a>
-<span class="sourceLineNo">5244</span>      Scan scan = new Scan(rowC);<a name="line.5244"></a>
-<span class="sourceLineNo">5245</span>      scan.setMaxVersions(5);<a name="line.5245"></a>
-<span class="sourceLineNo">5246</span>      scan.setReversed(true);<a name="line.5246"></a>
-<span class="sourceLineNo">5247</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5247"></a>
-<span class="sourceLineNo">5248</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5248"></a>
-<span class="sourceLineNo">5249</span>      boolean hasNext = scanner.next(currRow);<a name="line.5249"></a>
-<span class="sourceLineNo">5250</span>      assertEquals(2, currRow.size());<a name="line.5250"></a>
-<span class="sourceLineNo">5251</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5251"></a>
-<span class="sourceLineNo">5252</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5252"></a>
-<span class="sourceLineNo">5253</span>      assertTrue(hasNext);<a name="line.5253"></a>
-<span class="sourceLineNo">5254</span>      currRow.clear();<a name="line.5254"></a>
-<span class="sourceLineNo">5255</span>      hasNext = scanner.next(currRow);<a name="line.5255"></a>
-<span class="sourceLineNo">5256</span>      assertEquals(1, currRow.size());<a name="line.5256"></a>
-<span class="sourceLineNo">5257</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5257"></a>
-<span class="sourceLineNo">5258</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5258"></a>
-<span class="sourceLineNo">5259</span>      assertTrue(hasNext);<a name="line.5259"></a>
-<span class="sourceLineNo">5260</span>      currRow.clear();<a name="line.5260"></a>
-<span class="sourceLineNo">5261</span>      hasNext = scanner.next(currRow);<a name="line.5261"></a>
-<span class="sourceLineNo">5262</span>      assertEquals(1, currRow.size());<a name="line.5262"></a>
-<span class="sourceLineNo">5263</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5263"></a>
-<span class="sourceLineNo">5264</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5264"></a>
-<span class="sourceLineNo">5265</span>      assertFalse(hasNext);<a name="line.5265"></a>
-<span class="sourceLineNo">5266</span>      scanner.close();<a name="line.5266"></a>
-<span class="sourceLineNo">5267</span>    } finally {<a name="line.5267"></a>
-<span class="sourceLineNo">5268</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5268"></a>
-<span class="sourceLineNo">5269</span>      this.region = null;<a name="line.5269"></a>
-<span class="sourceLineNo">5270</span>    }<a name="line.5270"></a>
-<span class="sourceLineNo">5271</span>  }<a name="line.5271"></a>
-<span class="sourceLineNo">5272</span><a name="line.5272"></a>
-<span class="sourceLineNo">5273</span>  @Test (timeout=60000)<a name="line.5273"></a>
-<span class="sourceLineNo">5274</span>  public void testReverseScanner_FromMemStore_SingleCF_LargerKey()<a name="line.5274"></a>
-<span class="sourceLineNo">5275</span>      throws IOException {<a name="line.5275"></a>
-<span class="sourceLineNo">5276</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5276"></a>
-<span class="sourceLineNo">5277</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5277"></a>
-<span class="sourceLineNo">5278</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5278"></a>
-<span class="sourceLineNo">5279</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5279"></a>
-<span class="sourceLineNo">5280</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5280"></a>
-<span class="sourceLineNo">5281</span>    byte[][] families = { cf };<a name="line.5281"></a>
-<span class="sourceLineNo">5282</span>    byte[] col = Bytes.toBytes("C");<a name="line.5282"></a>
-<span class="sourceLineNo">5283</span>    long ts = 1;<a name="line.5283"></a>
-<span class="sourceLineNo">5284</span>    String method = this.getName();<a name="line.5284"></a>
-<span class="sourceLineNo">5285</span>    this.region = initHRegion(tableName, method, families);<a name="line.5285"></a>
-<span class="sourceLineNo">5286</span>    try {<a name="line.5286"></a>
-<span class="sourceLineNo">5287</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5287"></a>
-<span class="sourceLineNo">5288</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5288"></a>
-<span class="sourceLineNo">5289</span>          null);<a name="line.5289"></a>
-<span class="sourceLineNo">5290</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5290"></a>
-<span class="sourceLineNo">5291</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5291"></a>
-<span class="sourceLineNo">5292</span>      Put put = null;<a name="line.5292"></a>
-<span class="sourceLineNo">5293</span>      put = new Put(rowC);<a name="line.5293"></a>
-<span class="sourceLineNo">5294</span>      put.add(kv1);<a name="line.5294"></a>
-<span class="sourceLineNo">5295</span>      put.add(kv11);<a name="line.5295"></a>
-<span class="sourceLineNo">5296</span>      region.put(put);<a name="line.5296"></a>
-<span class="sourceLineNo">5297</span>      put = new Put(rowA);<a name="line.5297"></a>
-<span class="sourceLineNo">5298</span>      put.add(kv2);<a name="line.5298"></a>
-<span class="sourceLineNo">5299</span>      region.put(put);<a name="line.5299"></a>
-<span class="sourceLineNo">5300</span>      put = new Put(rowB);<a name="line.5300"></a>
-<span class="sourceLineNo">5301</span>      put.add(kv3);<a name="line.5301"></a>
-<span class="sourceLineNo">5302</span>      region.put(put);<a name="line.5302"></a>
-<span class="sourceLineNo">5303</span><a name="line.5303"></a>
-<span class="sourceLineNo">5304</span>      Scan scan = new Scan(rowD);<a name="line.5304"></a>
-<span class="sourceLineNo">5305</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5305"></a>
-<span class="sourceLineNo">5306</span>      scan.setReversed(true);<a name="line.5306"></a>
-<span class="sourceLineNo">5307</span>      scan.setMaxVersions(5);<a name="line.5307"></a>
-<span class="sourceLineNo">5308</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5308"></a>
-<span class="sourceLineNo">5309</span>      boolean hasNext = scanner.next(currRow);<a name="line.5309"></a>
-<span class="sourceLineNo">5310</span>      assertEquals(2, currRow.size());<a name="line.5310"></a>
-<span class="sourceLineNo">5311</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5311"></a>
-<span class="sourceLineNo">5312</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5312"></a>
-<span class="sourceLineNo">5313</span>      assertTrue(hasNext);<a name="line.5313"></a>
-<span class="sourceLineNo">5314</span>      currRow.clear();<a name="line.5314"></a>
-<span class="sourceLineNo">5315</span>      hasNext = scanner.next(currRow);<a name="line.5315"></a>
-<span class="sourceLineNo">5316</span>      assertEquals(1, currRow.size());<a name="line.5316"></a>
-<span class="sourceLineNo">5317</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5317"></a>
-<span class="sourceLineNo">5318</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5318"></a>
-<span class="sourceLineNo">5319</span>      assertTrue(hasNext);<a name="line.5319"></a>
-<span class="sourceLineNo">5320</span>      currRow.clear();<a name="line.5320"></a>
-<span class="sourceLineNo">5321</span>      hasNext = scanner.next(currRow);<a name="line.5321"></a>
-<span class="sourceLineNo">5322</span>      assertEquals(1, currRow.size());<a name="line.5322"></a>
-<span class="sourceLineNo">5323</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5323"></a>
-<span class="sourceLineNo">5324</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5324"></a>
-<span class="sourceLineNo">5325</span>      assertFalse(hasNext);<a name="line.5325"></a>
-<span class="sourceLineNo">5326</span>      scanner.close();<a name="line.5326"></a>
-<span class="sourceLineNo">5327</span>    } finally {<a name="line.5327"></a>
-<span class="sourceLineNo">5328</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5328"></a>
-<span class="sourceLineNo">5329</span>      this.region = null;<a name="line.5329"></a>
-<span class="sourceLineNo">5330</span>    }<a name="line.5330"></a>
-<span class="sourceLineNo">5331</span>  }<a name="line.5331"></a>
-<span class="sourceLineNo">5332</span><a name="line.5332"></a>
-<span class="sourceLineNo">5333</span>  @Test (timeout=60000)<a name="line.5333"></a>
-<span class="sourceLineNo">5334</span>  public void testReverseScanner_FromMemStore_SingleCF_FullScan()<a name="line.5334"></a>
-<span class="sourceLineNo">5335</span>      throws IOException {<a name="line.5335"></a>
-<span class="sourceLineNo">5336</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5336"></a>
-<span class="sourceLineNo">5337</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5337"></a>
-<span class="sourceLineNo">5338</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5338"></a>
-<span class="sourceLineNo">5339</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5339"></a>
-<span class="sourceLineNo">5340</span>    byte[][] families = { cf };<a name="line.5340"></a>
-<span class="sourceLineNo">5341</span>    byte[] col = Bytes.toBytes("C");<a name="line.5341"></a>
-<span class="sourceLineNo">5342</span>    long ts = 1;<a name="line.5342"></a>
-<span class="sourceLineNo">5343</span>    String method = this.getName();<a name="line.5343"></a>
-<span class="sourceLineNo">5344</span>    this.region = initHRegion(tableName, method, families);<a name="line.5344"></a>
-<span class="sourceLineNo">5345</span>    try {<a name="line.5345"></a>
-<span class="sourceLineNo">5346</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5346"></a>
-<span class="sourceLineNo">5347</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5347"></a>
-<span class="sourceLineNo">5348</span>          null);<a name="line.5348"></a>
-<span class="sourceLineNo">5349</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5349"></a>
-<span class="sourceLineNo">5350</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5350"></a>
-<span class="sourceLineNo">5351</span>      Put put = null;<a name="line.5351"></a>
-<span class="sourceLineNo">5352</span>      put = new Put(rowC);<a name="line.5352"></a>
-<span class="sourceLineNo">5353</span>      put.add(kv1);<a name="line.5353"></a>
-<span class="sourceLineNo">5354</span>      put.add(kv11);<a name="line.5354"></a>
-<span class="sourceLineNo">5355</span>      region.put(put);<a name="line.5355"></a>
-<span class="sourceLineNo">5356</span>      put = new Put(rowA);<a name="line.5356"></a>
-<span class="sourceLineNo">5357</span>      put.add(kv2);<a name="line.5357"></a>
-<span class="sourceLineNo">5358</span>      region.put(put);<a name="line.5358"></a>
-<span class="sourceLineNo">5359</span>      put = new Put(rowB);<a name="line.5359"></a>
-<span class="sourceLineNo">5360</span>      put.add(kv3);<a name="line.5360"></a>
-<span class="sourceLineNo">5361</span>      region.put(put);<a name="line.5361"></a>
-<span class="sourceLineNo">5362</span>      Scan scan = new Scan();<a name="line.5362"></a>
-<span class="sourceLineNo">5363</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5363"></a>
-<span class="sourceLineNo">5364</span>      scan.setReversed(true);<a name="line.5364"></a>
-<span class="sourceLineNo">5365</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5365"></a>
-<span class="sourceLineNo">5366</span>      boolean hasNext = scanner.next(currRow);<a name="line.5366"></a>
-<span class="sourceLineNo">5367</span>      assertEquals(1, currRow.size());<a name="line.5367"></a>
-<span class="sourceLineNo">5368</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5368"></a>
-<span class="sourceLineNo">5369</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5369"></a>
-<span class="sourceLineNo">5370</span>      assertTrue(hasNext);<a name="line.5370"></a>
-<span class="sourceLineNo">5371</span>      currRow.clear();<a name="line.5371"></a>
-<span class="sourceLineNo">5372</span>      hasNext = scanner.next(currRow);<a name="line.5372"></a>
-<span class="sourceLineNo">5373</span>      assertEquals(1, currRow.size());<a name="line.5373"></a>
-<span class="sourceLineNo">5374</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5374"></a>
-<span class="sourceLineNo">5375</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5375"></a>
-<span class="sourceLineNo">5376</span>      assertTrue(hasNext);<a name="line.5376"></a>
-<span class="sourceLineNo">5377</span>      currRow.clear();<a name="line.5377"></a>
-<span class="sourceLineNo">5378</span>      hasNext = scanner.next(currRow);<a name="line.5378"></a>
-<span class="sourceLineNo">5379</span>      assertEquals(1, currRow.size());<a name="line.5379"></a>
-<span class="sourceLineNo">5380</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5380"></a>
-<span class="sourceLineNo">5381</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5381"></a>
-<span class="sourceLineNo">5382</span>      assertFalse(hasNext);<a name="line.5382"></a>
-<span class="sourceLineNo">5383</span>      scanner.close();<a name="line.5383"></a>
-<span class="sourceLineNo">5384</span>    } finally {<a name="line.5384"></a>
-<span class="sourceLineNo">5385</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5385"></a>
-<span class="sourceLineNo">5386</span>      this.region = null;<a name="line.5386"></a>
-<span class="sourceLineNo">5387</span>    }<a name="line.5387"></a>
-<span class="sourceLineNo">5388</span>  }<a name="line.5388"></a>
-<span class="sourceLineNo">5389</span><a name="line.5389"></a>
-<span class="sourceLineNo">5390</span>  @Test (timeout=60000)<a name="line.5390"></a>
-<span class="sourceLineNo">5391</span>  public void testReverseScanner_moreRowsMayExistAfter() throws IOException {<a name="line.5391"></a>
-<span class="sourceLineNo">5392</span>    // case for "INCLUDE_AND_SEEK_NEXT_ROW &amp; SEEK_NEXT_ROW" endless loop<a name="line.5392"></a>
-<span class="sourceLineNo">5393</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5393"></a>
-<span class="sourceLineNo">5394</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5394"></a>
-<span class="sourceLineNo">5395</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5395"></a>
-<span class="sourceLineNo">5396</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5396"></a>
-<span class="sourceLineNo">5397</span>    byte[] rowE = Bytes.toBytes("rowE");<a name="line.5397"></a>
-<span class="sourceLineNo">5398</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5398"></a>
-<span class="sourceLineNo">5399</span>    byte[][] families = { cf };<a name="line.5399"></a>
-<span class="sourceLineNo">5400</span>    byte[] col1 = Bytes.toBytes("col1");<a name="line.5400"></a>
-<span class="sourceLineNo">5401</span>    byte[] col2 = Bytes.toBytes("col2");<a name="line.5401"></a>
-<span class="sourceLineNo">5402</span>    long ts = 1;<a name="line.5402"></a>
-<span class="sourceLineNo">5403</span>    String method = this.getName();<a name="line.5403"></a>
-<span class="sourceLineNo">5404</span>    this.region = initHRegion(tableName, method, families);<a name="line.5404"></a>
-<span class="sourceLineNo">5405</span>    try {<a name="line.5405"></a>
-<span class="sourceLineNo">5406</span>      KeyValue kv1 = new KeyValue(rowA, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5406"></a>
-<span class="sourceLineNo">5407</span>      KeyValue kv2 = new KeyValue(rowB, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5407"></a>
-<span class="sourceLineNo">5408</span>      KeyValue kv3 = new KeyValue(rowC, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5408"></a>
-<span class="sourceLineNo">5409</span>      KeyValue kv4_1 = new KeyValue(rowD, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5409"></a>
-<span class="sourceLineNo">5410</span>      KeyValue kv4_2 = new KeyValue(rowD, cf, col2, ts, KeyValue.Type.Put, null);<a name="line.5410"></a>
-<span class="sourceLineNo">5411</span>      KeyValue kv5 = new KeyValue(rowE, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5411"></a>
-<span class="sourceLineNo">5412</span>      Put put = null;<a name="line.5412"></a>
-<span class="sourceLineNo">5413</span>      put = new Put(rowA);<a name="line.5413"></a>
-<span class="sourceLineNo">5414</span>      put.add(kv1);<a name="line.5414"></a>
-<span class="sourceLineNo">5415</span>      region.put(put);<a name="line.5415"></a>
-<span class="sourceLineNo">5416</span>      put = new Put(rowB);<a name="line.5416"></a>
-<span class="sourceLineNo">5417</span>      put.add(kv2);<a name="line.5417"></a>
-<span class="sourceLineNo">5418</span>      region.put(put);<a name="line.5418"></a>
-<span class="sourceLineNo">5419</span>      put = new Put(rowC);<a name="line.5419"></a>
-<span class="sourceLineNo">5420</span>      put.add(kv3);<a name="line.5420"></a>
-<span class="sourceLineNo">5421</span>      region.put(put);<a name="line.5421"></a>
-<span class="sourceLineNo">5422</span>      put = new Put(rowD);<a name="line.5422"></a>
-<span class="sourceLineNo">5423</span>      put.add(kv4_1);<a name="line.5423"></a>
-<span class="sourceLineNo">5424</span>      region.put(put);<a name="line.5424"></a>
-<span class="sourceLineNo">5425</span>      put = new Put(rowD);<a name="line.5425"></a>
-<span class="sourceLineNo">5426</span>      put.add(kv4_2);<a name="line.5426"></a>
-<span class="sourceLineNo">5427</span>      region.put(put);<a name="line.5427"></a>
-<span class="sourceLineNo">5428</span>      put = new Put(rowE);<a name="line.5428"></a>
-<span class="sourceLineNo">5429</span>      put.add(kv5);<a name="line.5429"></a>
-<span class="sourceLineNo">5430</span>      region.put(put);<a name="line.5430"></a>
-<span class="sourceLineNo">5431</span>      region.flush(true);<a name="line.5431"></a>
-<span class="sourceLineNo">5432</span>      Scan scan = new Scan(rowD, rowA);<a name="line.5432"></a>
-<span class="sourceLineNo">5433</span>      scan.addColumn(families[0], col1);<a name="line.5433"></a>
-<span class="sourceLineNo">5434</span>      scan.setReversed(true);<a name="line.5434"></a>
-<span class="sourceLineNo">5435</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5435"></a>
-<span class="sourceLineNo">5436</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5436"></a>
-<span class="sourceLineNo">5437</span>      boolean hasNext = scanner.next(currRow);<a name="line.5437"></a>
-<span class="sourceLineNo">5438</span>      assertEquals(1, currRow.size());<a name="line.5438"></a>
-<span class="sourceLineNo">5439</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5439"></a>
-<span class="sourceLineNo">5440</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5440"></a>
-<span class="sourceLineNo">5441</span>      assertTrue(hasNext);<a name="line.5441"></a>
-<span class="sourceLineNo">5442</span>      currRow.clear();<a name="line.5442"></a>
-<span class="sourceLineNo">5443</span>      hasNext = scanner.next(currRow);<a name="line.5443"></a>
-<span class="sourceLineNo">5444</span>      assertEquals(1, currRow.size());<a name="line.5444"></a>
-<span class="sourceLineNo">5445</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5445"></a>
-<span class="sourceLineNo">5446</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5446"></a>
-<span class="sourceLineNo">5447</span>      assertTrue(hasNext);<a name="line.5447"></a>
-<span class="sourceLineNo">5448</span>      currRow.clear();<a name="line.5448"></a>
-<span class="sourceLineNo">5449</span>      hasNext = scanner.next(currRow);<a name="line.5449"></a>
-<span class="sourceLineNo">5450</span>      assertEquals(1, currRow.size());<a name="line.5450"></a>
-<span class="sourceLineNo">5451</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5451"></a>
-<span class="sourceLineNo">5452</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5452"></a>
-<span class="sourceLineNo">5453</span>      assertFalse(hasNext);<a name="line.5453"></a>
-<span class="sourceLineNo">5454</span>      scanner.close();<a name="line.5454"></a>
-<span class="sourceLineNo">5455</span><a name="line.5455"></a>
-<span class="sourceLineNo">5456</span>      scan = new Scan(rowD, rowA);<a name="line.5456"></a>
-<span class="sourceLineNo">5457</span>      scan.addColumn(families[0], col2);<a name="line.5457"></a>
-<span class="sourceLineNo">5458</span>      scan.setReversed(true);<a name="line.5458"></a>
-<span class="sourceLineNo">5459</span>      currRow.clear();<a name="line.5459"></a>
-<span class="sourceLineNo">5460</span>      scanner = region.getScanner(scan);<a name="line.5460"></a>
-<span class="sourceLineNo">5461</span>      hasNext = scanner.next(currRow);<a name="line.5461"></a>
-<span class="sourceLineNo">5462</span>      assertEquals(1, currRow.size());<a name="line.5462"></a>
-<span class="sourceLineNo">5463</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5463"></a>
-<span class="sourceLineNo">5464</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5464"></a>
-<span class="sourceLineNo">5465</span>      scanner.close();<a name="line.5465"></a>
-<span class="sourceLineNo">5466</span>    } finally {<a name="line.5466"></a>
-<span class="sourceLineNo">5467</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5467"></a>
-<span class="sourceLineNo">5468</span>      this.region = null;<a name="line.5468"></a>
-<span class="sourceLineNo">5469</span>    }<a name="line.5469"></a>
-<span class="sourceLineNo">5470</span>  }<a name="line.5470"></a>
-<span class="sourceLineNo">5471</span><a name="line.5471"></a>
-<span class="sourceLineNo">5472</span>  @Test (timeout=60000)<a name="line.5472"></a>
-<span class="sourceLineNo">5473</span>  public void testReverseScanner_smaller_blocksize() throws IOException {<a name="line.5473"></a>
-<span class="sourceLineNo">5474</span>    // case to ensure no conflict with HFile index optimization<a name="line.5474"></a>
-<span class="sourceLineNo">5475</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5475"></a>
-<span class="sourceLineNo">5476</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5476"></a>
-<span class="sourceLineNo">5477</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5477"></a>
-<span class="sourceLineNo">5478</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5478"></a>
-<span class="sourceLineNo">5479</span>    byte[] rowE = Bytes.toBytes("rowE");<a name="line.5479"></a>
-<span class="sourceLineNo">5480</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5480"></a>
-<span class="sourceLineNo">5481</span>    byte[][] families = { cf };<a name="line.5481"></a>
-<span class="sourceLineNo">5482</span>    byte[] col1 = Bytes.toBytes("col1");<a name="line.5482"></a>
-<span class="sourceLineNo">5483</span>    byte[] col2 = Bytes.toBytes("col2");<a name="line.5483"></a>
-<span class="sourceLineNo">5484</span>    long ts = 1;<a name="line.5484"></a>
-<span class="sourceLineNo">5485</span>    String method = this.getName();<a name="line.5485"></a>
-<span class="sourceLineNo">5486</span>    HBaseConfiguration config = new HBaseConfiguration();<a name="line.5486"></a>
-<span class="sourceLineNo">5487</span>    config.setInt("test.block.size", 1);<a name="line.5487"></a>
-<span class="sourceLineNo">5488</span>    this.region = initHRegion(tableName, method, config, families);<a name="line.5488"></a>
-<span class="sourceLineNo">5489</span>    try {<a name="line.5489"></a>
-<span class="sourceLineNo">5490</span>      KeyValue kv1 = new KeyValue(rowA, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5490"></a>
-<span class="sourceLineNo">5491</span>      KeyValue kv2 = new KeyValue(rowB, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5491"></a>
-<span class="sourceLineNo">5492</span>      KeyValue kv3 = new KeyValue(rowC, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5492"></a>
-<span class="sourceLineNo">5493</span>      KeyValue kv4_1 = new KeyValue(rowD, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5493"></a>
-<span class="sourceLineNo">5494</span>      KeyValue kv4_2 = new KeyValue(rowD, cf, col2, ts, KeyValue.Type.Put, null);<a name="line.5494"></a>
-<span class="sourceLineNo">5495</span>      KeyValue kv5 = new KeyValue(rowE, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5495"></a>
-<span class="sourceLineNo">5496</span>      Put put = null;<a name="line.5496"></a>
-<span class="sourceLineNo">5497</span>      put = new Put(rowA);<a name="line.5497"></a>
-<span class="sourceLineNo">5498</span>      put.add(kv1);<a name="line.5498"></a>
-<span class="sourceLineNo">5499</span>      region.put(put);<a name="line.5499"></a>
-<span class="sourceLineNo">5500</span>      put = new Put(rowB);<a name="line.5500"></a>
-<span class="sourceLineNo">5501</span>      put.add(kv2);<a name="line.5501"></a>
-<span class="sourceLineNo">5502</span>      region.put(put);<a name="line.5502"></a>
-<span class="sourceLineNo">5503</span>      put = new Put(rowC);<a name="line.5503"></a>
-<span class="sourceLineNo">5504</span>      put.add(kv3);<a name="line.5504"></a>
-<span class="sourceLineNo">5505</span>      region.put(put);<a name="line.5505"></a>
-<span class="sourceLineNo">5506</span>      put = new Put(rowD);<a name="line.5506"></a>
-<span class="sourceLineNo">5507</span>      put.add(kv4_1);<a name="line.5507"></a>
-<span class="sourceLineNo">5508</span>      region.put(put);<a name="line.5508"></a>
-<span class="sourceLineNo">5509</span>      put = new Put(rowD);<a name="line.5509"></a>
-<span class="sourceLineNo">5510</span>      put.add(kv4_2);<a name="line.5510"></a>
-<span class="sourceLineNo">5511</span>      region.put(put);<a name="line.5511"></a>
-<span class="sourceLineNo">5512</span>      put = new Put(rowE);<a name="line.5512"></a>
-<span class="sourceLineNo">5513</span>      put.add(kv5);<a name="line.5513"></a>
-<span class="sourceLineNo">5514</span>      region.put(put);<a name="line.5514"></a>
-<span class="sourceLineNo">5515</span>      region.flush(true);<a name="line.5515"></a>
-<span class="sourceLineNo">5516</span>      Scan scan = new Scan(rowD, rowA);<a name="line.5516"></a>
-<span class="sourceLineNo">5517</span>      scan.addColumn(families[0], col1);<a name="line.5517"></a>
-<span class="sourceLineNo">5518</span>      scan.setReversed(true);<a name="line.5518"></a>
-<span class="sourceLineNo">5519</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5519"></a>
-<span class="sourceLineNo">5520</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5520"></a>
-<span class="sourceLineNo">5521</span>      boolean hasNext = scanner.next(currRow);<a name="line.5521"></a>
-<span class="sourceLineNo">5522</span>      assertEquals(1, currRow.size());<a name="line.5522"></a>
-<span class="sourceLineNo">5523</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5523"></a>
-<span class="sourceLineNo">5524</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5524"></a>
-<span class="sourceLineNo">5525</span>      assertTrue(hasNext);<a name="line.5525"></a>
-<span class="sourceLineNo">5526</span>      currRow.clear();<a name="line.5526"></a>
-<span class="sourceLineNo">5527</span>      hasNext = scanner.next(currRow);<a name="line.5527"></a>
-<span class="sourceLineNo">5528</span>      assertEquals(1, currRow.size());<a name="line.5528"></a>
-<span class="sourceLineNo">5529</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5529"></a>
-<span class="sourceLineNo">5530</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5530"></a>
-<span class="sourceLineNo">5531</span>      assertTrue(hasNext);<a name="line.5531"></a>
-<span class="sourceLineNo">5532</span>      currRow.clear();<a name="line.5532"></a>
-<span class="sourceLineNo">5533</span>      hasNext = scanner.next(currRow);<a name="line.5533"></a>
-<span class="sourceLineNo">5534</span>      assertEquals(1, currRow.size());<a name="line.5534"></a>
-<span class="sourceLineNo">5535</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5535"></a>
-<span class="sourceLineNo">5536</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5536"></a>
-<span class="sourceLineNo">5537</span>      assertFalse(hasNext);<a name="line.5537"></a>
-<span class="sourceLineNo">5538</span>      scanner.close();<a name="line.5538"></a>
-<span class="sourceLineNo">5539</span><a name="line.5539"></a>
-<span class="sourceLineNo">5540</span>      scan = new Scan(rowD, rowA);<a name="line.5540"></a>
-<span class="sourceLineNo">5541</span>      scan.addColumn(families[0], col2);<a name="line.5541"></a>
-<span class="sourceLineNo">5542</span>      scan.setReversed(true);<a name="line.5542"></a>
-<span class="sourceLineNo">5543</span>      currRow.clear();<a name="line.5543"></a>
-<span class="sourceLineNo">5544</span>      scanner = region.getScanner(scan);<a name="line.5544"></a>
-<span class="sourceLineNo">5545</span>      hasNext = scanner.next(currRow);<a name="line.5545"></a>
-<span class="sourceLineNo">5546</span>      assertEquals(1, currRow.size());<a name="line.5546"></a>
-<span class="sourceLineNo">5547</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5547"></a>
-<span class="sourceLineNo">5548</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5548"></a>
-<span class="sourceLineNo">5549</span>      scanner.close();<a name="line.5549"></a>
-<span class="sourceLineNo">5550</span>    } finally {<a name="line.5550"></a>
-<span class="sourceLineNo">5551</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5551"></a>
-<span class="sourceLineNo">5552</span>      this.region = null;<a name="line.5552"></a>
-<span class="sourceLineNo">5553</span>    }<a name="line.5553"></a>
-<span class="sourceLineNo">5554</span>  }<a name="line.5554"></a>
-<span class="sourceLineNo">5555</span><a name="line.5555"></a>
-<span class="sourceLineNo">5556</span>  @Test (timeout=60000)<a name="line.5556"></a>
-<span class="sourceLineNo">5557</span>  public void testReverseScanner_FromMemStoreAndHFiles_MultiCFs1()<a name="line.5557"></a>
-<span class="sourceLineNo">5558</span>      throws IOException {<a name="line.5558"></a>
-<span class="sourceLineNo">5559</span>    byte[] row0 = Bytes.toBytes("row0"); // 1 kv<a name="line.5559"></a>
-<span class="sourceLineNo">5560</span>    byte[] row1 = Bytes.toBytes("row1"); // 2 kv<a name="line.5560"></a>
-<span class="sourceLineNo">5561</span>    byte[] row2 = Bytes.toBytes("row2"); // 4 kv<a name="line.5561"></a>
-<span class="sourceLineNo">5562</span>    byte[] row3 = Bytes.toBytes("row3"); // 2 kv<a name="line.5562"></a>
-<span class="sourceLineNo">5563</span>    byte[] row4 = Bytes.toBytes("row4"); // 5 kv<a name="line.5563"></a>
-<span class="sourceLineNo">5564</span>    byte[] row5 = Bytes.toBytes("row5"); // 2 kv<a name="line.5564"></a>
-<span class="sourceLineNo">5565</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5565"></a>
-<span class="sourceLineNo">5566</span>    byte[] cf2 = Bytes.toBytes("CF2");<a name="line.5566"></a>
-<span class="sourceLineNo">5567</span>    byte[] cf3 = Bytes.toBytes("CF3");<a name="line.5567"></a>
-<span class="sourceLineNo">5568</span>    byte[][] families = { cf1, cf2, cf3 };<a name="line.5568"></a>
-<span class="sourceLineNo">5569</span>    byte[] col = Bytes.toBytes("C");<a name="line.5569"></a>
-<span class="sourceLineNo">5570</span>    long ts = 1;<a name="line.5570"></a>
-<span class="sourceLineNo">5571</span>    String method = this.getName();<a name="line.5571"></a>
-<span class="sourceLineNo">5572</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5572"></a>
-<span class="sourceLineNo">5573</span>    // disable compactions in this test.<a name="line.5573"></a>
-<span class="sourceLineNo">5574</span>    conf.setInt("hbase.hstore.compactionThreshold", 10000);<a name="line.5574"></a>
-<span class="sourceLineNo">5575</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5575"></a>
-<span class="sourceLineNo">5576</span>    try {<a name="line.5576"></a>
-<span class="sourceLineNo">5577</span>      // kv naming style: kv(row number) totalKvCountInThisRow seq no<a name="line.5577"></a>
-<span class="sourceLineNo">5578</span>      KeyValue kv0_1_1 = new KeyValue(row0, cf1, col, ts, KeyValue.Type.Put,<a name="line.5578"></a>
-<span class="sourceLineNo">5579</span>          null);<a name="line.5579"></a>
-<span class="sourceLineNo">5580</span>      KeyValue kv1_2_1 = new KeyValue(row1, cf2, col, ts, KeyValue.Type.Put,<a name="line.5580"></a>
-<span class="sourceLineNo">5581</span>          null);<a name="line.5581"></a>
-<span class="sourceLineNo">5582</span>      KeyValue kv1_2_2 = new KeyValue(row1, cf1, col, ts + 1,<a name="line.5582"></a>
-<span class="sourceLineNo">5583</span>          KeyValue.Type.Put, null);<a name="line.5583"></a>
-<span class="sourceLineNo">5584</span>      KeyValue kv2_4_1 = new KeyValue(row2, cf2, col, ts, KeyValue.Type.Put,<a name="line.5584"></a>
-<span class="sourceLineNo">5585</span>          null);<a name="line.5585"></a>
-<span class="sourceLineNo">5586</span>      KeyValue kv2_4_2 = new KeyValue(row2, cf1, col, ts, KeyValue.Type.Put,<a name="line.5586"></a>
-<span class="sourceLineNo">5587</span>          null);<a name="line.5587"></a>
-<span class="sourceLineNo">5588</span>      KeyValue kv2_4_3 = new KeyValue(row2, cf3, col, ts, KeyValue.Type.Put,<a name="line.5588"></a>
-<span class="sourceLineNo">5589</span>          null);<a name="line.5589"></a>
-<span class="sourceLineNo">5590</span>      KeyValue kv2_4_4 = new KeyValue(row2, cf1, col, ts + 4,<a name="line.5590"></a>
-<span class="sourceLineNo">5591</span>          KeyValue.Type.Put, null);<a name="line.5591"></a>
-<span class="sourceLineNo">5592</span>      KeyValue kv3_2_1 = new KeyValue(row3, cf2, col, ts, KeyValue.Type.Put,<a name="line.5592"></a>
-<span class="sourceLineNo">5593</span>          null);<a name="line.5593"></a>
-<span class="sourceLineNo">5594</span>      KeyValue kv3_2_2 = new KeyValue(row3, cf1, col, ts + 4,<a name="line.5594"></a>
-<span class="sourceLineNo">5595</span>          KeyValue.Type.Put, null);<a name="line.5595"></a>
-<span class="sourceLineNo">5596</span>      KeyValue kv4_5_1 = new KeyValue(row4, cf1, col, ts, KeyValue.Type.Put,<a name="line.5596"></a>
-<span class="sourceLineNo">5597</span>          null);<a name="line.5597"></a>
-<span class="sourceLineNo">5598</span>      KeyValue kv4_5_2 = new KeyValue(row4, cf3, col, ts, KeyValue.Type.Put,<a name="line.5598"></a>
-<span class="sourceLineNo">5599</span>          null);<a name="line.5599"></a>
-<span class="sourceLineNo">5600</span>      KeyValue kv4_5_3 = new KeyValue(row4, cf3, col, ts + 5,<a name="line.5600"></a>
-<span class="sourceLineNo">5601</span>          KeyValue.Type.Put, null);<a name="line.5601"></a>
-<span class="sourceLineNo">5602</span>      KeyValue kv4_5_4 = new KeyValue(row4, cf2, col, ts, KeyValue.Type.Put,<a name="line.5602"></a>
-<span class="sourceLineNo">5603</span>          null);<a name="line.5603"></a>
-<span class="sourceLineNo">5604</span>      KeyValue kv4_5_5 = new KeyValue(row4, cf1, col, ts + 3,<a name="line.5604"></a>
-<span class="sourceLineNo">5605</span>          KeyValue.Type.Put, null);<a name="line.5605"></a>
-<span class="sourceLineNo">5606</span>      KeyValue kv5_2_1 = new KeyValue(row5, cf2, col, ts, KeyValue.Type.Put,<a name="line.5606"></a>
-<span class="sourceLineNo">5607</span>          null);<a name="line.5607"></a>
-<span class="sourceLineNo">5608</span>      KeyValue kv5_2_2 = new KeyValue(row5, cf3, col, ts, KeyValue.Type.Put,<a name="line.5608"></a>
-<span class="sourceLineNo">5609</span>          null);<a name="line.5609"></a>
-<span class="sourceLineNo">5610</span>      // hfiles(cf1/cf2) :"row1"(1 kv) / "row2"(1 kv) / "row4"(2 kv)<a name="line.5610"></a>
-<span class="sourceLineNo">5611</span>      Put put = null;<a name="line.5611"></a>
-<span class="sourceLineNo">5612</span>      put = new Put(row1);<a name="line.5612"></a>
-<span class="sourceLineNo">5613</span>      put.add(kv1_2_1);<a name="line.5613"></a>
-<span class="sourceLineNo">5614</span>      region.put(put);<a name="line.5614"></a>
-<span class="sourceLineNo">5615</span>      put = new Put(row2);<a name="line.5615"></a>
-<span class="sourceLineNo">5616</span>      put.add(kv2_4_1);<a name="line.5616"></a>
-<span class="sourceLineNo">5617</span>      region.put(put);<a name="line.5617"></a>
-<span class="sourceLineNo">5618</span>      put = new Put(row4);<a name="line.5618"></a>
-<span class="sourceLineNo">5619</span>      put.add(kv4_5_4);<a name="line.5619"></a>
-<span class="sourceLineNo">5620</span>      put.add(kv4_5_5);<a name="line.5620"></a>
-<span class="sourceLineNo">5621</span>      region.put(put);<a name="line.5621"></a>
-<span class="sourceLineNo">5622</span>      region.flush(true);<a name="line.5622"></a>
-<span class="sourceLineNo">5623</span>      // hfiles(cf1/cf3) : "row1" (1 kvs) / "row2" (1 kv) / "row4" (2 kv)<a name="line.5623"></a>
-<span class="sourceLineNo">5624</span>      put = new Put(row4);<a name="line.5624"></a>
-<span class="sourceLineNo">5625</span>      put.add(kv4_5_1);<a name="line.5625"></a>
-<span class="sourceLineNo">5626</span>      put.add(kv4_5_3);<a name="line.5626"></a>
-<span class="sourceLineNo">5627</span>      region.put(put);<a name="line.5627"></a>
-<span class="sourceLineNo">5628</span>      put = new Put(row1);<a name="line.5628"></a>
-<span class="sourceLineNo">5629</span>      put.add(kv1_2_2);<a name="line.5629"></a>
-<span class="sourceLineNo">5630</span>      region.put(put);<a name="line.5630"></a>
-<span class="sourceLineNo">5631</span>      put = new Put(row2);<a name="line.5631"></a>
-<span class="sourceLineNo">5632</span>      put.add(kv2_4_4);<a name="line.5632"></a>
-<span class="sourceLineNo">5633</span>      region.put(put);<a name="line.5633"></a>
-<span class="sourceLineNo">5634</span>      region.flush(true);<a name="line.5634"></a>
-<span class="sourceLineNo">5635</span>      // hfiles(cf1/cf3) : "row2"(2 kv) / "row3"(1 kvs) / "row4" (1 kv)<a name="line.5635"></a>
-<span class="sourceLineNo">5636</span>      put = new Put(row4);<a name="line.5636"></a>
-<span class="sourceLineNo">5637</span>      put.add(kv4_5_2);<a name="line.5637"></a>
-<span class="sourceLineNo">5638</span>      region.put(put);<a name="line.5638"></a>
-<span class="sourceLineNo">5639</span>      put = new Put(row2);<a name="line.5639"></a>
-<span class="sourceLineNo">5640</span>      put.add(kv2_4_2);<a name="line.5640"></a>
-<span class="sourceLineNo">5641</span>      put.add(kv2_4_3);<a name="line.5641"></a>
-<span class="sourceLineNo">5642</span>      region.put(put);<a name="line.5642"></a>
-<span class="sourceLineNo">5643</span>      put = new Put(row3);<a name="line.5643"></a>
-<span class="sourceLineNo">5644</span>      put.add(kv3_2_2);<a name="line.5644"></a>
-<span class="sourceLineNo">5645</span>      region.put(put);<a name="line.5645"></a>
-<span class="sourceLineNo">5646</span>      region.flush(true);<a name="line.5646"></a>
-<span class="sourceLineNo">5647</span>      // memstore(cf1/cf2/cf3) : "row0" (1 kvs) / "row3" ( 1 kv) / "row5" (max)<a name="line.5647"></a>
-<span class="sourceLineNo">5648</span>      // ( 2 kv)<a name="line.5648"></a>
-<span class="sourceLineNo">5649</span>      put = new Put(row0);<a name="line.5649"></a>
-<span class="sourceLineNo">5650</span>      put.add(kv0_1_1);<a name="line.5650"></a>
-<span class="sourceLineNo">5651</span>      region.put(put);<a name="line.5651"></a>
-<span class="sourceLineNo">5652</span>      put = new Put(row3);<a name="line.5652"></a>
-<span class="sourceLineNo">5653</span>      put.add(kv3_2_1);<a name="line.5653"></a>
-<span class="sourceLineNo">5654</span>      region.put(put);<a name="line.5654"></a>
-<span class="sourceLineNo">5655</span>      put = new Put(row5);<a name="line.5655"></a>
-<span class="sourceLineNo">5656</span>      put.add(kv5_2_1);<a name="line.5656"></a>
-<span class="sourceLineNo">5657</span>      put.add(kv5_2_2);<a name="line.5657"></a>
-<span class="sourceLineNo">5658</span>      region.put(put);<a name="line.5658"></a>
-<span class="sourceLineNo">5659</span>      // scan range = ["row4", min), skip the max "row5"<a name="line.5659"></a>
-<span class="sourceLineNo">5660</span>      Scan scan = new Scan(row4);<a name="line.5660"></a>
-<span class="sourceLineNo">5661</span>      scan.setMaxVersions(5);<a name="line.5661"></a>
-<span class="sourceLineNo">5662</span>      scan.setBatch(3);<a name="line.5662"></a>
-<span class="sourceLineNo">5663</span>      scan.setReversed(true);<a name="line.5663"></a>
-<span class="sourceLineNo">5664</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5664"></a>
-<span class="sourceLineNo">5665</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5665"></a>
-<span class="sourceLineNo">5666</span>      boolean hasNext = false;<a name="line.5666"></a>
-<span class="sourceLineNo">5667</span>      // 1. scan out "row4" (5 kvs), "row5" can't be scanned out since not<a name="line.5667"></a>
-<span class="sourceLineNo">5668</span>      // included in scan range<a name="line.5668"></a>
-<span class="sourceLineNo">5669</span>      // "row4" takes 2 next() calls since batch=3<a name="line.5669"></a>
-<span class="sourceLineNo">5670</span>      hasNext = scanner.next(currRow);<a name="line.5670"></a>
-<span class="sourceLineNo">5671</span>      assertEquals(3, currRow.size());<a name="line.5671"></a>
-<span class="sourceLineNo">5672</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5672"></a>
-<span class="sourceLineNo">5673</span>          .get(0).getRowLength(), row4, 0, row4.length));<a name="line.5673"></a>
-<span class="sourceLineNo">5674</span>      assertTrue(hasNext);<a name="line.5674"></a>
-<span class="sourceLineNo">5675</span>      currRow.clear();<a name="line.5675"></a>
-<span class="sourceLineNo">5676</span>      hasNext = scanner.next(currRow);<a name="line.5676"></a>
-<span class="sourceLineNo">5677</span>      assertEquals(2, currRow.size());<a name="line.5677"></a>
-<span class="sourceLineNo">5678</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow.get(0).getRowLength(), row4, 0,<a name="line.5678"></a>
-<span class="sourceLineNo">5679</span>        row4.length));<a name="line.5679"></a>
-<span class="sourceLineNo">5680</span>      assertTrue(hasNext);<a name="line.5680"></a>
-<span class="sourceLineNo">5681</span>      // 2. scan out "row3" (2 kv)<a name="line.5681"></a>
-<span class="sourceLineNo">5682</span>      currRow.clear();<a name="line.5682"></a>
-<span class="sourceLineNo">5683</span>      hasNext = scanner.next(currRow);<a name="line.5683"></a>
-<span class="sourceLineNo">5684</span>      assertEquals(2, currRow.size());<a name="line.5684"></a>
-<span class="sourceLineNo">5685</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5685"></a>
-<span class="sourceLineNo">5686</span>          .get(0).getRowLength(), row3, 0, row3.length));<a name="line.5686"></a>
-<span class="sourceLineNo">5687</span>      assertTrue(hasNext);<a name="line.5687"></a>
-<span class="sourceLineNo">5688</span>      // 3. scan out "row2" (4 kvs)<a name="line.5688"></a>
-<span class="sourceLineNo">5689</span>      // "row2" takes 2 next() calls since batch=3<a name="line.5689"></a>
-<span class="sourceLineNo">5690</span>      currRow.clear();<a name="line.5690"></a>
-<span class="sourceLineNo">5691</span>      hasNext = scanner.next(currRow);<a name="line.5691"></a>
-<span class="sourceLineNo">5692</span>      assertEquals(3, currRow.size());<a name="line.5692"></a>
-<span class="sourceLineNo">5693</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5693"></a>
-<span class="sourceLineNo">5694</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5694"></a>
-<span class="sourceLineNo">5695</span>      assertTrue(hasNext);<a name="line.5695"></a>
-<span class="sourceLineNo">5696</span>      currRow.clear();<a name="line.5696"></a>
-<span class="sourceLineNo">5697</span>      hasNext = scanner.next(currRow);<a name="line.5697"></a>
-<span class="sourceLineNo">5698</span>      assertEquals(1, currRow.size());<a name="line.5698"></a>
-<span class="sourceLineNo">5699</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5699"></a>
-<span class="sourceLineNo">5700</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5700"></a>
-<span class="sourceLineNo">5701</span>      assertTrue(hasNext);<a name="line.5701"></a>
-<span class="sourceLineNo">5702</span>      // 4. scan out "row1" (2 kv)<a name="line.5702"></a>
-<span class="sourceLineNo">5703</span>      currRow.clear();<a name="line.5703"></a>
-<span class="sourceLineNo">5704</span>      hasNext = scanner.next(currRow);<a name="line.5704"></a>
-<span class="sourceLineNo">5705</span>      assertEquals(2, currRow.size());<a name="line.5705"></a>
-<span class="sourceLineNo">5706</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5706"></a>
-<span class="sourceLineNo">5707</span>          .get(0).getRowLength(), row1, 0, row1.length));<a name="line.5707"></a>
-<span class="sourceLineNo">5708</span>      assertTrue(hasNext);<a name="line.5708"></a>
-<span class="sourceLineNo">5709</span>      // 5. scan out "row0" (1 kv)<a name="line.5709"></a>
-<span class="sourceLineNo">5710</span>      currRow.clear();<a name="line.5710"></a>
-<span class="sourceLineNo">5711</span>      hasNext = scanner.next(currRow);<a name="line.5711"></a>
-<span class="sourceLineNo">5712</span>      assertEquals(1, currRow.size());<a name="line.5712"></a>
-<span class="sourceLineNo">5713</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5713"></a>
-<span class="sourceLineNo">5714</span>          .get(0).getRowLength(), row0, 0, row0.length));<a name="line.5714"></a>
-<span class="sourceLineNo">5715</span>      assertFalse(hasNext);<a name="line.5715"></a>
-<span class="sourceLineNo">5716</span><a name="line.5716"></a>
-<span class="sourceLineNo">5717</span>      scanner.close();<a name="line.5717"></a>
-<span class="sourceLineNo">5718</span>    } finally {<a name="line.5718"></a>
-<span class="sourceLineNo">5719</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5719"></a>
-<span class="sourceLineNo">5720</span>      this.region = null;<a name="line.5720"></a>
-<span class="sourceLineNo">5721</span>    }<a name="line.5721"></a>
-<span class="sourceLineNo">5722</span>  }<a name="line.5722"></a>
-<span class="sourceLineNo">5723</span><a name="line.5723"></a>
-<span class="sourceLineNo">5724</span>  @Test (timeout=60000)<a name="line.5724"></a>
-<span class="sourceLineNo">5725</span>  public void testReverseScanner_FromMemStoreAndHFiles_MultiCFs2()<a name="line.5725"></a>
-<span class="sourceLineNo">5726</span>      throws IOException {<a name="line.5726"></a>
-<span class="sourceLineNo">5727</span>    byte[] row1 = Bytes.toBytes("row1");<a name="line.5727"></a>
-<span class="sourceLineNo">5728</span>    byte[] row2 = Bytes.toBytes("row2");<a name="line.5728"></a>
-<span class="sourceLineNo">5729</span>    byte[] row3 = Bytes.toBytes("row3");<a name="line.5729"></a>
-<span class="sourceLineNo">5730</span>    byte[] row4 = Bytes.toBytes("row4");<a name="line.5730"></a>
-<span class="sourceLineNo">5731</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5731"></a>
-<span class="sourceLineNo">5732</span>    byte[] cf2 = Bytes.toBytes("CF2");<a name="line.5732"></a>
-<span class="sourceLineNo">5733</span>    byte[] cf3 = Bytes.toBytes("CF3");<a name="line.5733"></a>
-<span class="sourceLineNo">5734</span>    byte[] cf4 = Bytes.toBytes("CF4");<a name="line.5734"></a>
-<span class="sourceLineNo">5735</span>    byte[][] families = { cf1, cf2, cf3, cf4 };<a name="line.5735"></a>
-<span class="sourceLineNo">5736</span>    byte[] col = Bytes.toBytes("C");<a name="line.5736"></a>
-<span class="sourceLineNo">5737</span>    long ts = 1;<a name="line.5737"></a>
-<span class="sourceLineNo">5738</span>    String method = this.getName();<a name="line.5738"></a>
-<span class="sourceLineNo">5739</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5739"></a>
-<span class="sourceLineNo">5740</span>    // disable compactions in this test.<a name="line.5740"></a>
-<span class="sourceLineNo">5741</span>    conf.setInt("hbase.hstore.compactionThreshold", 10000);<a name="line.5741"></a>
-<span class="sourceLineNo">5742</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5742"></a>
-<span class="sourceLineNo">5743</span>    try {<a name="line.5743"></a>
-<span class="sourceLineNo">5744</span>      KeyValue kv1 = new KeyValue(row1, cf1, col, ts, KeyValue.Type.Put, null);<a name="line.5744"></a>
-<span class="sourceLineNo">5745</span>      KeyValue kv2 = new KeyValue(row2, cf2, col, ts, KeyValue.Type.Put, null);<a name="line.5745"></a>
-<span class="sourceLineNo">5746</span>      KeyValue kv3 = new KeyValue(row3, cf3, col, ts, KeyValue.Type.Put, null);<a name="line.5746"></a>
-<span class="sourceLineNo">5747</span>      KeyValue kv4 = new KeyValue(row4, cf4, col, ts, KeyValue.Type.Put, null);<a name="line.5747"></a>
-<span class="sourceLineNo">5748</span>      // storefile1<a name="line.5748"></a>
-<span class="sourceLineNo">5749</span>      Put put = new Put(row1);<a name="line.5749"></a>
-<span class="sourceLineNo">5750</span>      put.add(kv1);<a name="line.5750"></a>
-<span class="sourceLineNo">5751</span>      region.put(put);<a name="line.5751"></a>
-<span class="sourceLineNo">5752</span>      region.flush(true);<a name="line.5752"></a>
-<span class="sourceLineNo">5753</span>      // storefile2<a name="line.5753"></a>
-<span class="sourceLineNo">5754</span>      put = new Put(row2);<a name="line.5754"></a>
-<span class="sourceLineNo">5755</span>      put.add(kv2);<a name="line.5755"></a>
-<span class="sourceLineNo">5756</span>      region.put(put);<a name="line.5756"></a>
-<span class="sourceLineNo">5757</span>      region.flush(true);<a name="line.5757"></a>
-<span class="sourceLineNo">5758</span>      // storefile3<a name="line.5758"></a>
-<span class="sourceLineNo">5759</span>      put = new Put(row3);<a name="line.5759"></a>
-<span class="sourceLineNo">5760</span>      put.add(kv3);<a name="line.5760"></a>
-<span class="sourceLineNo">5761</span>      region.put(put);<a name="line.5761"></a>
-<span class="sourceLineNo">5762</span>      region.flush(true);<a name="line.5762"></a>
-<span class="sourceLineNo">5763</span>      // memstore<a name="line.5763"></a>
-<span class="sourceLineNo">5764</span>      put = new Put(row4);<a name="line.5764"></a>
-<span class="sourceLineNo">5765</span>      put.add(kv4);<a name="line.5765"></a>
-<span class="sourceLineNo">5766</span>      region.put(put);<a name="line.5766"></a>
-<span class="sourceLineNo">5767</span>      // scan range = ["row4", min)<a name="line.5767"></a>
-<span class="sourceLineNo">5768</span>      Scan scan = new Scan(row4);<a name="line.5768"></a>
-<span class="sourceLineNo">5769</span>      scan.setReversed(true);<a name="line.5769"></a>
-<span class="sourceLineNo">5770</span>      scan.setBatch(10);<a name="line.5770"></a>
-<span class="sourceLineNo">5771</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5771"></a>
-<span class="sourceLineNo">5772</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5772"></a>
-<span class="sourceLineNo">5773</span>      boolean hasNext = scanner.next(currRow);<a name="line.5773"></a>
-<span class="sourceLineNo">5774</span>      assertEquals(1, currRow.size());<a name="line.5774"></a>
-<span class="sourceLineNo">5775</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5775"></a>
-<span class="sourceLineNo">5776</span>          .get(0).getRowLength(), row4, 0, row4.length));<a name="line.5776"></a>
-<span class="sourceLineNo">5777</span>      assertTrue(hasNext);<a name="line.5777"></a>
-<span class="sourceLineNo">5778</span>      currRow.clear();<a name="line.5778"></a>
-<span class="sourceLineNo">5779</span>      hasNext = scanner.next(currRow);<a name="line.5779"></a>
-<span class="sourceLineNo">5780</span>      assertEquals(1, currRow.size());<a name="line.5780"></a>
-<span class="sourceLineNo">5781</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5781"></a>
-<span class="sourceLineNo">5782</span>          .get(0).getRowLength(), row3, 0, row3.length));<a name="line.5782"></a>
-<span class="sourceLineNo">5783</span>      assertTrue(hasNext);<a name="line.5783"></a>
-<span class="sourceLineNo">5784</span>      currRow.clear();<a name="line.5784"></a>
-<span class="sourceLineNo">5785</span>      hasNext = scanner.next(currRow);<a name="line.5785"></a>
-<span class="sourceLineNo">5786</span>      assertEquals(1, currRow.size());<a name="line.5786"></a>
-<span class="sourceLineNo">5787</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5787"></a>
-<span class="sourceLineNo">5788</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5788"></a>
-<span class="sourceLineNo">5789</span>      assertTrue(hasNext);<a name="line.5789"></a>
-<span class="sourceLineNo">5790</span>      currRow.clear();<a name="line.5790"></a>
-<span class="sourceLineNo">5791</span>      hasNext = scanner.next(currRow);<a name="line.5791"></a>
-<span class="sourceLineNo">5792</span>      assertEquals(1, currRow.size());<a name="line.5792"></a>
-<span class="sourceLineNo">5793</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5793"></a>
-<span class="sourceLineNo">5794</span>          .get(0).getRowLength(), row1, 0, row1.length));<a name="line.5794"></a>
-<span class="sourceLineNo">5795</span>      assertFalse(hasNext);<a name="line.5795"></a>
-<span class="sourceLineNo">5796</span>    } finally {<a name="line.5796"></a>
-<span class="sourceLineNo">5797</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5797"></a>
-<span class="sourceLineNo">5798</span>      this.region = null;<a name="line.5798"></a>
-<span class="sourceLineNo">5799</span>    }<a name="line.5799"></a>
-<span class="sourceLineNo">5800</span>  }<a name="line.5800"></a>
-<span class="sourceLineNo">5801</span><a name="line.5801"></a>
-<span class="sourceLineNo">5802</span>  /**<a name="line.5802"></a>
-<span class="sourceLineNo">5803</span>   * Test for HBASE-14497: Reverse Scan threw StackOverflow caused by readPt checking<a name="line.5803"></a>
-<span class="sourceLineNo">5804</span>   */<a name="line.5804"></a>
-<span class="sourceLineNo">5805</span>  @Test (timeout = 60000)<a name="line.5805"></a>
-<span class="sourceLineNo">5806</span>  public void testReverseScanner_StackOverflow() throws IOException {<a name="line.5806"></a>
-<span class="sourceLineNo">5807</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5807"></a>
-<span class="sourceLineNo">5808</span>    byte[][] families = {cf1};<a name="line.5808"></a>
-<span class="sourceLineNo">5809</span>    byte[] col = Bytes.toBytes("C");<a name="line.5809"></a>
-<span class="sourceLineNo">5810</span>    String method = this.getName();<a name="line.5810"></a>
-<span class="sourceLineNo">5811</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5811"></a>
-<span class="sourceLineNo">5812</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5812"></a>
-<span class="sourceLineNo">5813</span>    try {<a name="line.5813"></a>
-<span class="sourceLineNo">5814</span>      // setup with one storefile and one memstore, to create scanner and get an earlier readPt<a name="line.5814"></a>
-<span class="sourceLineNo">5815</span>      Put put = new Put(Bytes.toBytes("19998"));<a name="line.5815"></a>
-<span class="sourceLineNo">5816</span>      put.addColumn(cf1, col, Bytes.toBytes("val"));<a name="line.5816"></a>
-<span class="sourceLineNo">5817</span>      region.put(put);<a name="line.5817"></a>
-<span class="sourceLineNo">5818</span>      region.flushcache(true, true);<a name="line.5818"></a>
-<span class="sourceLineNo">5819</span>      Put put2 = new Put(Bytes.toBytes("19997"));<a name="line.5819"></a>
-<span class="sourceLineNo">5820</span>      put2.addColumn(cf1, col, Bytes.toBytes("val"));<a name="line.5820"></a>
-<span class="sourceLineNo">5821</span>      region.put(put2);<a name="line.5821"></a>
-<span class="sourceLineNo">5822</span><a name="line.5822"></a>
-<span class="sourceLineNo">5823</span>      Scan scan = new Scan(Bytes.toBytes("19998"));<a name="line.5823"></a>
-<span class="sourceLineNo">5824</span>      scan.setReversed(true);<a name="line.5824"></a>
-<span class="sourceLineNo">5825</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5825"></a>
-<span class="sourceLineNo">5826</span><a name="line.5826"></a>
-<span class="sourceLineNo">5827</span>      // create one storefile contains many rows will be skipped<a name="line.5827"></a>
-<span class="sourceLineNo">5828</span>      // to check StoreFileScanner.seekToPreviousRow<a name="line.5828"></a>
-<span class="sourceLineNo">5829</span>      for (int i = 10000; i &lt; 20000; i++) {<a name="line.5829"></a>
-<span class="sourceLineNo">5830</span>        Put p = new Put(Bytes.toBytes(""+i));<a name="line.5830"></a>
-<span class="sourceLineNo">5831</span>        p.addColumn(cf1, col, Bytes.toBytes("" + i));<a name="line.5831"></a>
-<span class="sourceLineNo">5832</span>        region.put(p);<a name="line.5832"></a>
-<span class="sourceLineNo">5833</span>      }<a name="line.5833"></a>
-<span class="sourceLineNo">5834</span>      region.flushcache(true, true);<a name="line.5834"></a>
-<span class="sourceLineNo">5835</span><a name="line.5835"></a>
-<span class="sourceLineNo">5836</span>      // create one memstore contains many rows will be skipped<a name="line.5836"></a>
-<span class="sourceLineNo">5837</span>      // to check MemStoreScanner.seekToPreviousRow<a name="line.5837"></a>
-<span class="sourceLineNo">5838</span>      for (int i = 10000; i &lt; 20000; i++) {<a name="line.5838"></a>
-<span class="sourceLineNo">5839</span>        Put p = new Put(Bytes.toBytes(""+i));<a name="line.5839"></a>
-<span class="sourceLineNo">5840</span>        p.addColumn(cf1, col, Bytes.toBytes("" + i));<a name="line.5840"></a>
-<span class="sourceLineNo">5841</span>        region.put(p);<a name="line.5841"></a>
-<span class="sourceLineNo">5842</span>      }<a name="line.5842"></a>
-<span class="sourceLineNo">5843</span><a name="line.5843"></a>
-<span class="sourceLineNo">5844</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;&gt;();<a name="line.5844"></a>
-<span class="sourceLineNo">5845</span>      boolean hasNext;<a name="line.5845"></a>
-<span class="sourceLineNo">5846</span>      do {<a name="line.5846"></a>
-<span class="sourceLineNo">5847</span>        hasNext = scanner.next(currRow);<a name="line.5847"></a>
-<span class="sourceLineNo">5848</span>      } while (hasNext);<a name="line.5848"></a>
-<span class="sourceLineNo">5849</span>      assertEquals(2, currRow.size());<a name="line.5849"></a>
-<span class="sourceLineNo">5850</span>      assertEquals("19998", Bytes.toString(currRow.get(0).getRowArray(),<a name="line.5850"></a>
-<span class="sourceLineNo">5851</span>        currRow.get(0).getRowOffset(), currRow.get(0).getRowLength()));<a name="line.5851"></a>
-<span class="sourceLineNo">5852</span>      assertEquals("19997", Bytes.toString(currRow.get(1).getRowArray(),<a name="line.5852"></a>
-<span class="sourceLineNo">5853</span>        currRow.get(1).getRowOffset(), currRow.get(1).getRowLength()));<a name="line.5853"></a>
-<span class="sourceLineNo">5854</span>    } finally {<a name="line.5854"></a>
-<span class="sourceLineNo">5855</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5855"></a>
-<span class="sourceLineNo">5856</span>      this.region = null;<a name="line.5856"></a>
-<span class="sourceLineNo">5857</span>    }<a name="line.5857"></a>
-<span class="sourceLineNo">5858</span>  }<a name="line.5858"></a>
-<span class="sourceLineNo">5859</span><a name="line.5859"></a>
-<span class="sourceLineNo">5860</span>  @Test (timeout=60000)<a name="line.5860"></a>
-<span class="sourceLineNo">5861</span>  public void testSplitRegionWithReverseScan() throws IOException {<a name="line.5861"></a>
-<span class="sourceLineNo">5862</span>    TableName tableName = TableName.valueOf("testSplitRegionWithReverseScan");<a name="line.5862"></a>
-<span class="sourceLineNo">5863</span>    byte [] qualifier = Bytes.toBytes("qualifier");<a name="line.5863"></a>
-<span class="sourceLineNo">5864</span>    Configuration hc = initSplit();<a name="line.5864"></a>
-<span class="sourceLineNo">5865</span>    int numRows = 3;<a name="line.5865"></a>
-<span class="sourceLineNo">5866</span>    byte [][] families = {fam1};<a name="line.5866"></a>
-<span class="sourceLineNo">5867</span><a name="line.5867"></a>
-<span class="sourceLineNo">5868</span>    //Setting up region<a name="line.5868"></a>
-<span class="sourceLineNo">5869</span>    String method = this.getName();<a name="line.5869"></a>
-<span class="sourceLineNo">5870</span>    this.region = initHRegion(tableName, method, hc, families);<a name="line.5870"></a>
-<span class="sourceLineNo">5871</span><a name="line.5871"></a>
-<span class="sourceLineNo">5872</span>    //Put data in region<a name="line.5872"></a>
-<span class="sourceLineNo">5873</span>    int startRow = 100;<a name="line.5873"></a>
-<span class="sourceLineNo">5874</span>    putData(startRow, numRows, qualifier, families);<a name="line.5874"></a>
-<span class="sourceLineNo">5875</span>    int splitRow = startRow + numRows;<a name="line.5875"></a>
-<span class="sourceLineNo">5876</span>    putData(splitRow, numRows, qualifier, families);<a name="line.5876"></a>
-<span class="sourceLineNo">5877</span>    region.flush(true);<a name="line.5877"></a>
-<span class="sourceLineNo">5878</span><a name="line.5878"></a>
-<span class="sourceLineNo">5879</span>    HRegion [] regions = null;<a name="line.5879"></a>
-<span class="sourceLineNo">5880</span>    try {<a name="line.5880"></a>
-<span class="sourceLineNo">5881</span>      regions = splitRegion(region, Bytes.toBytes("" + splitRow));<a name="line.5881"></a>
-<span class="sourceLineNo">5882</span>      //Opening the regions returned.<a name="line.5882"></a>
-<span class="sourceLineNo">5883</span>      for (int i = 0; i &lt; regions.length; i++) {<a name="line.5883"></a>
-<span class="sourceLineNo">5884</span>        regions[i] = HRegion.openHRegion(regions[i], null);<a name="line.5884"></a>
-<span class="sourceLineNo">5885</span>      }<a name="line.5885"></a>
-<span class="sourceLineNo">5886</s

<TRUNCATED>

[45/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html
index 59fd10d..a1d14f7 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre> class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1688">FSHLog.RingBufferEventHandler</a>
+<pre> class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1687">FSHLog.RingBufferEventHandler</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.html" title="class in org.apache.hadoop.hbase.regionserver.wal">RingBufferTruck</a>&gt;, com.lmax.disruptor.LifecycleAware</pre>
 <div class="block">Handler that is run by the disruptor ringbuffer consumer. Consumer is a SINGLE
@@ -284,7 +284,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>syncRunners</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FSHLog.SyncRunner</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1689">syncRunners</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FSHLog.SyncRunner</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1688">syncRunners</a></pre>
 </li>
 </ul>
 <a name="syncFutures">
@@ -293,7 +293,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>syncFutures</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1690">syncFutures</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1689">syncFutures</a></pre>
 </li>
 </ul>
 <a name="syncFuturesCount">
@@ -302,7 +302,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>syncFuturesCount</h4>
-<pre>private volatile&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1693">syncFuturesCount</a></pre>
+<pre>private volatile&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1692">syncFuturesCount</a></pre>
 </li>
 </ul>
 <a name="zigzagLatch">
@@ -311,7 +311,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>zigzagLatch</h4>
-<pre>private volatile&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FSHLog.SafePointZigZagLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1694">zigzagLatch</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FSHLog.SafePointZigZagLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1693">zigzagLatch</a></pre>
 </li>
 </ul>
 <a name="exception">
@@ -320,7 +320,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>exception</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1699">exception</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1698">exception</a></pre>
 <div class="block">Set if we get an exception appending or syncing so that all subsequence appends and syncs
  on this WAL fail until WAL is replaced.</div>
 </li>
@@ -331,7 +331,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>safePointWaiter</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1703">safePointWaiter</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1702">safePointWaiter</a></pre>
 <div class="block">Object to block on while waiting on safe point.</div>
 </li>
 </ul>
@@ -341,7 +341,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1704">shutdown</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1703">shutdown</a></pre>
 </li>
 </ul>
 <a name="syncRunnerIndex">
@@ -350,7 +350,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockListLast">
 <li class="blockList">
 <h4>syncRunnerIndex</h4>
-<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1709">syncRunnerIndex</a></pre>
+<pre>private&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1708">syncRunnerIndex</a></pre>
 <div class="block">Which syncrunner to use next.</div>
 </li>
 </ul>
@@ -368,7 +368,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FSHLog.RingBufferEventHandler</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1711">FSHLog.RingBufferEventHandler</a>(int&nbsp;syncRunnerCount,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1710">FSHLog.RingBufferEventHandler</a>(int&nbsp;syncRunnerCount,
                              int&nbsp;maxHandlersCount)</pre>
 </li>
 </ul>
@@ -386,7 +386,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanupOutstandingSyncsOnException</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1719">cleanupOutstandingSyncsOnException</a>(long&nbsp;sequence,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1718">cleanupOutstandingSyncsOnException</a>(long&nbsp;sequence,
                                       <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)</pre>
 </li>
 </ul>
@@ -396,7 +396,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>isOutstandingSyncs</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1728">isOutstandingSyncs</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1727">isOutstandingSyncs</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>True if outstanding sync futures still</dd></dl>
 </li>
 </ul>
@@ -406,7 +406,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>onEvent</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1737">onEvent</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.html" title="class in org.apache.hadoop.hbase.regionserver.wal">RingBufferTruck</a>&nbsp;truck,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1736">onEvent</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.html" title="class in org.apache.hadoop.hbase.regionserver.wal">RingBufferTruck</a>&nbsp;truck,
            long&nbsp;sequence,
            boolean&nbsp;endOfBatch)
              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -423,7 +423,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>attainSafePoint</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FSHLog.SafePointZigZagLatch</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1816">attainSafePoint</a>()</pre>
+<pre><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FSHLog.SafePointZigZagLatch</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1815">attainSafePoint</a>()</pre>
 </li>
 </ul>
 <a name="attainSafePoint(long)">
@@ -432,7 +432,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>attainSafePoint</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1825">attainSafePoint</a>(long&nbsp;currentSequence)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1824">attainSafePoint</a>(long&nbsp;currentSequence)</pre>
 <div class="block">Check if we should attain safe point.  If so, go there and then wait till signalled before
  we proceeding.</div>
 </li>
@@ -443,7 +443,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>append</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1858">append</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FSWALEntry</a>&nbsp;entry)
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1857">append</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FSWALEntry</a>&nbsp;entry)
       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Append to the WAL.  Does all CP and WAL listener calls.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>entry</code> - </dd>
@@ -457,7 +457,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockList">
 <li class="blockList">
 <h4>onStart</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1911">onStart</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1910">onStart</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>onStart</code>&nbsp;in interface&nbsp;<code>com.lmax.disruptor.LifecycleAware</code></dd>
@@ -470,7 +470,7 @@ implements com.lmax.disruptor.EventHandler&lt;<a href="../../../../../../org/apa
 <ul class="blockListLast">
 <li class="blockList">
 <h4>onShutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1916">onShutdown</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferEventHandler.html#line.1915">onShutdown</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>onShutdown</code>&nbsp;in interface&nbsp;<code>com.lmax.disruptor.LifecycleAware</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html
index 8e75797..c316a9c 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html
@@ -103,7 +103,7 @@
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.377">FSHLog.RingBufferExceptionHandler</a>
+<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.376">FSHLog.RingBufferExceptionHandler</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements com.lmax.disruptor.ExceptionHandler</pre>
 <div class="block">Exception handler to pass the disruptor ringbuffer.  Same as native implementation only it
@@ -185,7 +185,7 @@ implements com.lmax.disruptor.ExceptionHandler</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FSHLog.RingBufferExceptionHandler</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html#line.377">FSHLog.RingBufferExceptionHandler</a>()</pre>
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html#line.376">FSHLog.RingBufferExceptionHandler</a>()</pre>
 </li>
 </ul>
 </li>
@@ -202,7 +202,7 @@ implements com.lmax.disruptor.ExceptionHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>handleEventException</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html#line.379">handleEventException</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;ex,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html#line.378">handleEventException</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;ex,
                         long&nbsp;sequence,
                         <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;event)</pre>
 <dl>
@@ -217,7 +217,7 @@ implements com.lmax.disruptor.ExceptionHandler</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>handleOnStartException</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html#line.385">handleOnStartException</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;ex)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html#line.384">handleOnStartException</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;ex)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>handleOnStartException</code>&nbsp;in interface&nbsp;<code>com.lmax.disruptor.ExceptionHandler</code></dd>
@@ -230,7 +230,7 @@ implements com.lmax.disruptor.ExceptionHandler</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>handleOnShutdownException</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html#line.391">handleOnShutdownException</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;ex)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.RingBufferExceptionHandler.html#line.390">handleOnShutdownException</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;ex)</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code>handleOnShutdownException</code>&nbsp;in interface&nbsp;<code>com.lmax.disruptor.ExceptionHandler</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html
index 2b08123..3abeb55 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html
@@ -99,7 +99,7 @@
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1606">FSHLog.SafePointZigZagLatch</a>
+<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1605">FSHLog.SafePointZigZagLatch</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">This class is used coordinating two threads holding one thread at a
  'safe point' while the orchestrating thread does some work that requires the first thread
@@ -238,7 +238,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>safePointAttainedLatch</h4>
-<pre>private volatile&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1610">safePointAttainedLatch</a></pre>
+<pre>private volatile&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1609">safePointAttainedLatch</a></pre>
 <div class="block">Count down this latch when safe point attained.</div>
 </li>
 </ul>
@@ -248,7 +248,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>safePointReleasedLatch</h4>
-<pre>private volatile&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1614">safePointReleasedLatch</a></pre>
+<pre>private volatile&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html?is-external=true" title="class or interface in java.util.concurrent">CountDownLatch</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1613">safePointReleasedLatch</a></pre>
 <div class="block">Latch to wait on.  Will be released when we can proceed.</div>
 </li>
 </ul>
@@ -266,7 +266,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FSHLog.SafePointZigZagLatch</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1606">FSHLog.SafePointZigZagLatch</a>()</pre>
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1605">FSHLog.SafePointZigZagLatch</a>()</pre>
 </li>
 </ul>
 </li>
@@ -283,7 +283,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitSafePoint</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1626">waitSafePoint</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;syncFuture)
+<pre><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1625">waitSafePoint</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;syncFuture)
                    throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
                           <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FailedSyncBeforeLogCloseException.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FailedSyncBeforeLogCloseException</a></pre>
 <div class="block">For Thread A to call when it is ready to wait on the 'safe point' to be attained.
@@ -303,7 +303,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>safePointAttained</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1643">safePointAttained</a>()
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1642">safePointAttained</a>()
                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Called by Thread B when it attains the 'safe point'.  In this method, Thread B signals
  Thread A it can proceed. Thread B will be held in here until <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#releaseSafePoint()"><code>releaseSafePoint()</code></a>
@@ -318,7 +318,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>releaseSafePoint</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1652">releaseSafePoint</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1651">releaseSafePoint</a>()</pre>
 <div class="block">Called by Thread A when it is done with the work it needs to do while Thread B is
  halted.  This will release the Thread B held in a call to <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#safePointAttained()"><code>safePointAttained()</code></a></div>
 </li>
@@ -329,7 +329,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isCocked</h4>
-<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1659">isCocked</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html#line.1658">isCocked</a>()</pre>
 <dl><dt><span class="strong">Returns:</span></dt><dd>True is this is a 'cocked', fresh instance, and not one that has already fired.</dd></dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html
index 3e06da1..7acb15c 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html
@@ -108,7 +108,7 @@
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1127">FSHLog.SyncRunner</a>
+<pre>private class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.html#line.1126">FSHLog.SyncRunner</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html" title="class in org.apache.hadoop.hbase.util">HasThread</a></pre>
 <div class="block">Thread to runs the hdfs sync call. This call takes a while to complete.  This is the longest
  pole adding edits to the WAL and this must complete to be sure all edits persisted.  We run
@@ -248,7 +248,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>sequence</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1128">sequence</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1127">sequence</a></pre>
 </li>
 </ul>
 <a name="syncFutures">
@@ -257,7 +257,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>syncFutures</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1130">syncFutures</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1129">syncFutures</a></pre>
 </li>
 </ul>
 </li>
@@ -274,7 +274,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>FSHLog.SyncRunner</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1142">FSHLog.SyncRunner</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1141">FSHLog.SyncRunner</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                  int&nbsp;maxHandlersCount)</pre>
 <div class="block">UPDATE!</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>syncs</code> - the batch of calls to sync that arrived as this thread was starting; when done,
@@ -299,7 +299,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>offer</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1160">offer</a>(long&nbsp;sequence,
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1159">offer</a>(long&nbsp;sequence,
          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>[]&nbsp;syncFutures,
          int&nbsp;syncFutureCount)</pre>
 </li>
@@ -310,7 +310,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>releaseSyncFuture</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1175">releaseSyncFuture</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;syncFuture,
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1174">releaseSyncFuture</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal">SyncFuture</a>&nbsp;syncFuture,
                     long&nbsp;currentSequence,
                     <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)</pre>
 <div class="block">Release the passed <code>syncFuture</code></div>
@@ -324,7 +324,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>releaseSyncFutures</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1188">releaseSyncFutures</a>(long&nbsp;currentSequence,
+<pre>private&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1187">releaseSyncFutures</a>(long&nbsp;currentSequence,
                      <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)</pre>
 <div class="block">Release all SyncFutures whose sequence is <= <code>currentSequence</code>.</div>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>currentSequence</code> - </dd><dd><code>t</code> - May be non-null if we are processing SyncFutures because an exception was thrown.</dd>
@@ -337,7 +337,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>updateHighestSyncedSequence</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1205">updateHighestSyncedSequence</a>(long&nbsp;sequence)</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1204">updateHighestSyncedSequence</a>(long&nbsp;sequence)</pre>
 <dl><dt><span class="strong">Parameters:</span></dt><dd><code>sequence</code> - The sequence we ran the filesystem sync against.</dd>
 <dt><span class="strong">Returns:</span></dt><dd>Current highest synced sequence.</dd></dl>
 </li>
@@ -348,7 +348,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/util/HasThread.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1220">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#line.1219">run</a>()</pre>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true#run()" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>


[09/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html
index 9cddc0a..1240e3e 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html
@@ -27,8 +27,8 @@
 <span class="sourceLineNo">019</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam1;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam2;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertTrue;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertNull;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import static org.junit.Assert.fail;<a name="line.24"></a>
 <span class="sourceLineNo">025</span><a name="line.25"></a>
 <span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
@@ -61,19 +61,19 @@
 <span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.Get;<a name="line.54"></a>
 <span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Put;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Result;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.68"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Put;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.Result;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
 <span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>import org.junit.After;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import org.junit.Before;<a name="line.71"></a>
@@ -191,535 +191,539 @@
 <span class="sourceLineNo">183</span>   */<a name="line.183"></a>
 <span class="sourceLineNo">184</span>  @Test<a name="line.184"></a>
 <span class="sourceLineNo">185</span>  public void testIncrementMultiThreads() throws IOException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // run a with mixed column families (1 and 3 versions)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // create 25 threads, each will increment by its own quantity<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    int numThreads = 25;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    int incrementsPerThread = 1000;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    int expectedTotal = 0;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // create all threads<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      expectedTotal += (i * incrementsPerThread);<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>    // run all threads<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        all[i].join();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      } catch (InterruptedException e) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    assertICV(row, fam1, qual2, expectedTotal*2);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    assertICV(row, fam2, qual3, expectedTotal*3);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private void assertICV(byte [] row,<a name="line.221"></a>
-<span class="sourceLineNo">222</span>                         byte [] familiy,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>                         byte[] qualifier,<a name="line.223"></a>
-<span class="sourceLineNo">224</span>                         long amount) throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // run a get and see?<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    Get get = new Get(row);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    get.addColumn(familiy, qualifier);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    Result result = region.get(get);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    assertEquals(1, result.size());<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Cell kv = result.rawCells()[0];<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    assertEquals(amount, r);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      byte[] ... families)<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    byte[] ... families)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  throws IOException {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    int i=0;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    for(byte [] family : families) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      htd.addFamily(hcd);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * A thread that makes a few increment calls<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static class Incrementer extends Thread {<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final Region region;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final int numIncrements;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final int amount;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">186</span>    boolean fast = true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // run a with mixed column families (1 and 3 versions)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // Create 100 threads, each will increment by its own quantity. All 100 threads update the<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // same row over two column families.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    int numThreads = 100;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    int incrementsPerThread = 1000;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    int expectedTotal = 0;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // create all threads<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      expectedTotal += (i * incrementsPerThread);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    // run all threads<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      try {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        all[i].join();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      } catch (InterruptedException e) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal, fast);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    assertICV(row, fam1, qual2, expectedTotal*2, fast);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    assertICV(row, fam2, qual3, expectedTotal*3, fast);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private void assertICV(byte [] row,<a name="line.223"></a>
+<span class="sourceLineNo">224</span>                         byte [] familiy,<a name="line.224"></a>
+<span class="sourceLineNo">225</span>                         byte[] qualifier,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>                         long amount,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>                         boolean fast) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    // run a get and see?<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    Get get = new Get(row);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    if (fast) get.setIsolationLevel(IsolationLevel.READ_UNCOMMITTED);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    get.addColumn(familiy, qualifier);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Result result = region.get(get);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    assertEquals(1, result.size());<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    Cell kv = result.rawCells()[0];<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    assertEquals(amount, r);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      byte[] ... families)<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    throws IOException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    byte[] ... families)<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    int i=0;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    for(byte [] family : families) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      htd.addFamily(hcd);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<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 thread that makes increment calls always on the same row, this.row against two column<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * families on this row.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public static class Incrementer extends Thread {<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public Incrementer(Region region,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        int threadNumber, int amount, int numIncrements) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      super("incrementer." + threadNumber);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.region = region;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      this.numIncrements = numIncrements;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.amount = amount;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      setDaemon(true);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    public void run() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        try {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          Increment inc = new Increment(row);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          inc.addColumn(fam1, qual1, amount);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>          // verify: Make sure we only see completed increments<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          Get g = new Get(row);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          Result result = region.get(g);<a name="line.288"></a>
+<span class="sourceLineNo">266</span>    private final Region region;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    private final int numIncrements;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final int amount;<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>    public Incrementer(Region region, int threadNumber, int amount, int numIncrements) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      super("Incrementer." + threadNumber);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      this.region = region;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this.numIncrements = numIncrements;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this.amount = amount;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      setDaemon(true);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public void run() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        try {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          Increment inc = new Increment(row);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          inc.addColumn(fam1, qual1, amount);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          Result result = region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.288"></a>
 <span class="sourceLineNo">289</span>          if (result != null) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            assertTrue(result.getValue(fam1, qual1) != null);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            assertTrue(result.getValue(fam1, qual2) != null);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.293"></a>
-<span class="sourceLineNo">294</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } catch (IOException e) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          e.printStackTrace();<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>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  @Test<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  public void testAppendMultiThreads() throws IOException {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    // run a with mixed column families (1 and 3 versions)<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    int numThreads = 100;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int opsPerThread = 100;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    final byte[] val = new byte[]{1};<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    // create all threads<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        public void run() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            try {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>              Append a = new Append(row);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>              a.add(fam1, qual1, val);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              a.add(fam1, qual2, val);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>              a.add(fam2, qual3, val);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>              Get g = new Get(row);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              Result result = region.get(g);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.333"></a>
-<span class="sourceLineNo">334</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.334"></a>
-<span class="sourceLineNo">335</span>            } catch (IOException e) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>              e.printStackTrace();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              failures.incrementAndGet();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>              fail();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>            }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      };<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // run all threads<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      try {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        all[i].join();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Get g = new Get(row);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    Result result = region.get(g);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // create 10 threads, each will alternate between adding and<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // removing a column<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    int numThreads = 10;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    int opsPerThread = 250;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    // create all threads<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        @Override<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        public void run() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>          boolean op = true;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            try {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>              // throw in some flushes<a name="line.388"></a>
-<span class="sourceLineNo">389</span>              if (i%10==0) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>                synchronized(region) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>                  LOG.debug("flushing");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>                  region.flush(true);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>                  if (i%100==0) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>                    region.compact(false);<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>              }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>              long ts = timeStamps.incrementAndGet();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>              RowMutations rm = new RowMutations(row);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>              if (op) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>                Put p = new Put(row, ts);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>                p.addColumn(fam1, qual1, value1);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>                rm.add(p);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>                Delete d = new Delete(row);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>                d.addColumns(fam1, qual2, ts);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>                rm.add(d);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              } else {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                Delete d = new Delete(row);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                d.addColumns(fam1, qual1, ts);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>                rm.add(d);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>                Put p = new Put(row, ts);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>                p.addColumn(fam1, qual2, value2);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>                rm.add(p);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>              }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>              region.mutateRow(rm);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>              op ^= true;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>              // check: should always see exactly one column<a name="line.421"></a>
-<span class="sourceLineNo">422</span>              Get g = new Get(row);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>              Result r = region.get(g);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>              if (r.size() != 1) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                LOG.debug(r);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>                failures.incrementAndGet();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>                fail();<a name="line.427"></a>
-<span class="sourceLineNo">428</span>              }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>            } catch (IOException e) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>              e.printStackTrace();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>              failures.incrementAndGet();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>              fail();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>            }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      };<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // run all threads<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      all[i].start();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // wait for all threads to finish<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      try {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        all[i].join();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>  /**<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * Test multi-threaded region mutations.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  @Test<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // create 10 threads, each will alternate between adding and<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // removing a column<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    int numThreads = 10;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    int opsPerThread = 250;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // create all threads<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        public void run() {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          boolean op = true;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            try {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>              // throw in some flushes<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              if (i%10==0) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>                synchronized(region) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>                  LOG.debug("flushing");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>                  region.flush(true);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>                  if (i%100==0) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>                    region.compact(false);<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>              long ts = timeStamps.incrementAndGet();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              if (op) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>                Put p = new Put(row2, ts);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>                p.addColumn(fam1, qual1, value1);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>                mrm.add(p);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>                Delete d = new Delete(row);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>                d.addColumns(fam1, qual1, ts);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>                mrm.add(d);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>              } else {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>                Delete d = new Delete(row2);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>                d.addColumns(fam1, qual1, ts);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>                mrm.add(d);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>                Put p = new Put(row, ts);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                p.addColumn(fam1, qual1, value2);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>                mrm.add(p);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>              }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>              op ^= true;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>              // check: should always see exactly one column<a name="line.514"></a>
-<span class="sourceLineNo">515</span>              Scan s = new Scan(row);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>              RegionScanner rs = region.getScanner(s);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>              while (rs.next(r))<a name="line.518"></a>
-<span class="sourceLineNo">519</span>                ;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              rs.close();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              if (r.size() != 1) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>                LOG.debug(r);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>                failures.incrementAndGet();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>                fail();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>            } catch (IOException e) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>              e.printStackTrace();<a name="line.527"></a>
-<span class="sourceLineNo">528</span>              failures.incrementAndGet();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>              fail();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>            }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>          }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      };<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // run all threads<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      all[i].start();<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    // wait for all threads to finish<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      try {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        all[i].join();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public static class AtomicOperation extends Thread {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    protected final Region region;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    protected final int numOps;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    protected final AtomicLong timeStamps;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    protected final AtomicInteger failures;<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    protected final Random r = new Random();<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        AtomicInteger failures) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      this.region = region;<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.numOps = numOps;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      this.timeStamps = timeStamps;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      this.failures = failures;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  }<a name="line.565"></a>
-<span class="sourceLineNo">566</span>  <a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private enum TestStep {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    PUT_COMPLETED,         // put complete (released RowLock, but may not have advanced MVCC).<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    CHECKANDPUT_STARTED,   // began checkAndPut: if 10 -&gt; 11<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    CHECKANDPUT_COMPLETED  // completed checkAndPut<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    // NOTE: at the end of these steps, the value of the cell should be 50, not 11!<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  private static volatile TestStep testStep = TestStep.INIT;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>  private final String family = "f1";<a name="line.577"></a>
-<span class="sourceLineNo">578</span>     <a name="line.578"></a>
-<span class="sourceLineNo">579</span>  /**<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Test written as a verifier for HBASE-7051, CheckAndPut should properly read<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * MVCC. <a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * <a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * Moved into TestAtomicOperation from its original location, TestHBase7051<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testPutAndCheckAndPutInParallel() throws Exception {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    final String tableName = "testPutAndCheckAndPut";<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    conf.setClass(HConstants.REGION_IMPL, MockHRegion.class, HeapSize.class);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName))<a name="line.590"></a>
-<span class="sourceLineNo">591</span>        .addFamily(new HColumnDescriptor(family));<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    this.region = TEST_UTIL.createLocalHRegion(htd, null, null);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Put[] puts = new Put[1];<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    Put put = new Put(Bytes.toBytes("r1"));<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("10"));<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    puts[0] = put;<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    <a name="line.597"></a>
-<span class="sourceLineNo">598</span>    region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    MultithreadedTestUtil.TestContext ctx =<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      new MultithreadedTestUtil.TestContext(conf);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    ctx.addThread(new PutThread(ctx, region));<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    ctx.addThread(new CheckAndPutThread(ctx, region));<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    ctx.startThreads();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    while (testStep != TestStep.CHECKANDPUT_COMPLETED) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      Thread.sleep(100);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    ctx.stop();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    Scan s = new Scan();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    RegionScanner scanner = region.getScanner(s);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    List&lt;Cell&gt; results = new ArrayList&lt;Cell&gt;();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    ScannerContext scannerContext = ScannerContext.newBuilder().setBatchLimit(2).build();<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    scanner.next(results, scannerContext);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    for (Cell keyValue : results) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      assertEquals("50",Bytes.toString(CellUtil.cloneValue(keyValue)));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  private class PutThread extends TestThread {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    private Region region;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    PutThread(TestContext ctx, Region region) {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      super(ctx);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      this.region = region;<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    }<a name="line.623"></a>
-<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span>    public void doWork() throws Exception {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      Put[] puts = new Put[1];<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("50"));<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      puts[0] = put;<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      testStep = TestStep.PUT_STARTED;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    }<a name="line.632"></a>
-<span class="sourceLineNo">633</span>  }<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>  private class CheckAndPutThread extends TestThread {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    private Region region;<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    CheckAndPutThread(TestContext ctx, Region region) {<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      super(ctx);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      this.region = region;<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   }<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>    public void doWork() throws Exception {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      Put[] puts = new Put[1];<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("11"));<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      puts[0] = put;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      while (testStep != TestStep.PUT_COMPLETED) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        Thread.sleep(100);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      testStep = TestStep.CHECKANDPUT_STARTED;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      region.checkAndMutate(Bytes.toBytes("r1"), Bytes.toBytes(family), Bytes.toBytes("q1"),<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("10")), put, true);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      testStep = TestStep.CHECKANDPUT_COMPLETED;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>  public static class MockHRegion extends HRegion {<a name="line.657"></a>
-<span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    public MockHRegion(Path tableDir, WAL log, FileSystem fs, Configuration conf,<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        final HRegionInfo regionInfo, final HTableDescriptor htd, RegionServerServices rsServices) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      super(tableDir, log, fs, conf, regionInfo, htd, rsServices);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    @Override<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    public RowLock getRowLock(final byte[] row, boolean readLock) throws IOException {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      if (testStep == TestStep.CHECKANDPUT_STARTED) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        latch.countDown();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      return new WrappedRowLock(super.getRowLock(row, readLock));<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    <a name="line.671"></a>
-<span class="sourceLineNo">672</span>    public class WrappedRowLock implements RowLock {<a name="line.672"></a>
-<span class="sourceLineNo">673</span><a name="line.673"></a>
-<span class="sourceLineNo">674</span>      private final RowLock rowLock;<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>      private WrappedRowLock(RowLock rowLock) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>        this.rowLock = rowLock;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      }<a name="line.678"></a>
+<span class="sourceLineNo">290</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.291"></a>
+<span class="sourceLineNo">292</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.295"></a>
+<span class="sourceLineNo">296</span>               Bytes.toLong(result.getValue(fam1, qual2)));<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            long fam1Increment = Bytes.toLong(result.getValue(fam1, qual1))*3;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>            long fam2Increment = Bytes.toLong(result.getValue(fam2, qual3));<a name="line.298"></a>
+<span class="sourceLineNo">299</span>            assertEquals("fam1=" + fam1Increment + ", fam2=" + fam2Increment,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              fam1Increment, fam2Increment);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        } catch (IOException e) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          e.printStackTrace();<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>    }<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>  @Test<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public void testAppendMultiThreads() throws IOException {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // run a with mixed column families (1 and 3 versions)<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    int numThreads = 100;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    int opsPerThread = 100;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    final byte[] val = new byte[]{1};<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    // create all threads<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        @Override<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        public void run() {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>            try {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>              Append a = new Append(row);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>              a.add(fam1, qual1, val);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>              a.add(fam1, qual2, val);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>              a.add(fam2, qual3, val);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>              Get g = new Get(row);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>              Result result = region.get(g);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.337"></a>
+<span class="sourceLineNo">338</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.338"></a>
+<span class="sourceLineNo">339</span>            } catch (IOException e) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>              e.printStackTrace();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              failures.incrementAndGet();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>              fail();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>            }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      };<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    // run all threads<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      all[i].start();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    // wait for all threads to finish<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      try {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        all[i].join();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    Get g = new Get(row);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    Result result = region.get(g);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  @Test<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    // create 10 threads, each will alternate between adding and<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // removing a column<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    int numThreads = 10;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    int opsPerThread = 250;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // create all threads<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        @Override<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        public void run() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          boolean op = true;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            try {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              // throw in some flushes<a name="line.392"></a>
+<span class="sourceLineNo">393</span>              if (i%10==0) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>                synchronized(region) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>                  LOG.debug("flushing");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>                  region.flush(true);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>                  if (i%100==0) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>                    region.compact(false);<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>              }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>              long ts = timeStamps.incrementAndGet();<a name="line.402"></a>
+<span class="sourceLineNo">403</span>              RowMutations rm = new RowMutations(row);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              if (op) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                Put p = new Put(row, ts);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                p.addColumn(fam1, qual1, value1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>                rm.add(p);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>                Delete d = new Delete(row);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>                d.addColumns(fam1, qual2, ts);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>                rm.add(d);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>              } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>                Delete d = new Delete(row);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>                d.addColumns(fam1, qual1, ts);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>                rm.add(d);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>                Put p = new Put(row, ts);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>                p.addColumn(fam1, qual2, value2);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                rm.add(p);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>              }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>              region.mutateRow(rm);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>              op ^= true;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>              // check: should always see exactly one column<a name="line.425"></a>
+<span class="sourceLineNo">426</span>              Get g = new Get(row);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>              Result r = region.get(g);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>              if (r.size() != 1) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>                LOG.debug(r);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>                failures.incrementAndGet();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>                fail();<a name="line.431"></a>
+<span class="sourceLineNo">432</span>              }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>            } catch (IOException e) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>              e.printStackTrace();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>              failures.incrementAndGet();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>              fail();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>            }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      };<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // run all threads<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      try {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        all[i].join();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } catch (InterruptedException e) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(0, failures.get());<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><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * Test multi-threaded region mutations.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  @Test<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    // create 10 threads, each will alternate between adding and<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    // removing a column<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    int numThreads = 10;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    int opsPerThread = 250;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // create all threads<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        @Override<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        public void run() {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          boolean op = true;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>            try {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>              // throw in some flushes<a name="line.485"></a>
+<span class="sourceLineNo">486</span>              if (i%10==0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>                synchronized(region) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>                  LOG.debug("flushing");<a name="line.488"></a>
+<span class="sourceLineNo">489</span>                  region.flush(true);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>                  if (i%100==0) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>                    region.compact(false);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>                  }<a name="line.492"></a>
+<span class="sourceLineNo">493</span>                }<a name="line.493"></a>
+<span class="sourceLineNo">494</span>              }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>              long ts = timeStamps.incrementAndGet();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>              if (op) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>                Put p = new Put(row2, ts);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>                p.addColumn(fam1, qual1, value1);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>                mrm.add(p);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>                Delete d = new Delete(row);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>                d.addColumns(fam1, qual1, ts);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>                mrm.add(d);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>              } else {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>                Delete d = new Delete(row2);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>                d.addColumns(fam1, qual1, ts);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>                mrm.add(d);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>                Put p = new Put(row, ts);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>                p.addColumn(fam1, qual1, value2);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>                mrm.add(p);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>              }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>              op ^= true;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>              // check: should always see exactly one column<a name="line.518"></a>
+<span class="sourceLineNo">519</span>              Scan s = new Scan(row);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>              RegionScanner rs = region.getScanner(s);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>              while (rs.next(r))<a name="line.522"></a>
+<span class="sourceLineNo">523</span>                ;<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              rs.close();<a name="line.524"></a>
+<span class="sourceLineNo">525</span>              if (r.size() != 1) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>                LOG.debug(r);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>                failures.incrementAndGet();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>                fail();<a name="line.528"></a>
+<span class="sourceLineNo">529</span>              }<a name="line.529"></a>
+<span class="sourceLineNo">530</span>            } catch (IOException e) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>              e.printStackTrace();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>              failures.incrementAndGet();<a name="line.532"></a>
+<span class="sourceLineNo">533</span>              fail();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>          }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        }<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      };<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span>    // run all threads<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      all[i].start();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>    // wait for all threads to finish<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      try {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>        all[i].join();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      } catch (InterruptedException e) {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    assertEquals(0, failures.get());<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  public static class AtomicOperation extends Thread {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    protected final Region region;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    protected final int numOps;<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    protected final AtomicLong timeStamps;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    protected final AtomicInteger failures;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    protected final Random r = new Random();<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>        AtomicInteger failures) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      this.region = region;<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      this.numOps = numOps;<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.timeStamps = timeStamps;<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      this.failures = failures;<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>  <a name="line.570"></a>
+<span class="sourceLineNo">571</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private enum TestStep {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    PUT_COMPLETED,         // put complete (released RowLock, but may

<TRUNCATED>

[42/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
index 6b572a5..a1040c8 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html
@@ -279,76 +279,76 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.71">m_regionServer</a></pre>
 </li>
 </ul>
-<a name="m_bcn">
+<a name="m_format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcn</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.83">m_bcn</a></pre>
+<h4>m_format</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.83">m_format</a></pre>
 </li>
 </ul>
-<a name="m_bcn__IsNotDefault">
+<a name="m_format__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcn__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.88">m_bcn__IsNotDefault</a></pre>
+<h4>m_format__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.88">m_format__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_bcv">
+<a name="m_filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcv</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.100">m_bcv</a></pre>
+<h4>m_filter</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.100">m_filter</a></pre>
 </li>
 </ul>
-<a name="m_bcv__IsNotDefault">
+<a name="m_filter__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_bcv__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.105">m_bcv__IsNotDefault</a></pre>
+<h4>m_filter__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.105">m_filter__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_format">
+<a name="m_bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_format</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.117">m_format</a></pre>
+<h4>m_bcn</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.117">m_bcn</a></pre>
 </li>
 </ul>
-<a name="m_format__IsNotDefault">
+<a name="m_bcn__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_format__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.122">m_format__IsNotDefault</a></pre>
+<h4>m_bcn__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.122">m_bcn__IsNotDefault</a></pre>
 </li>
 </ul>
-<a name="m_filter">
+<a name="m_bcv">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>m_filter</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.134">m_filter</a></pre>
+<h4>m_bcv</h4>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.134">m_bcv</a></pre>
 </li>
 </ul>
-<a name="m_filter__IsNotDefault">
+<a name="m_bcv__IsNotDefault">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>m_filter__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.139">m_filter__IsNotDefault</a></pre>
+<h4>m_bcv__IsNotDefault</h4>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.139">m_bcv__IsNotDefault</a></pre>
 </li>
 </ul>
 </li>
@@ -394,112 +394,112 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.67">getRegionServer</a>()</pre>
 </li>
 </ul>
-<a name="setBcn(java.lang.String)">
+<a name="setFormat(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.73">setBcn</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcn)</pre>
+<h4>setFormat</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.73">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format)</pre>
 </li>
 </ul>
-<a name="getBcn()">
+<a name="getFormat()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcn</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.79">getBcn</a>()</pre>
+<h4>getFormat</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.79">getFormat</a>()</pre>
 </li>
 </ul>
-<a name="getBcn__IsNotDefault()">
+<a name="getFormat__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcn__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.84">getBcn__IsNotDefault</a>()</pre>
+<h4>getFormat__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.84">getFormat__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setBcv(java.lang.String)">
+<a name="setFilter(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setBcv</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.90">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcv)</pre>
+<h4>setFilter</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.90">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
 </li>
 </ul>
-<a name="getBcv()">
+<a name="getFilter()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcv</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.96">getBcv</a>()</pre>
+<h4>getFilter</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.96">getFilter</a>()</pre>
 </li>
 </ul>
-<a name="getBcv__IsNotDefault()">
+<a name="getFilter__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getBcv__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.101">getBcv__IsNotDefault</a>()</pre>
+<h4>getFilter__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.101">getFilter__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFormat(java.lang.String)">
+<a name="setBcn(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFormat</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.107">setFormat</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;format)</pre>
+<h4>setBcn</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.107">setBcn</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcn)</pre>
 </li>
 </ul>
-<a name="getFormat()">
+<a name="getBcn()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFormat</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.113">getFormat</a>()</pre>
+<h4>getBcn</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.113">getBcn</a>()</pre>
 </li>
 </ul>
-<a name="getFormat__IsNotDefault()">
+<a name="getBcn__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFormat__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.118">getFormat__IsNotDefault</a>()</pre>
+<h4>getBcn__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.118">getBcn__IsNotDefault</a>()</pre>
 </li>
 </ul>
-<a name="setFilter(java.lang.String)">
+<a name="setBcv(java.lang.String)">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>setFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.124">setFilter</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;filter)</pre>
+<h4>setBcv</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.124">setBcv</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bcv)</pre>
 </li>
 </ul>
-<a name="getFilter()">
+<a name="getBcv()">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getFilter</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.130">getFilter</a>()</pre>
+<h4>getBcv</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.130">getBcv</a>()</pre>
 </li>
 </ul>
-<a name="getFilter__IsNotDefault()">
+<a name="getBcv__IsNotDefault()">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>getFilter__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.135">getFilter__IsNotDefault</a>()</pre>
+<h4>getBcv__IsNotDefault</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmpl.ImplData.html#line.135">getBcv__IsNotDefault</a>()</pre>
 </li>
 </ul>
 </li>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
index 97f744d..87d2abb 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html
@@ -224,40 +224,40 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/regionserver/
 <pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.28">regionServer</a></pre>
 </li>
 </ul>
-<a name="bcn">
+<a name="format">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>bcn</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.29">bcn</a></pre>
+<h4>format</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.29">format</a></pre>
 </li>
 </ul>
-<a name="bcv">
+<a name="filter">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>bcv</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.30">bcv</a></pre>
+<h4>filter</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.30">filter</a></pre>
 </li>
 </ul>
-<a name="format">
+<a name="bcn">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>format</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.31">format</a></pre>
+<h4>bcn</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.31">bcn</a></pre>
 </li>
 </ul>
-<a name="filter">
+<a name="bcv">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
-<h4>filter</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.32">filter</a></pre>
+<h4>bcv</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/regionserver/RSStatusTmplImpl.html#line.32">bcv</a></pre>
 </li>
 </ul>
 </li>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALKey.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALKey.html b/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALKey.html
index 37d29f7..82922c8 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALKey.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALKey.html
@@ -323,7 +323,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/HLogKey.html" title="class in org.apache.hadoop.hbase.regionserver.wal">HLogKey</a></strong></code>
 <div class="block"><strong>Deprecated.</strong>&nbsp;
-<div class="block"><i>use WALKey.  as of 2.0.  Remove in 3.0</i></div>
+<div class="block"><i>use WALKey. Deprecated as of 1.0 (HBASE-12522). Remove in 2.0</i></div>
 </div>
 </td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index 1f810f3..515651f 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -148,9 +148,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALKey.Version.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">WALKey.Version</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">WALFactory.Providers</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/RegionGroupingProvider.Strategies.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">RegionGroupingProvider.Strategies</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.Providers.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">WALFactory.Providers</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALKey.Version.html" title="enum in org.apache.hadoop.hbase.wal"><span class="strong">WALKey.Version</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.Modify.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.Modify.html b/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.Modify.html
index 8c20ead..de0d003 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.Modify.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.Modify.html
@@ -1263,10 +1263,15 @@
 <span class="sourceLineNo">1255</span>  public static final String ZK_SERVER_KERBEROS_PRINCIPAL =<a name="line.1255"></a>
 <span class="sourceLineNo">1256</span>      "hbase.zookeeper.server.kerberos.principal";<a name="line.1256"></a>
 <span class="sourceLineNo">1257</span><a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  private HConstants() {<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>    // Can't be instantiated with this ctor.<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  }<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>}<a name="line.1261"></a>
+<span class="sourceLineNo">1258</span>  /** Config key for hbase temporary directory in hdfs */<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>  public static final String TEMPORARY_FS_DIRECTORY_KEY = "hbase.fs.tmp.dir";<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>  public static final String DEFAULT_TEMPORARY_HDFS_DIRECTORY = "/user/"<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>      + System.getProperty("user.name") + "/hbase-staging";<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span><a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>  private HConstants() {<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    // Can't be instantiated with this ctor.<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>  }<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>}<a name="line.1266"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.OperationStatusCode.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.OperationStatusCode.html b/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.OperationStatusCode.html
index 8c20ead..de0d003 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.OperationStatusCode.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.OperationStatusCode.html
@@ -1263,10 +1263,15 @@
 <span class="sourceLineNo">1255</span>  public static final String ZK_SERVER_KERBEROS_PRINCIPAL =<a name="line.1255"></a>
 <span class="sourceLineNo">1256</span>      "hbase.zookeeper.server.kerberos.principal";<a name="line.1256"></a>
 <span class="sourceLineNo">1257</span><a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  private HConstants() {<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>    // Can't be instantiated with this ctor.<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  }<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>}<a name="line.1261"></a>
+<span class="sourceLineNo">1258</span>  /** Config key for hbase temporary directory in hdfs */<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>  public static final String TEMPORARY_FS_DIRECTORY_KEY = "hbase.fs.tmp.dir";<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>  public static final String DEFAULT_TEMPORARY_HDFS_DIRECTORY = "/user/"<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>      + System.getProperty("user.name") + "/hbase-staging";<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span><a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>  private HConstants() {<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    // Can't be instantiated with this ctor.<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>  }<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>}<a name="line.1266"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.html b/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.html
index 8c20ead..de0d003 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.html
@@ -1263,10 +1263,15 @@
 <span class="sourceLineNo">1255</span>  public static final String ZK_SERVER_KERBEROS_PRINCIPAL =<a name="line.1255"></a>
 <span class="sourceLineNo">1256</span>      "hbase.zookeeper.server.kerberos.principal";<a name="line.1256"></a>
 <span class="sourceLineNo">1257</span><a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>  private HConstants() {<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>    // Can't be instantiated with this ctor.<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>  }<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>}<a name="line.1261"></a>
+<span class="sourceLineNo">1258</span>  /** Config key for hbase temporary directory in hdfs */<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>  public static final String TEMPORARY_FS_DIRECTORY_KEY = "hbase.fs.tmp.dir";<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>  public static final String DEFAULT_TEMPORARY_HDFS_DIRECTORY = "/user/"<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>      + System.getProperty("user.name") + "/hbase-staging";<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span><a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>  private HConstants() {<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>    // Can't be instantiated with this ctor.<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>  }<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>}<a name="line.1266"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html
index f41a45b..9f165f1 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/HFileOutputFormat2.WriterLength.html
@@ -644,156 +644,159 @@
 <span class="sourceLineNo">636</span>    Configuration conf = job.getConfiguration();<a name="line.636"></a>
 <span class="sourceLineNo">637</span>    // create the partitions file<a name="line.637"></a>
 <span class="sourceLineNo">638</span>    FileSystem fs = FileSystem.get(conf);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    Path partitionsPath = new Path(conf.get("hbase.fs.tmp.dir"), "partitions_" + UUID.randomUUID());<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    fs.makeQualified(partitionsPath);<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    writePartitions(conf, partitionsPath, splitPoints);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    fs.deleteOnExit(partitionsPath);<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    // configure job to use it<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    job.setPartitionerClass(TotalOrderPartitioner.class);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    TotalOrderPartitioner.setPartitionFile(conf, partitionsPath);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>  }<a name="line.647"></a>
-<span class="sourceLineNo">648</span><a name="line.648"></a>
-<span class="sourceLineNo">649</span>  /**<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   * Serialize column family to compression algorithm map to configuration.<a name="line.650"></a>
-<span class="sourceLineNo">651</span>   * Invoked while configuring the MR job for incremental load.<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   *<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @param tableDescriptor to read the properties from<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   * @param conf to persist serialized values into<a name="line.654"></a>
-<span class="sourceLineNo">655</span>   * @throws IOException<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   *           on failure to read column family descriptors<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   */<a name="line.657"></a>
-<span class="sourceLineNo">658</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      value="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE")<a name="line.659"></a>
-<span class="sourceLineNo">660</span>  @VisibleForTesting<a name="line.660"></a>
-<span class="sourceLineNo">661</span>  static void configureCompression(Configuration conf, HTableDescriptor tableDescriptor)<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      throws UnsupportedEncodingException {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    StringBuilder compressionConfigValue = new StringBuilder();<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    if(tableDescriptor == null){<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      // could happen with mock table instance<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      return;<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    }<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    int i = 0;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      if (i++ &gt; 0) {<a name="line.671"></a>
-<span class="sourceLineNo">672</span>        compressionConfigValue.append('&amp;');<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      compressionConfigValue.append(URLEncoder.encode(<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.675"></a>
-<span class="sourceLineNo">676</span>      compressionConfigValue.append('=');<a name="line.676"></a>
+<span class="sourceLineNo">639</span>    String hbaseTmpFsDir =<a name="line.639"></a>
+<span class="sourceLineNo">640</span>        conf.get(HConstants.TEMPORARY_FS_DIRECTORY_KEY,<a name="line.640"></a>
+<span class="sourceLineNo">641</span>          HConstants.DEFAULT_TEMPORARY_HDFS_DIRECTORY);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    Path partitionsPath = new Path(hbaseTmpFsDir, "partitions_" + UUID.randomUUID());<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    fs.makeQualified(partitionsPath);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>    writePartitions(conf, partitionsPath, splitPoints);<a name="line.644"></a>
+<span class="sourceLineNo">645</span>    fs.deleteOnExit(partitionsPath);<a name="line.645"></a>
+<span class="sourceLineNo">646</span><a name="line.646"></a>
+<span class="sourceLineNo">647</span>    // configure job to use it<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    job.setPartitionerClass(TotalOrderPartitioner.class);<a name="line.648"></a>
+<span class="sourceLineNo">649</span>    TotalOrderPartitioner.setPartitionFile(conf, partitionsPath);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>  }<a name="line.650"></a>
+<span class="sourceLineNo">651</span><a name="line.651"></a>
+<span class="sourceLineNo">652</span>  /**<a name="line.652"></a>
+<span class="sourceLineNo">653</span>   * Serialize column family to compression algorithm map to configuration.<a name="line.653"></a>
+<span class="sourceLineNo">654</span>   * Invoked while configuring the MR job for incremental load.<a name="line.654"></a>
+<span class="sourceLineNo">655</span>   *<a name="line.655"></a>
+<span class="sourceLineNo">656</span>   * @param tableDescriptor to read the properties from<a name="line.656"></a>
+<span class="sourceLineNo">657</span>   * @param conf to persist serialized values into<a name="line.657"></a>
+<span class="sourceLineNo">658</span>   * @throws IOException<a name="line.658"></a>
+<span class="sourceLineNo">659</span>   *           on failure to read column family descriptors<a name="line.659"></a>
+<span class="sourceLineNo">660</span>   */<a name="line.660"></a>
+<span class="sourceLineNo">661</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      value="RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE")<a name="line.662"></a>
+<span class="sourceLineNo">663</span>  @VisibleForTesting<a name="line.663"></a>
+<span class="sourceLineNo">664</span>  static void configureCompression(Configuration conf, HTableDescriptor tableDescriptor)<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      throws UnsupportedEncodingException {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    StringBuilder compressionConfigValue = new StringBuilder();<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    if(tableDescriptor == null){<a name="line.667"></a>
+<span class="sourceLineNo">668</span>      // could happen with mock table instance<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      return;<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    }<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    int i = 0;<a name="line.672"></a>
+<span class="sourceLineNo">673</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.673"></a>
+<span class="sourceLineNo">674</span>      if (i++ &gt; 0) {<a name="line.674"></a>
+<span class="sourceLineNo">675</span>        compressionConfigValue.append('&amp;');<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      }<a name="line.676"></a>
 <span class="sourceLineNo">677</span>      compressionConfigValue.append(URLEncoder.encode(<a name="line.677"></a>
-<span class="sourceLineNo">678</span>        familyDescriptor.getCompressionType().getName(), "UTF-8"));<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    }<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    // Get rid of the last ampersand<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    conf.set(COMPRESSION_FAMILIES_CONF_KEY, compressionConfigValue.toString());<a name="line.681"></a>
-<span class="sourceLineNo">682</span>  }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><a name="line.683"></a>
-<span class="sourceLineNo">684</span>  /**<a name="line.684"></a>
-<span class="sourceLineNo">685</span>   * Serialize column family to block size map to configuration.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * Invoked while configuring the MR job for incremental load.<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   * @param tableDescriptor to read the properties from<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * @param conf to persist serialized values into<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   *<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * @throws IOException<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   *           on failure to read column family descriptors<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   */<a name="line.692"></a>
-<span class="sourceLineNo">693</span>  @VisibleForTesting<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  static void configureBlockSize(HTableDescriptor tableDescriptor, Configuration conf)<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      throws UnsupportedEncodingException {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    StringBuilder blockSizeConfigValue = new StringBuilder();<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    if (tableDescriptor == null) {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      // could happen with mock table instance<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      return;<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    }<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    int i = 0;<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      if (i++ &gt; 0) {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>        blockSizeConfigValue.append('&amp;');<a name="line.705"></a>
-<span class="sourceLineNo">706</span>      }<a name="line.706"></a>
-<span class="sourceLineNo">707</span>      blockSizeConfigValue.append(URLEncoder.encode(<a name="line.707"></a>
-<span class="sourceLineNo">708</span>          familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      blockSizeConfigValue.append('=');<a name="line.709"></a>
+<span class="sourceLineNo">678</span>        familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      compressionConfigValue.append('=');<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      compressionConfigValue.append(URLEncoder.encode(<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        familyDescriptor.getCompressionType().getName(), "UTF-8"));<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    }<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    // Get rid of the last ampersand<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    conf.set(COMPRESSION_FAMILIES_CONF_KEY, compressionConfigValue.toString());<a name="line.684"></a>
+<span class="sourceLineNo">685</span>  }<a name="line.685"></a>
+<span class="sourceLineNo">686</span><a name="line.686"></a>
+<span class="sourceLineNo">687</span>  /**<a name="line.687"></a>
+<span class="sourceLineNo">688</span>   * Serialize column family to block size map to configuration.<a name="line.688"></a>
+<span class="sourceLineNo">689</span>   * Invoked while configuring the MR job for incremental load.<a name="line.689"></a>
+<span class="sourceLineNo">690</span>   * @param tableDescriptor to read the properties from<a name="line.690"></a>
+<span class="sourceLineNo">691</span>   * @param conf to persist serialized values into<a name="line.691"></a>
+<span class="sourceLineNo">692</span>   *<a name="line.692"></a>
+<span class="sourceLineNo">693</span>   * @throws IOException<a name="line.693"></a>
+<span class="sourceLineNo">694</span>   *           on failure to read column family descriptors<a name="line.694"></a>
+<span class="sourceLineNo">695</span>   */<a name="line.695"></a>
+<span class="sourceLineNo">696</span>  @VisibleForTesting<a name="line.696"></a>
+<span class="sourceLineNo">697</span>  static void configureBlockSize(HTableDescriptor tableDescriptor, Configuration conf)<a name="line.697"></a>
+<span class="sourceLineNo">698</span>      throws UnsupportedEncodingException {<a name="line.698"></a>
+<span class="sourceLineNo">699</span>    StringBuilder blockSizeConfigValue = new StringBuilder();<a name="line.699"></a>
+<span class="sourceLineNo">700</span>    if (tableDescriptor == null) {<a name="line.700"></a>
+<span class="sourceLineNo">701</span>      // could happen with mock table instance<a name="line.701"></a>
+<span class="sourceLineNo">702</span>      return;<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    }<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    int i = 0;<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      if (i++ &gt; 0) {<a name="line.707"></a>
+<span class="sourceLineNo">708</span>        blockSizeConfigValue.append('&amp;');<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      }<a name="line.709"></a>
 <span class="sourceLineNo">710</span>      blockSizeConfigValue.append(URLEncoder.encode(<a name="line.710"></a>
-<span class="sourceLineNo">711</span>          String.valueOf(familyDescriptor.getBlocksize()), "UTF-8"));<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    }<a name="line.712"></a>
-<span class="sourceLineNo">713</span>    // Get rid of the last ampersand<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    conf.set(BLOCK_SIZE_FAMILIES_CONF_KEY, blockSizeConfigValue.toString());<a name="line.714"></a>
-<span class="sourceLineNo">715</span>  }<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>   * Serialize column family to bloom type map to configuration.<a name="line.718"></a>
-<span class="sourceLineNo">719</span>   * Invoked while configuring the MR job for incremental load.<a name="line.719"></a>
-<span class="sourceLineNo">720</span>   * @param tableDescriptor to read the properties from<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   * @param conf to persist serialized values into<a name="line.721"></a>
-<span class="sourceLineNo">722</span>   *<a name="line.722"></a>
-<span class="sourceLineNo">723</span>   * @throws IOException<a name="line.723"></a>
-<span class="sourceLineNo">724</span>   *           on failure to read column family descriptors<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   */<a name="line.725"></a>
-<span class="sourceLineNo">726</span>  @VisibleForTesting<a name="line.726"></a>
-<span class="sourceLineNo">727</span>  static void configureBloomType(HTableDescriptor tableDescriptor, Configuration conf)<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      throws UnsupportedEncodingException {<a name="line.728"></a>
-<span class="sourceLineNo">729</span>    if (tableDescriptor == null) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      // could happen with mock table instance<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return;<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    }<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    StringBuilder bloomTypeConfigValue = new StringBuilder();<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    int i = 0;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      if (i++ &gt; 0) {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>        bloomTypeConfigValue.append('&amp;');<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      }<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      bloomTypeConfigValue.append(URLEncoder.encode(<a name="line.740"></a>
-<span class="sourceLineNo">741</span>        familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      bloomTypeConfigValue.append('=');<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      String bloomType = familyDescriptor.getBloomFilterType().toString();<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      if (bloomType == null) {<a name="line.744"></a>
-<span class="sourceLineNo">745</span>        bloomType = HColumnDescriptor.DEFAULT_BLOOMFILTER;<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      }<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      bloomTypeConfigValue.append(URLEncoder.encode(bloomType, "UTF-8"));<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    }<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    conf.set(BLOOM_TYPE_FAMILIES_CONF_KEY, bloomTypeConfigValue.toString());<a name="line.749"></a>
-<span class="sourceLineNo">750</span>  }<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>  /**<a name="line.752"></a>
-<span class="sourceLineNo">753</span>   * Serialize column family to data block encoding map to configuration.<a name="line.753"></a>
-<span class="sourceLineNo">754</span>   * Invoked while configuring the MR job for incremental load.<a name="line.754"></a>
-<span class="sourceLineNo">755</span>   *<a name="line.755"></a>
-<span class="sourceLineNo">756</span>   * @param tableDescriptor to read the properties from<a name="line.756"></a>
-<span class="sourceLineNo">757</span>   * @param conf to persist serialized values into<a name="line.757"></a>
-<span class="sourceLineNo">758</span>   * @throws IOException<a name="line.758"></a>
-<span class="sourceLineNo">759</span>   *           on failure to read column family descriptors<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   */<a name="line.760"></a>
-<span class="sourceLineNo">761</span>  @VisibleForTesting<a name="line.761"></a>
-<span class="sourceLineNo">762</span>  static void configureDataBlockEncoding(HTableDescriptor tableDescriptor,<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      Configuration conf) throws UnsupportedEncodingException {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>    if (tableDescriptor == null) {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      // could happen with mock table instance<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      return;<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    }<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    StringBuilder dataBlockEncodingConfigValue = new StringBuilder();<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    int i = 0;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      if (i++ &gt; 0) {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>        dataBlockEncodingConfigValue.append('&amp;');<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      }<a name="line.774"></a>
-<span class="sourceLineNo">775</span>      dataBlockEncodingConfigValue.append(<a name="line.775"></a>
-<span class="sourceLineNo">776</span>          URLEncoder.encode(familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      dataBlockEncodingConfigValue.append('=');<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      DataBlockEncoding encoding = familyDescriptor.getDataBlockEncoding();<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      if (encoding == null) {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>        encoding = DataBlockEncoding.NONE;<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      }<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      dataBlockEncodingConfigValue.append(URLEncoder.encode(encoding.toString(),<a name="line.782"></a>
-<span class="sourceLineNo">783</span>          "UTF-8"));<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    }<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    conf.set(DATABLOCK_ENCODING_FAMILIES_CONF_KEY,<a name="line.785"></a>
-<span class="sourceLineNo">786</span>        dataBlockEncodingConfigValue.toString());<a name="line.786"></a>
-<span class="sourceLineNo">787</span>  }<a name="line.787"></a>
-<span class="sourceLineNo">788</span>}<a name="line.788"></a>
+<span class="sourceLineNo">711</span>          familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      blockSizeConfigValue.append('=');<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      blockSizeConfigValue.append(URLEncoder.encode(<a name="line.713"></a>
+<span class="sourceLineNo">714</span>          String.valueOf(familyDescriptor.getBlocksize()), "UTF-8"));<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    }<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    // Get rid of the last ampersand<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    conf.set(BLOCK_SIZE_FAMILIES_CONF_KEY, blockSizeConfigValue.toString());<a name="line.717"></a>
+<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
+<span class="sourceLineNo">719</span><a name="line.719"></a>
+<span class="sourceLineNo">720</span>  /**<a name="line.720"></a>
+<span class="sourceLineNo">721</span>   * Serialize column family to bloom type map to configuration.<a name="line.721"></a>
+<span class="sourceLineNo">722</span>   * Invoked while configuring the MR job for incremental load.<a name="line.722"></a>
+<span class="sourceLineNo">723</span>   * @param tableDescriptor to read the properties from<a name="line.723"></a>
+<span class="sourceLineNo">724</span>   * @param conf to persist serialized values into<a name="line.724"></a>
+<span class="sourceLineNo">725</span>   *<a name="line.725"></a>
+<span class="sourceLineNo">726</span>   * @throws IOException<a name="line.726"></a>
+<span class="sourceLineNo">727</span>   *           on failure to read column family descriptors<a name="line.727"></a>
+<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
+<span class="sourceLineNo">729</span>  @VisibleForTesting<a name="line.729"></a>
+<span class="sourceLineNo">730</span>  static void configureBloomType(HTableDescriptor tableDescriptor, Configuration conf)<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      throws UnsupportedEncodingException {<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    if (tableDescriptor == null) {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      // could happen with mock table instance<a name="line.733"></a>
+<span class="sourceLineNo">734</span>      return;<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    }<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    StringBuilder bloomTypeConfigValue = new StringBuilder();<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    int i = 0;<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      if (i++ &gt; 0) {<a name="line.740"></a>
+<span class="sourceLineNo">741</span>        bloomTypeConfigValue.append('&amp;');<a name="line.741"></a>
+<span class="sourceLineNo">742</span>      }<a name="line.742"></a>
+<span class="sourceLineNo">743</span>      bloomTypeConfigValue.append(URLEncoder.encode(<a name="line.743"></a>
+<span class="sourceLineNo">744</span>        familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.744"></a>
+<span class="sourceLineNo">745</span>      bloomTypeConfigValue.append('=');<a name="line.745"></a>
+<span class="sourceLineNo">746</span>      String bloomType = familyDescriptor.getBloomFilterType().toString();<a name="line.746"></a>
+<span class="sourceLineNo">747</span>      if (bloomType == null) {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>        bloomType = HColumnDescriptor.DEFAULT_BLOOMFILTER;<a name="line.748"></a>
+<span class="sourceLineNo">749</span>      }<a name="line.749"></a>
+<span class="sourceLineNo">750</span>      bloomTypeConfigValue.append(URLEncoder.encode(bloomType, "UTF-8"));<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    }<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    conf.set(BLOOM_TYPE_FAMILIES_CONF_KEY, bloomTypeConfigValue.toString());<a name="line.752"></a>
+<span class="sourceLineNo">753</span>  }<a name="line.753"></a>
+<span class="sourceLineNo">754</span><a name="line.754"></a>
+<span class="sourceLineNo">755</span>  /**<a name="line.755"></a>
+<span class="sourceLineNo">756</span>   * Serialize column family to data block encoding map to configuration.<a name="line.756"></a>
+<span class="sourceLineNo">757</span>   * Invoked while configuring the MR job for incremental load.<a name="line.757"></a>
+<span class="sourceLineNo">758</span>   *<a name="line.758"></a>
+<span class="sourceLineNo">759</span>   * @param tableDescriptor to read the properties from<a name="line.759"></a>
+<span class="sourceLineNo">760</span>   * @param conf to persist serialized values into<a name="line.760"></a>
+<span class="sourceLineNo">761</span>   * @throws IOException<a name="line.761"></a>
+<span class="sourceLineNo">762</span>   *           on failure to read column family descriptors<a name="line.762"></a>
+<span class="sourceLineNo">763</span>   */<a name="line.763"></a>
+<span class="sourceLineNo">764</span>  @VisibleForTesting<a name="line.764"></a>
+<span class="sourceLineNo">765</span>  static void configureDataBlockEncoding(HTableDescriptor tableDescriptor,<a name="line.765"></a>
+<span class="sourceLineNo">766</span>      Configuration conf) throws UnsupportedEncodingException {<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    if (tableDescriptor == null) {<a name="line.767"></a>
+<span class="sourceLineNo">768</span>      // could happen with mock table instance<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      return;<a name="line.769"></a>
+<span class="sourceLineNo">770</span>    }<a name="line.770"></a>
+<span class="sourceLineNo">771</span>    StringBuilder dataBlockEncodingConfigValue = new StringBuilder();<a name="line.771"></a>
+<span class="sourceLineNo">772</span>    Collection&lt;HColumnDescriptor&gt; families = tableDescriptor.getFamilies();<a name="line.772"></a>
+<span class="sourceLineNo">773</span>    int i = 0;<a name="line.773"></a>
+<span class="sourceLineNo">774</span>    for (HColumnDescriptor familyDescriptor : families) {<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      if (i++ &gt; 0) {<a name="line.775"></a>
+<span class="sourceLineNo">776</span>        dataBlockEncodingConfigValue.append('&amp;');<a name="line.776"></a>
+<span class="sourceLineNo">777</span>      }<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      dataBlockEncodingConfigValue.append(<a name="line.778"></a>
+<span class="sourceLineNo">779</span>          URLEncoder.encode(familyDescriptor.getNameAsString(), "UTF-8"));<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      dataBlockEncodingConfigValue.append('=');<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      DataBlockEncoding encoding = familyDescriptor.getDataBlockEncoding();<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      if (encoding == null) {<a name="line.782"></a>
+<span class="sourceLineNo">783</span>        encoding = DataBlockEncoding.NONE;<a name="line.783"></a>
+<span class="sourceLineNo">784</span>      }<a name="line.784"></a>
+<span class="sourceLineNo">785</span>      dataBlockEncodingConfigValue.append(URLEncoder.encode(encoding.toString(),<a name="line.785"></a>
+<span class="sourceLineNo">786</span>          "UTF-8"));<a name="line.786"></a>
+<span class="sourceLineNo">787</span>    }<a name="line.787"></a>
+<span class="sourceLineNo">788</span>    conf.set(DATABLOCK_ENCODING_FAMILIES_CONF_KEY,<a name="line.788"></a>
+<span class="sourceLineNo">789</span>        dataBlockEncodingConfigValue.toString());<a name="line.789"></a>
+<span class="sourceLineNo">790</span>  }<a name="line.790"></a>
+<span class="sourceLineNo">791</span>}<a name="line.791"></a>
 
 
 


[50/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/apidocs/org/apache/hadoop/hbase/HConstants.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/HConstants.html b/apidocs/org/apache/hadoop/hbase/HConstants.html
index aca7124..08d16c3 100644
--- a/apidocs/org/apache/hadoop/hbase/HConstants.html
+++ b/apidocs/org/apache/hadoop/hbase/HConstants.html
@@ -572,252 +572,256 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_STATUS_MULTICAST_PORT">DEFAULT_STATUS_MULTICAST_PORT</a></strong></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_TEMPORARY_HDFS_DIRECTORY">DEFAULT_TEMPORARY_HDFS_DIRECTORY</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_THREAD_WAKE_FREQUENCY">DEFAULT_THREAD_WAKE_FREQUENCY</a></strong></code>
 <div class="block">Default value for thread wake frequency</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_USE_META_REPLICAS">DEFAULT_USE_META_REPLICAS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_VERSION_FILE_WRITE_ATTEMPTS">DEFAULT_VERSION_FILE_WRITE_ATTEMPTS</a></strong></code>
 <div class="block">Parameter name for how often we should try to write a version file, before failing</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_WAL_STORAGE_POLICY">DEFAULT_WAL_STORAGE_POLICY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZK_SESSION_TIMEOUT">DEFAULT_ZK_SESSION_TIMEOUT</a></strong></code>
 <div class="block">Default value for ZooKeeper session timeout</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_CLIENT_PORT">DEFAULT_ZOOKEPER_CLIENT_PORT</a></strong></code>
 <div class="block">Default client port that the zookeeper listens on</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS</a></strong></code>
 <div class="block">Default limit on concurrent client-side zookeeper connections</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_RECOVERABLE_WAITIME">DEFAULT_ZOOKEPER_RECOVERABLE_WAITIME</a></strong></code>
 <div class="block">Default wait time for the recoverable zookeeper</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DELIMITER">DELIMITER</a></strong></code>
 <div class="block">delimiter used between portions of a region name</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DISALLOW_WRITES_IN_RECOVERING">DISALLOW_WRITES_IN_RECOVERING</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DISTRIBUTED_LOG_REPLAY_KEY">DISTRIBUTED_LOG_REPLAY_KEY</a></strong></code>
 <div class="block">Conf key that enables unflushed WAL edits directly being replayed to region servers</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#EMPTY_BYTE_ARRAY">EMPTY_BYTE_ARRAY</a></strong></code>
 <div class="block">An empty instance.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#EMPTY_BYTE_BUFFER">EMPTY_BYTE_BUFFER</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#EMPTY_END_ROW">EMPTY_END_ROW</a></strong></code>
 <div class="block">Last row in a table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#EMPTY_START_ROW">EMPTY_START_ROW</a></strong></code>
 <div class="block">Used by scanners, etc when they want to start at the beginning of a region</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#ENABLE_CLIENT_BACKPRESSURE">ENABLE_CLIENT_BACKPRESSURE</a></strong></code>
 <div class="block">Config key for if the server should send backpressure and if the client should listen to
  that backpressure from the server</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#ENABLE_DATA_FILE_UMASK">ENABLE_DATA_FILE_UMASK</a></strong></code>
 <div class="block">Enable file permission modification from standard hbase</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#ENABLE_WAL_COMPRESSION">ENABLE_WAL_COMPRESSION</a></strong></code>
 <div class="block">Configuration name of WAL Compression</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#ENABLE_WAL_ENCRYPTION">ENABLE_WAL_ENCRYPTION</a></strong></code>
 <div class="block">Configuration key for enabling WAL encryption, a boolean</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#ENSEMBLE_TABLE_NAME">ENSEMBLE_TABLE_NAME</a></strong></code>
 <div class="block">The name of the ensemble table</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#FILE_SYSTEM_VERSION">FILE_SYSTEM_VERSION</a></strong></code>
 <div class="block">Current version of file system.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#FOREVER">FOREVER</a></strong></code>
 <div class="block">Unlimited time-to-live.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CANARY_WRITE_DATA_TTL_KEY">HBASE_CANARY_WRITE_DATA_TTL_KEY</a></strong></code>
 <div class="block">Canary config keys</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CANARY_WRITE_PERSERVER_REGIONS_LOWERLIMIT_KEY">HBASE_CANARY_WRITE_PERSERVER_REGIONS_LOWERLIMIT_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CANARY_WRITE_PERSERVER_REGIONS_UPPERLIMIT_KEY">HBASE_CANARY_WRITE_PERSERVER_REGIONS_UPPERLIMIT_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CANARY_WRITE_TABLE_CHECK_PERIOD_KEY">HBASE_CANARY_WRITE_TABLE_CHECK_PERIOD_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CANARY_WRITE_VALUE_SIZE_KEY">HBASE_CANARY_WRITE_VALUE_SIZE_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CHECKSUM_VERIFICATION">HBASE_CHECKSUM_VERIFICATION</a></strong></code>
 <div class="block">If this parameter is set to true, then hbase will read
  data and then verify checksums.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_ENABLE_FAST_FAIL_MODE_DEFAULT">HBASE_CLIENT_ENABLE_FAST_FAIL_MODE_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_FAST_FAIL_CLEANUP_DURATION_MS_DEFAULT">HBASE_CLIENT_FAST_FAIL_CLEANUP_DURATION_MS_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_FAST_FAIL_CLEANUP_MS_DURATION_MS">HBASE_CLIENT_FAST_FAIL_CLEANUP_MS_DURATION_MS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_FAST_FAIL_INTERCEPTOR_IMPL">HBASE_CLIENT_FAST_FAIL_INTERCEPTOR_IMPL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_FAST_FAIL_MODE_ENABLED">HBASE_CLIENT_FAST_FAIL_MODE_ENABLED</a></strong></code>
 <div class="block">Config for enabling/disabling the fast fail mode.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_FAST_FAIL_THREASHOLD_MS">HBASE_CLIENT_FAST_FAIL_THREASHOLD_MS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_FAST_FAIL_THREASHOLD_MS_DEFAULT">HBASE_CLIENT_FAST_FAIL_THREASHOLD_MS_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_INSTANCE_ID">HBASE_CLIENT_INSTANCE_ID</a></strong></code>
 <div class="block">Parameter name for unique identifier for this <code>Configuration</code>
  instance.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_IPC_POOL_SIZE">HBASE_CLIENT_IPC_POOL_SIZE</a></strong></code>
 <div class="block">Parameter name for HBase client IPC pool size</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_IPC_POOL_TYPE">HBASE_CLIENT_IPC_POOL_TYPE</a></strong></code>
 <div class="block">Parameter name for HBase client IPC pool type</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_MAX_PERREGION_TASKS">HBASE_CLIENT_MAX_PERREGION_TASKS</a></strong></code>
 <div class="block">The maximum number of concurrent connections the client will maintain to a single
  Region.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_MAX_PERSERVER_TASKS">HBASE_CLIENT_MAX_PERSERVER_TASKS</a></strong></code>
 <div class="block">The maximum number of concurrent connections the client will maintain to a single
  RegionServer.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_MAX_TOTAL_TASKS">HBASE_CLIENT_MAX_TOTAL_TASKS</a></strong></code>
 <div class="block">The maximum number of concurrent connections the client will maintain.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_META_OPERATION_TIMEOUT">HBASE_CLIENT_META_OPERATION_TIMEOUT</a></strong></code>
 <div class="block">Parameter name for HBase client operation timeout, which overrides RPC timeout</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_OPERATION_TIMEOUT">HBASE_CLIENT_OPERATION_TIMEOUT</a></strong></code>
 <div class="block">Parameter name for HBase client operation timeout, which overrides RPC timeout</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_PAUSE">HBASE_CLIENT_PAUSE</a></strong></code>
 <div class="block">Parameter name for client pause value, used mostly as value to wait
  before running a retry of a failed get, region lookup, etc.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_RETRIES_NUMBER">HBASE_CLIENT_RETRIES_NUMBER</a></strong></code>
 <div class="block">Parameter name for maximum retries, used as maximum for all retryable
@@ -825,98 +829,98 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
  getting a cell's value, starting a row update, etc.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_SCANNER_CACHING">HBASE_CLIENT_SCANNER_CACHING</a></strong></code>
 <div class="block">Parameter name to set the default scanner caching for all clients.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY">HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY</a></strong></code>
 <div class="block">Parameter name for maximum number of bytes returned when calling a scanner's next method.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD">HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD</a></strong></code>
 <div class="block">The client scanner timeout period in milliseconds.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static float</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_CLUSTER_MINIMUM_MEMORY_THRESHOLD">HBASE_CLUSTER_MINIMUM_MEMORY_THRESHOLD</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_COORDINATED_STATE_MANAGER_CLASS">HBASE_COORDINATED_STATE_MANAGER_CLASS</a></strong></code>
 <div class="block">Config for pluggable consensus provider</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_DIR">HBASE_DIR</a></strong></code>
 <div class="block">Parameter name for HBase instance root directory</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_MASTER_LOADBALANCE_BYTABLE">HBASE_MASTER_LOADBALANCE_BYTABLE</a></strong></code>
 <div class="block">Config for balancing the cluster by table</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_MASTER_LOADBALANCER_CLASS">HBASE_MASTER_LOADBALANCER_CLASS</a></strong></code>
 <div class="block">Config for pluggable load balancers</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_MASTER_LOGCLEANER_PLUGINS">HBASE_MASTER_LOGCLEANER_PLUGINS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_MASTER_NORMALIZER_CLASS">HBASE_MASTER_NORMALIZER_CLASS</a></strong></code>
 <div class="block">Config for pluggable region normalizer</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_META_BLOCK_SIZE">HBASE_META_BLOCK_SIZE</a></strong></code>
 <div class="block">Parameter name for number of versions, kept by meta table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_META_SCANNER_CACHING">HBASE_META_SCANNER_CACHING</a></strong></code>
 <div class="block">Parameter name for number of rows that will be fetched when calling next on
  a scanner if it is not served from memory.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_META_VERSIONS">HBASE_META_VERSIONS</a></strong></code>
 <div class="block">Parameter name for number of versions, kept by meta table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_NON_TABLE_DIRS">HBASE_NON_TABLE_DIRS</a></strong></code>
 <div class="block">Directories that are not HBase table directories</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_NON_USER_TABLE_DIRS">HBASE_NON_USER_TABLE_DIRS</a></strong></code>
 <div class="block">Directories that are not HBase user table directories</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_REGION_SPLIT_POLICY_KEY">HBASE_REGION_SPLIT_POLICY_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_REGIONSERVER_LEASE_PERIOD_KEY">HBASE_REGIONSERVER_LEASE_PERIOD_KEY</a></strong></code>
 <div class="block"><strong>Deprecated.</strong>&nbsp;
@@ -924,320 +928,320 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY">HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY</a></strong></code>
 <div class="block">timeout for short operation RPC</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_RPC_TIMEOUT_KEY">HBASE_RPC_TIMEOUT_KEY</a></strong></code>
 <div class="block">timeout for each RPC</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_RS_NONCES_ENABLED">HBASE_RS_NONCES_ENABLED</a></strong></code>
 <div class="block">Whether nonces are enabled; default is true.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_SERVER_PAUSE">HBASE_SERVER_PAUSE</a></strong></code>
 <div class="block">Parameter name for server pause value, used mostly as value to wait before
  running a retry of a failed operation.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_SERVER_SCANNER_MAX_RESULT_SIZE_KEY">HBASE_SERVER_SCANNER_MAX_RESULT_SIZE_KEY</a></strong></code>
 <div class="block">Parameter name for maximum number of bytes returned when calling a scanner's next method.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_SPLITLOG_MANAGER_TIMEOUT">HBASE_SPLITLOG_MANAGER_TIMEOUT</a></strong></code>
 <div class="block">Configuration key for SplitLog manager timeout</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASE_TEMP_DIRECTORY">HBASE_TEMP_DIRECTORY</a></strong></code>
 <div class="block">Temporary directory used for table creation and deletion</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBASECLIENT_IMPL">HBASECLIENT_IMPL</a></strong></code>
 <div class="block">Parameter name for what hbase client implementation to use.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBCK_CODE_NAME">HBCK_CODE_NAME</a></strong></code>
 <div class="block">HBCK special code name used as server name when manipulating ZK nodes</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HBCK_SIDELINEDIR_NAME">HBCK_SIDELINEDIR_NAME</a></strong></code>
 <div class="block">Used by HBCK to sideline backup data</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HEALTH_CHORE_WAKE_FREQ">HEALTH_CHORE_WAKE_FREQ</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HEALTH_FAILURE_THRESHOLD">HEALTH_FAILURE_THRESHOLD</a></strong></code>
 <div class="block">The maximum number of health check failures a server can encounter consecutively.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HEALTH_SCRIPT_LOC">HEALTH_SCRIPT_LOC</a></strong></code>
 <div class="block">Health script related settings.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HEALTH_SCRIPT_TIMEOUT">HEALTH_SCRIPT_TIMEOUT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HEAP_OCCUPANCY_HIGH_WATERMARK_KEY">HEAP_OCCUPANCY_HIGH_WATERMARK_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HEAP_OCCUPANCY_LOW_WATERMARK_KEY">HEAP_OCCUPANCY_LOW_WATERMARK_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HFILE_ARCHIVE_DIRECTORY">HFILE_ARCHIVE_DIRECTORY</a></strong></code>
 <div class="block">Directory under /hbase where archived hfiles are stored</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static float</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HFILE_BLOCK_CACHE_SIZE_DEFAULT">HFILE_BLOCK_CACHE_SIZE_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HFILE_BLOCK_CACHE_SIZE_KEY">HFILE_BLOCK_CACHE_SIZE_KEY</a></strong></code>
 <div class="block">Configuration key for the size of the block cache</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HFILEBLOCK_DUMMY_HEADER">HFILEBLOCK_DUMMY_HEADER</a></strong></code>
 <div class="block">Just an array of bytes of the right size.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HFILEBLOCK_HEADER_SIZE">HFILEBLOCK_HEADER_SIZE</a></strong></code>
 <div class="block">The size of a version 2 HFile block header, minor version 1.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM">HFILEBLOCK_HEADER_SIZE_NO_CHECKSUM</a></strong></code>
 <div class="block">The size data structures with minor version is 0</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HIGH_QOS">HIGH_QOS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HOUR_IN_SECONDS">HOUR_IN_SECONDS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_COMPACTIONDIR_NAME">HREGION_COMPACTIONDIR_NAME</a></strong></code>
 <div class="block">Used to construct the name of the compaction directory during compaction</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_EDITS_REPLAY_SKIP_ERRORS">HREGION_EDITS_REPLAY_SKIP_ERRORS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_LOGDIR_NAME">HREGION_LOGDIR_NAME</a></strong></code>
 <div class="block">Used to construct the name of the log directory for a region server</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_MAX_FILESIZE">HREGION_MAX_FILESIZE</a></strong></code>
 <div class="block">Conf key for the max file size after which we split the region</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_MEMSTORE_BLOCK_MULTIPLIER">HREGION_MEMSTORE_BLOCK_MULTIPLIER</a></strong></code>
 <div class="block">Block updates if memstore has hbase.hregion.memstore.block.multiplier
  times hbase.hregion.memstore.flush.size bytes.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_MEMSTORE_FLUSH_SIZE">HREGION_MEMSTORE_FLUSH_SIZE</a></strong></code>
 <div class="block">Conf key for the memstore size at which we flush the memstore</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HREGION_OLDLOGDIR_NAME">HREGION_OLDLOGDIR_NAME</a></strong></code>
 <div class="block">Like the previous, but for old logs that are about to be deleted</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#HSTORE_OPEN_AND_CLOSE_THREADS_MAX">HSTORE_OPEN_AND_CLOSE_THREADS_MAX</a></strong></code>
 <div class="block">The max number of threads used for opening and closing stores or store
  files in parallel</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#IN_MEMORY">IN_MEMORY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#INDEX_KEY_MAGIC">INDEX_KEY_MAGIC</a></strong></code>
 <div class="block">Used as a magic return value while optimized index key feature enabled(HBASE-7845)</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#KEEP_SEQID_PERIOD">KEEP_SEQID_PERIOD</a></strong></code>
 <div class="block">Parameter name for # days to keep MVCC values during a major compaction</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#KEY_FOR_HOSTNAME_SEEN_BY_MASTER">KEY_FOR_HOSTNAME_SEEN_BY_MASTER</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LAST_ROW">LAST_ROW</a></strong></code>
 <div class="block">Used by scanners and others when they're trying to detect the end of a
  table</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LATEST_TIMESTAMP">LATEST_TIMESTAMP</a></strong></code>
 <div class="block">Timestamp to use when we want to refer to the latest cell.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LATEST_TIMESTAMP_BYTES">LATEST_TIMESTAMP_BYTES</a></strong></code>
 <div class="block">LATEST_TIMESTAMP in bytes form</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LIB_DIR">LIB_DIR</a></strong></code>
 <div class="block">The directory from which co-processor/custom filter jars can be loaded
  dynamically by the region servers.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LOAD_BALANCER_SLOP_KEY">LOAD_BALANCER_SLOP_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LOCALHOST">LOCALHOST</a></strong></code>
 <div class="block">Host name of the local machine</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LOCALHOST_IP">LOCALHOST_IP</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#LOG_REPLAY_WAIT_REGION_TIMEOUT">LOG_REPLAY_WAIT_REGION_TIMEOUT</a></strong></code>
 <div class="block">Conf key that specifies timeout value to wait for a region ready</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MAJOR_COMPACTION_PERIOD">MAJOR_COMPACTION_PERIOD</a></strong></code>
 <div class="block">Parameter name for how often a region should should perform a major compaction</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MASTER_HANDLER_COUNT">MASTER_HANDLER_COUNT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MASTER_IMPL">MASTER_IMPL</a></strong></code>
 <div class="block">Parameter name for what master implementation to use.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MASTER_INFO_PORT">MASTER_INFO_PORT</a></strong></code>
 <div class="block">Configuration key for master web API port</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MASTER_PORT">MASTER_PORT</a></strong></code>
 <div class="block">Parameter name for port master listens on.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MASTER_TYPE_BACKUP">MASTER_TYPE_BACKUP</a></strong></code>
 <div class="block">Parameter name for the master type being backup (waits for primary to go inactive).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MAX_ROW_LENGTH">MAX_ROW_LENGTH</a></strong></code>
 <div class="block">Max length a row can have because of the limitation in TFile.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MAXIMUM_VALUE_LENGTH">MAXIMUM_VALUE_LENGTH</a></strong></code>
 <div class="block">Maximum value length, enforced on KeyValue construction</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MERGEA_QUALIFIER">MERGEA_QUALIFIER</a></strong></code>
 <div class="block">The lower-half merge region column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MERGEB_QUALIFIER">MERGEB_QUALIFIER</a></strong></code>
 <div class="block">The upper-half merge region column qualifier</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#META_REPLICAS_NUM">META_REPLICAS_NUM</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#META_ROW_DELIMITER">META_ROW_DELIMITER</a></strong></code>
 <div class="block">delimiter used between portions of a region name</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#META_TABLE_NAME">META_TABLE_NAME</a></strong></code>
 <div class="block"><strong>Deprecated.</strong>&nbsp;
@@ -1245,404 +1249,410 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static short</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#META_VERSION">META_VERSION</a></strong></code>
 <div class="block">The current version of the meta table.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#META_VERSION_QUALIFIER">META_VERSION_QUALIFIER</a></strong></code>
 <div class="block">The meta table version column qualifier.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#METADATA">METADATA</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#METRICS_RIT_STUCK_WARNING_THRESHOLD">METRICS_RIT_STUCK_WARNING_THRESHOLD</a></strong></code>
 <div class="block">Region in Transition metrics threshold time</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MIGRATION_NAME">MIGRATION_NAME</a></strong></code>
 <div class="block">Any artifacts left from migration can be moved here</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MIN_KEEP_SEQID_PERIOD">MIN_KEEP_SEQID_PERIOD</a></strong></code>
 <div class="block">At least to keep MVCC values in hfiles for 5 days</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#MINUTE_IN_SECONDS">MINUTE_IN_SECONDS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#NAME">NAME</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#NINES">NINES</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#NO_NONCE">NO_NONCE</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#NO_SEQNUM">NO_SEQNUM</a></strong></code>
 <div class="block">Value indicating the server name was saved with no sequence number.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#NORMAL_QOS">NORMAL_QOS</a></strong></code>
 <div class="block">QOS attributes: these attributes are used to demarcate RPC call processing
  by different set of handlers.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#OLD_SNAPSHOT_DIR_NAME">OLD_SNAPSHOT_DIR_NAME</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#OLDEST_TIMESTAMP">OLDEST_TIMESTAMP</a></strong></code>
 <div class="block">Timestamp to use when we want to refer to the oldest cell.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#QOS_THRESHOLD">QOS_THRESHOLD</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#RECOVERED_EDITS_DIR">RECOVERED_EDITS_DIR</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_IMPL">REGION_IMPL</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT">REGION_SERVER_HANDLER_ABORT_ON_ERROR_PERCENT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_SERVER_HANDLER_COUNT">REGION_SERVER_HANDLER_COUNT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_SERVER_HIGH_PRIORITY_HANDLER_COUNT">REGION_SERVER_HIGH_PRIORITY_HANDLER_COUNT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_SERVER_IMPL">REGION_SERVER_IMPL</a></strong></code>
 <div class="block">Parameter name for what region server implementation to use.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_SERVER_REPLICATION_HANDLER_COUNT">REGION_SERVER_REPLICATION_HANDLER_COUNT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGION_SPLIT_THREADS_MAX">REGION_SPLIT_THREADS_MAX</a></strong></code>
 <div class="block">The max number of threads used for splitting storefiles in parallel during
  the region split process.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGIONINFO_QUALIFIER">REGIONINFO_QUALIFIER</a></strong></code>
 <div class="block">The regioninfo column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGIONINFO_QUALIFIER_STR">REGIONINFO_QUALIFIER_STR</a></strong></code>
 <div class="block">The RegionInfo qualifier as a string</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGIONSERVER_INFO_PORT">REGIONSERVER_INFO_PORT</a></strong></code>
 <div class="block">A configuration key for regionserver info port</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGIONSERVER_INFO_PORT_AUTO">REGIONSERVER_INFO_PORT_AUTO</a></strong></code>
 <div class="block">A flag that enables automatic selection of regionserver info port</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGIONSERVER_METRICS_PERIOD">REGIONSERVER_METRICS_PERIOD</a></strong></code>
 <div class="block">The period (in milliseconds) between computing region server point in time metrics</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REGIONSERVER_PORT">REGIONSERVER_PORT</a></strong></code>
 <div class="block">Parameter name for port region server listens on.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLAY_QOS">REPLAY_QOS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_BULKLOAD_ENABLE_DEFAULT">REPLICATION_BULKLOAD_ENABLE_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_BULKLOAD_ENABLE_KEY">REPLICATION_BULKLOAD_ENABLE_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_CLUSTER_ID">REPLICATION_CLUSTER_ID</a></strong></code>
 <div class="block">Replication cluster id of source cluster which uniquely identifies itself with peer cluster</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_CODEC_CONF_KEY">REPLICATION_CODEC_CONF_KEY</a></strong></code>
 <div class="block">Configuration key for setting replication codec class name</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_CONF_DIR">REPLICATION_CONF_DIR</a></strong></code>
 <div class="block">Directory where the source cluster file system client configuration are placed which is used by
  sink cluster to copy HFiles from source cluster file system</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_ENABLE_DEFAULT">REPLICATION_ENABLE_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_ENABLE_KEY">REPLICATION_ENABLE_KEY</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_QOS">REPLICATION_QOS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SCOPE_GLOBAL">REPLICATION_SCOPE_GLOBAL</a></strong></code>
 <div class="block">Scope tag for globally scoped data.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SCOPE_LOCAL">REPLICATION_SCOPE_LOCAL</a></strong></code>
 <div class="block">Scope tag for locally scoped data.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SERVICE_CLASSNAME_DEFAULT">REPLICATION_SERVICE_CLASSNAME_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SINK_SERVICE_CLASSNAME">REPLICATION_SINK_SERVICE_CLASSNAME</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SOURCE_MAXTHREADS_DEFAULT">REPLICATION_SOURCE_MAXTHREADS_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SOURCE_MAXTHREADS_KEY">REPLICATION_SOURCE_MAXTHREADS_KEY</a></strong></code>
 <div class="block">Maximum number of threads used by the replication source for shipping edits to the sinks</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#REPLICATION_SOURCE_SERVICE_CLASSNAME">REPLICATION_SOURCE_SERVICE_CLASSNAME</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#RETRY_BACKOFF">RETRY_BACKOFF</a></strong></code>
 <div class="block">Retrying we multiply hbase.client.pause setting by what we have in this array until we
  run out of array items.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#RPC_CODEC_CONF_KEY">RPC_CODEC_CONF_KEY</a></strong></code>
 <div class="block">Configuration key for setting RPC codec class name</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#RPC_CURRENT_VERSION">RPC_CURRENT_VERSION</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#RPC_HEADER">RPC_HEADER</a></strong></code>
 <div class="block">The first four bytes of Hadoop RPC connections</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SEQNUM_QUALIFIER">SEQNUM_QUALIFIER</a></strong></code>
 <div class="block">The open seqnum column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SEQNUM_QUALIFIER_STR">SEQNUM_QUALIFIER_STR</a></strong></code>
 <div class="block">The open seqnum column qualifier</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SERVER_QUALIFIER">SERVER_QUALIFIER</a></strong></code>
 <div class="block">The server column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SERVER_QUALIFIER_STR">SERVER_QUALIFIER_STR</a></strong></code>
 <div class="block">The server column qualifier</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SERVERNAME_QUALIFIER">SERVERNAME_QUALIFIER</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SERVERNAME_QUALIFIER_STR">SERVERNAME_QUALIFIER_STR</a></strong></code>
 <div class="block">The serverName column qualifier.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SNAPSHOT_DIR_NAME">SNAPSHOT_DIR_NAME</a></strong></code>
 <div class="block">Name of the directory to store all snapshots.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SOCKET_RETRY_WAIT_MS">SOCKET_RETRY_WAIT_MS</a></strong></code>
 <div class="block">The delay when re-trying a socket operation in a loop (HBASE-4712)</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SPLIT_LOGDIR_NAME">SPLIT_LOGDIR_NAME</a></strong></code>
 <div class="block">Used to construct the name of the splitlog directory for a region server</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SPLITA_QUALIFIER">SPLITA_QUALIFIER</a></strong></code>
 <div class="block">The lower-half split region column qualifier</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SPLITB_QUALIFIER">SPLITB_QUALIFIER</a></strong></code>
 <div class="block">The upper-half split region column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STARTCODE_QUALIFIER">STARTCODE_QUALIFIER</a></strong></code>
 <div class="block">The startcode column qualifier</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STARTCODE_QUALIFIER_STR">STARTCODE_QUALIFIER_STR</a></strong></code>
 <div class="block">The startcode column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATE_QUALIFIER">STATE_QUALIFIER</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATE_QUALIFIER_STR">STATE_QUALIFIER_STR</a></strong></code>
 <div class="block">The state column qualifier</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATUS_MULTICAST_ADDRESS">STATUS_MULTICAST_ADDRESS</a></strong></code>
 <div class="block">IP to use for the multicast status messages between the master and the clients.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATUS_MULTICAST_BIND_ADDRESS">STATUS_MULTICAST_BIND_ADDRESS</a></strong></code>
 <div class="block">The address to use for binding the local socket for receiving multicast.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATUS_MULTICAST_PORT">STATUS_MULTICAST_PORT</a></strong></code>
 <div class="block">The port to use for the multicast messages.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATUS_PUBLISHED">STATUS_PUBLISHED</a></strong></code>
 <div class="block">Setting to activate, or not, the publication of the status by the master.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#STATUS_PUBLISHED_DEFAULT">STATUS_PUBLISHED_DEFAULT</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#SYSTEMTABLE_QOS">SYSTEMTABLE_QOS</a></strong></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#TABLE_FAMILY">TABLE_FAMILY</a></strong></code>
 <div class="block">The catalog family</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#TABLE_FAMILY_STR">TABLE_FAMILY_STR</a></strong></code>
 <div class="block">The catalog family as a string</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#TABLE_MAX_ROWSIZE_DEFAULT">TABLE_MAX_ROWSIZE_DEFAULT</a></strong></code>
 <div class="block">Default max row size (1 Gb).</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#TABLE_MAX_ROWSIZE_KEY">TABLE_MAX_ROWSIZE_KEY</a></strong></code>
 <div class="block">Max size of single row for Get's or Scan's without in-row scanning flag set.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#TABLE_STATE_QUALIFIER">TABLE_STATE_QUALIFIER</a></strong></code>
 <div class="block">The serialized table state qualifier</div>
 </td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#TEMPORARY_FS_DIRECTORY_KEY">TEMPORARY_FS_DIRECTORY_KEY</a></strong></code>
+<div class="block">Config key for hbase temporary directory in hdfs</div>
+</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><strong><a href="../../../../org/apache/hadoop/hbase/HConstants.html#THREAD_WAKE_FREQUENCY">THREAD_WAKE_FREQUENCY</a></strong></code>
@@ -5141,13 +5151,33 @@ public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/
 <a name="ZK_SERVER_KERBEROS_PRINCIPAL">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>ZK_SERVER_KERBEROS_PRINCIPAL</h4>
 <pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.1255">ZK_SERVER_KERBEROS_PRINCIPAL</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.ZK_SERVER_KERBEROS_PRINCIPAL">Constant Field Values</a></dd></dl>
 </li>
 </ul>
+<a name="TEMPORARY_FS_DIRECTORY_KEY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TEMPORARY_FS_DIRECTORY_KEY</h4>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.1259">TEMPORARY_FS_DIRECTORY_KEY</a></pre>
+<div class="block">Config key for hbase temporary directory in hdfs</div>
+<dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.TEMPORARY_FS_DIRECTORY_KEY">Constant Field Values</a></dd></dl>
+</li>
+</ul>
+<a name="DEFAULT_TEMPORARY_HDFS_DIRECTORY">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>DEFAULT_TEMPORARY_HDFS_DIRECTORY</h4>
+<pre>public static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.1260">DEFAULT_TEMPORARY_HDFS_DIRECTORY</a></pre>
+</li>
+</ul>
 </li>
 </ul>
 </li>


[08/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html
index 9cddc0a..1240e3e 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.PutThread.html
@@ -27,8 +27,8 @@
 <span class="sourceLineNo">019</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam1;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam2;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertTrue;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertNull;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import static org.junit.Assert.fail;<a name="line.24"></a>
 <span class="sourceLineNo">025</span><a name="line.25"></a>
 <span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
@@ -61,19 +61,19 @@
 <span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.Get;<a name="line.54"></a>
 <span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Put;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Result;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.68"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Put;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.Result;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
 <span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>import org.junit.After;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import org.junit.Before;<a name="line.71"></a>
@@ -191,535 +191,539 @@
 <span class="sourceLineNo">183</span>   */<a name="line.183"></a>
 <span class="sourceLineNo">184</span>  @Test<a name="line.184"></a>
 <span class="sourceLineNo">185</span>  public void testIncrementMultiThreads() throws IOException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // run a with mixed column families (1 and 3 versions)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // create 25 threads, each will increment by its own quantity<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    int numThreads = 25;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    int incrementsPerThread = 1000;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    int expectedTotal = 0;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // create all threads<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      expectedTotal += (i * incrementsPerThread);<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>    // run all threads<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        all[i].join();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      } catch (InterruptedException e) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    assertICV(row, fam1, qual2, expectedTotal*2);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    assertICV(row, fam2, qual3, expectedTotal*3);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private void assertICV(byte [] row,<a name="line.221"></a>
-<span class="sourceLineNo">222</span>                         byte [] familiy,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>                         byte[] qualifier,<a name="line.223"></a>
-<span class="sourceLineNo">224</span>                         long amount) throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // run a get and see?<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    Get get = new Get(row);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    get.addColumn(familiy, qualifier);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    Result result = region.get(get);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    assertEquals(1, result.size());<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Cell kv = result.rawCells()[0];<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    assertEquals(amount, r);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      byte[] ... families)<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    byte[] ... families)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  throws IOException {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    int i=0;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    for(byte [] family : families) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      htd.addFamily(hcd);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * A thread that makes a few increment calls<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static class Incrementer extends Thread {<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final Region region;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final int numIncrements;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final int amount;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">186</span>    boolean fast = true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // run a with mixed column families (1 and 3 versions)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // Create 100 threads, each will increment by its own quantity. All 100 threads update the<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // same row over two column families.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    int numThreads = 100;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    int incrementsPerThread = 1000;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    int expectedTotal = 0;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // create all threads<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      expectedTotal += (i * incrementsPerThread);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    // run all threads<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      try {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        all[i].join();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      } catch (InterruptedException e) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal, fast);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    assertICV(row, fam1, qual2, expectedTotal*2, fast);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    assertICV(row, fam2, qual3, expectedTotal*3, fast);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private void assertICV(byte [] row,<a name="line.223"></a>
+<span class="sourceLineNo">224</span>                         byte [] familiy,<a name="line.224"></a>
+<span class="sourceLineNo">225</span>                         byte[] qualifier,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>                         long amount,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>                         boolean fast) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    // run a get and see?<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    Get get = new Get(row);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    if (fast) get.setIsolationLevel(IsolationLevel.READ_UNCOMMITTED);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    get.addColumn(familiy, qualifier);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Result result = region.get(get);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    assertEquals(1, result.size());<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    Cell kv = result.rawCells()[0];<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    assertEquals(amount, r);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      byte[] ... families)<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    throws IOException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    byte[] ... families)<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    int i=0;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    for(byte [] family : families) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      htd.addFamily(hcd);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<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 thread that makes increment calls always on the same row, this.row against two column<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * families on this row.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public static class Incrementer extends Thread {<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public Incrementer(Region region,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        int threadNumber, int amount, int numIncrements) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      super("incrementer." + threadNumber);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.region = region;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      this.numIncrements = numIncrements;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.amount = amount;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      setDaemon(true);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    public void run() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        try {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          Increment inc = new Increment(row);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          inc.addColumn(fam1, qual1, amount);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>          // verify: Make sure we only see completed increments<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          Get g = new Get(row);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          Result result = region.get(g);<a name="line.288"></a>
+<span class="sourceLineNo">266</span>    private final Region region;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    private final int numIncrements;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final int amount;<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>    public Incrementer(Region region, int threadNumber, int amount, int numIncrements) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      super("Incrementer." + threadNumber);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      this.region = region;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this.numIncrements = numIncrements;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this.amount = amount;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      setDaemon(true);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public void run() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        try {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          Increment inc = new Increment(row);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          inc.addColumn(fam1, qual1, amount);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          Result result = region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.288"></a>
 <span class="sourceLineNo">289</span>          if (result != null) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            assertTrue(result.getValue(fam1, qual1) != null);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            assertTrue(result.getValue(fam1, qual2) != null);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.293"></a>
-<span class="sourceLineNo">294</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } catch (IOException e) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          e.printStackTrace();<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>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  @Test<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  public void testAppendMultiThreads() throws IOException {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    // run a with mixed column families (1 and 3 versions)<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    int numThreads = 100;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int opsPerThread = 100;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    final byte[] val = new byte[]{1};<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    // create all threads<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        public void run() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            try {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>              Append a = new Append(row);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>              a.add(fam1, qual1, val);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              a.add(fam1, qual2, val);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>              a.add(fam2, qual3, val);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>              Get g = new Get(row);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              Result result = region.get(g);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.333"></a>
-<span class="sourceLineNo">334</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.334"></a>
-<span class="sourceLineNo">335</span>            } catch (IOException e) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>              e.printStackTrace();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              failures.incrementAndGet();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>              fail();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>            }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      };<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // run all threads<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      try {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        all[i].join();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Get g = new Get(row);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    Result result = region.get(g);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // create 10 threads, each will alternate between adding and<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // removing a column<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    int numThreads = 10;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    int opsPerThread = 250;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    // create all threads<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        @Override<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        public void run() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>          boolean op = true;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            try {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>              // throw in some flushes<a name="line.388"></a>
-<span class="sourceLineNo">389</span>              if (i%10==0) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>                synchronized(region) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>                  LOG.debug("flushing");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>                  region.flush(true);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>                  if (i%100==0) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>                    region.compact(false);<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>              }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>              long ts = timeStamps.incrementAndGet();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>              RowMutations rm = new RowMutations(row);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>              if (op) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>                Put p = new Put(row, ts);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>                p.addColumn(fam1, qual1, value1);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>                rm.add(p);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>                Delete d = new Delete(row);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>                d.addColumns(fam1, qual2, ts);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>                rm.add(d);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              } else {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                Delete d = new Delete(row);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                d.addColumns(fam1, qual1, ts);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>                rm.add(d);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>                Put p = new Put(row, ts);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>                p.addColumn(fam1, qual2, value2);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>                rm.add(p);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>              }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>              region.mutateRow(rm);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>              op ^= true;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>              // check: should always see exactly one column<a name="line.421"></a>
-<span class="sourceLineNo">422</span>              Get g = new Get(row);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>              Result r = region.get(g);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>              if (r.size() != 1) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                LOG.debug(r);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>                failures.incrementAndGet();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>                fail();<a name="line.427"></a>
-<span class="sourceLineNo">428</span>              }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>            } catch (IOException e) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>              e.printStackTrace();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>              failures.incrementAndGet();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>              fail();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>            }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      };<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // run all threads<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      all[i].start();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // wait for all threads to finish<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      try {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        all[i].join();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>  /**<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * Test multi-threaded region mutations.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  @Test<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // create 10 threads, each will alternate between adding and<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // removing a column<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    int numThreads = 10;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    int opsPerThread = 250;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // create all threads<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        public void run() {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          boolean op = true;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            try {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>              // throw in some flushes<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              if (i%10==0) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>                synchronized(region) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>                  LOG.debug("flushing");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>                  region.flush(true);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>                  if (i%100==0) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>                    region.compact(false);<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>              long ts = timeStamps.incrementAndGet();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              if (op) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>                Put p = new Put(row2, ts);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>                p.addColumn(fam1, qual1, value1);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>                mrm.add(p);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>                Delete d = new Delete(row);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>                d.addColumns(fam1, qual1, ts);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>                mrm.add(d);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>              } else {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>                Delete d = new Delete(row2);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>                d.addColumns(fam1, qual1, ts);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>                mrm.add(d);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>                Put p = new Put(row, ts);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                p.addColumn(fam1, qual1, value2);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>                mrm.add(p);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>              }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>              op ^= true;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>              // check: should always see exactly one column<a name="line.514"></a>
-<span class="sourceLineNo">515</span>              Scan s = new Scan(row);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>              RegionScanner rs = region.getScanner(s);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>              while (rs.next(r))<a name="line.518"></a>
-<span class="sourceLineNo">519</span>                ;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              rs.close();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              if (r.size() != 1) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>                LOG.debug(r);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>                failures.incrementAndGet();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>                fail();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>            } catch (IOException e) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>              e.printStackTrace();<a name="line.527"></a>
-<span class="sourceLineNo">528</span>              failures.incrementAndGet();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>              fail();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>            }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>          }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      };<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // run all threads<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      all[i].start();<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    // wait for all threads to finish<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      try {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        all[i].join();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public static class AtomicOperation extends Thread {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    protected final Region region;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    protected final int numOps;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    protected final AtomicLong timeStamps;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    protected final AtomicInteger failures;<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    protected final Random r = new Random();<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        AtomicInteger failures) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      this.region = region;<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.numOps = numOps;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      this.timeStamps = timeStamps;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      this.failures = failures;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  }<a name="line.565"></a>
-<span class="sourceLineNo">566</span>  <a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private enum TestStep {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    PUT_COMPLETED,         // put complete (released RowLock, but may not have advanced MVCC).<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    CHECKANDPUT_STARTED,   // began checkAndPut: if 10 -&gt; 11<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    CHECKANDPUT_COMPLETED  // completed checkAndPut<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    // NOTE: at the end of these steps, the value of the cell should be 50, not 11!<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  private static volatile TestStep testStep = TestStep.INIT;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>  private final String family = "f1";<a name="line.577"></a>
-<span class="sourceLineNo">578</span>     <a name="line.578"></a>
-<span class="sourceLineNo">579</span>  /**<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Test written as a verifier for HBASE-7051, CheckAndPut should properly read<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * MVCC. <a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * <a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * Moved into TestAtomicOperation from its original location, TestHBase7051<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testPutAndCheckAndPutInParallel() throws Exception {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    final String tableName = "testPutAndCheckAndPut";<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    conf.setClass(HConstants.REGION_IMPL, MockHRegion.class, HeapSize.class);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName))<a name="line.590"></a>
-<span class="sourceLineNo">591</span>        .addFamily(new HColumnDescriptor(family));<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    this.region = TEST_UTIL.createLocalHRegion(htd, null, null);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Put[] puts = new Put[1];<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    Put put = new Put(Bytes.toBytes("r1"));<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("10"));<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    puts[0] = put;<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    <a name="line.597"></a>
-<span class="sourceLineNo">598</span>    region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    MultithreadedTestUtil.TestContext ctx =<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      new MultithreadedTestUtil.TestContext(conf);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    ctx.addThread(new PutThread(ctx, region));<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    ctx.addThread(new CheckAndPutThread(ctx, region));<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    ctx.startThreads();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    while (testStep != TestStep.CHECKANDPUT_COMPLETED) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      Thread.sleep(100);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    ctx.stop();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    Scan s = new Scan();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    RegionScanner scanner = region.getScanner(s);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    List&lt;Cell&gt; results = new ArrayList&lt;Cell&gt;();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    ScannerContext scannerContext = ScannerContext.newBuilder().setBatchLimit(2).build();<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    scanner.next(results, scannerContext);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    for (Cell keyValue : results) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      assertEquals("50",Bytes.toString(CellUtil.cloneValue(keyValue)));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  private class PutThread extends TestThread {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    private Region region;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    PutThread(TestContext ctx, Region region) {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      super(ctx);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      this.region = region;<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    }<a name="line.623"></a>
-<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span>    public void doWork() throws Exception {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      Put[] puts = new Put[1];<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("50"));<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      puts[0] = put;<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      testStep = TestStep.PUT_STARTED;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    }<a name="line.632"></a>
-<span class="sourceLineNo">633</span>  }<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>  private class CheckAndPutThread extends TestThread {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    private Region region;<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    CheckAndPutThread(TestContext ctx, Region region) {<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      super(ctx);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      this.region = region;<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   }<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>    public void doWork() throws Exception {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      Put[] puts = new Put[1];<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("11"));<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      puts[0] = put;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      while (testStep != TestStep.PUT_COMPLETED) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        Thread.sleep(100);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      testStep = TestStep.CHECKANDPUT_STARTED;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      region.checkAndMutate(Bytes.toBytes("r1"), Bytes.toBytes(family), Bytes.toBytes("q1"),<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("10")), put, true);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      testStep = TestStep.CHECKANDPUT_COMPLETED;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>  public static class MockHRegion extends HRegion {<a name="line.657"></a>
-<span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    public MockHRegion(Path tableDir, WAL log, FileSystem fs, Configuration conf,<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        final HRegionInfo regionInfo, final HTableDescriptor htd, RegionServerServices rsServices) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      super(tableDir, log, fs, conf, regionInfo, htd, rsServices);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    @Override<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    public RowLock getRowLock(final byte[] row, boolean readLock) throws IOException {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      if (testStep == TestStep.CHECKANDPUT_STARTED) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        latch.countDown();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      return new WrappedRowLock(super.getRowLock(row, readLock));<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    <a name="line.671"></a>
-<span class="sourceLineNo">672</span>    public class WrappedRowLock implements RowLock {<a name="line.672"></a>
-<span class="sourceLineNo">673</span><a name="line.673"></a>
-<span class="sourceLineNo">674</span>      private final RowLock rowLock;<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>      private WrappedRowLock(RowLock rowLock) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>        this.rowLock = rowLock;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      }<a name="line.678"></a>
+<span class="sourceLineNo">290</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.291"></a>
+<span class="sourceLineNo">292</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.295"></a>
+<span class="sourceLineNo">296</span>               Bytes.toLong(result.getValue(fam1, qual2)));<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            long fam1Increment = Bytes.toLong(result.getValue(fam1, qual1))*3;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>            long fam2Increment = Bytes.toLong(result.getValue(fam2, qual3));<a name="line.298"></a>
+<span class="sourceLineNo">299</span>            assertEquals("fam1=" + fam1Increment + ", fam2=" + fam2Increment,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              fam1Increment, fam2Increment);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        } catch (IOException e) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          e.printStackTrace();<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>    }<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>  @Test<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public void testAppendMultiThreads() throws IOException {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // run a with mixed column families (1 and 3 versions)<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    int numThreads = 100;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    int opsPerThread = 100;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    final byte[] val = new byte[]{1};<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    // create all threads<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        @Override<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        public void run() {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>            try {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>              Append a = new Append(row);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>              a.add(fam1, qual1, val);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>              a.add(fam1, qual2, val);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>              a.add(fam2, qual3, val);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>              Get g = new Get(row);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>              Result result = region.get(g);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.337"></a>
+<span class="sourceLineNo">338</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.338"></a>
+<span class="sourceLineNo">339</span>            } catch (IOException e) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>              e.printStackTrace();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              failures.incrementAndGet();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>              fail();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>            }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      };<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    // run all threads<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      all[i].start();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    // wait for all threads to finish<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      try {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        all[i].join();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    Get g = new Get(row);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    Result result = region.get(g);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  @Test<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    // create 10 threads, each will alternate between adding and<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // removing a column<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    int numThreads = 10;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    int opsPerThread = 250;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // create all threads<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        @Override<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        public void run() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          boolean op = true;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            try {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              // throw in some flushes<a name="line.392"></a>
+<span class="sourceLineNo">393</span>              if (i%10==0) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>                synchronized(region) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>                  LOG.debug("flushing");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>                  region.flush(true);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>                  if (i%100==0) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>                    region.compact(false);<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>              }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>              long ts = timeStamps.incrementAndGet();<a name="line.402"></a>
+<span class="sourceLineNo">403</span>              RowMutations rm = new RowMutations(row);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              if (op) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                Put p = new Put(row, ts);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                p.addColumn(fam1, qual1, value1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>                rm.add(p);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>                Delete d = new Delete(row);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>                d.addColumns(fam1, qual2, ts);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>                rm.add(d);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>              } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>                Delete d = new Delete(row);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>                d.addColumns(fam1, qual1, ts);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>                rm.add(d);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>                Put p = new Put(row, ts);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>                p.addColumn(fam1, qual2, value2);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                rm.add(p);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>              }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>              region.mutateRow(rm);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>              op ^= true;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>              // check: should always see exactly one column<a name="line.425"></a>
+<span class="sourceLineNo">426</span>              Get g = new Get(row);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>              Result r = region.get(g);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>              if (r.size() != 1) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>                LOG.debug(r);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>                failures.incrementAndGet();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>                fail();<a name="line.431"></a>
+<span class="sourceLineNo">432</span>              }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>            } catch (IOException e) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>              e.printStackTrace();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>              failures.incrementAndGet();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>              fail();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>            }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      };<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // run all threads<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      try {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        all[i].join();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } catch (InterruptedException e) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(0, failures.get());<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><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * Test multi-threaded region mutations.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  @Test<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    // create 10 threads, each will alternate between adding and<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    // removing a column<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    int numThreads = 10;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    int opsPerThread = 250;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // create all threads<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        @Override<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        public void run() {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          boolean op = true;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>            try {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>              // throw in some flushes<a name="line.485"></a>
+<span class="sourceLineNo">486</span>              if (i%10==0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>                synchronized(region) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>                  LOG.debug("flushing");<a name="line.488"></a>
+<span class="sourceLineNo">489</span>                  region.flush(true);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>                  if (i%100==0) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>                    region.compact(false);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>                  }<a name="line.492"></a>
+<span class="sourceLineNo">493</span>                }<a name="line.493"></a>
+<span class="sourceLineNo">494</span>              }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>              long ts = timeStamps.incrementAndGet();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>              if (op) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>                Put p = new Put(row2, ts);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>                p.addColumn(fam1, qual1, value1);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>                mrm.add(p);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>                Delete d = new Delete(row);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>                d.addColumns(fam1, qual1, ts);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>                mrm.add(d);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>              } else {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>                Delete d = new Delete(row2);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>                d.addColumns(fam1, qual1, ts);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>                mrm.add(d);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>                Put p = new Put(row, ts);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>                p.addColumn(fam1, qual1, value2);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>                mrm.add(p);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>              }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>              op ^= true;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>              // check: should always see exactly one column<a name="line.518"></a>
+<span class="sourceLineNo">519</span>              Scan s = new Scan(row);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>              RegionScanner rs = region.getScanner(s);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>              while (rs.next(r))<a name="line.522"></a>
+<span class="sourceLineNo">523</span>                ;<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              rs.close();<a name="line.524"></a>
+<span class="sourceLineNo">525</span>              if (r.size() != 1) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>                LOG.debug(r);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>                failures.incrementAndGet();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>                fail();<a name="line.528"></a>
+<span class="sourceLineNo">529</span>              }<a name="line.529"></a>
+<span class="sourceLineNo">530</span>            } catch (IOException e) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>              e.printStackTrace();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>              failures.incrementAndGet();<a name="line.532"></a>
+<span class="sourceLineNo">533</span>              fail();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>          }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        }<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      };<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span>    // run all threads<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      all[i].start();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>    // wait for all threads to finish<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      try {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>        all[i].join();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      } catch (InterruptedException e) {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    assertEquals(0, failures.get());<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  public static class AtomicOperation extends Thread {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    protected final Region region;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    protected final int numOps;<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    protected final AtomicLong timeStamps;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    protected final AtomicInteger failures;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    protected final Random r = new Random();<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>        AtomicInteger failures) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      this.region = region;<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      this.numOps = numOps;<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.timeStamps = timeStamps;<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      this.failures = failures;<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>  <a name="line.570"></a>
+<span class="sourceLineNo">571</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private enum TestStep {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    PUT_COMPLETED,         // put complete (released RowLock, but may not have 

<TRUNCATED>

[14/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html
index f045a97..5692397 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html
@@ -357,817 +357,818 @@
 <span class="sourceLineNo">349</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.349"></a>
 <span class="sourceLineNo">350</span>  public void testJobConfiguration() throws Exception {<a name="line.350"></a>
 <span class="sourceLineNo">351</span>    Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    conf.set("hbase.fs.tmp.dir", util.getDataTestDir("testJobConfiguration").toString());<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    Job job = new Job(conf);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    job.setWorkingDirectory(util.getDataTestDir("testJobConfiguration"));<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    Table table = Mockito.mock(Table.class);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    RegionLocator regionLocator = Mockito.mock(RegionLocator.class);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    setupMockStartKeys(regionLocator);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    setupMockTableName(regionLocator);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals(job.getNumReduceTasks(), 4);<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>  private byte [][] generateRandomStartKeys(int numKeys) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    Random random = new Random();<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    byte[][] ret = new byte[numKeys][];<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    // first region start key is always empty<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    ret[0] = HConstants.EMPTY_BYTE_ARRAY;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    for (int i = 1; i &lt; numKeys; i++) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      ret[i] =<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        PerformanceEvaluation.generateData(random, PerformanceEvaluation.DEFAULT_VALUE_LENGTH);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    return ret;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  }<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private byte[][] generateRandomSplitKeys(int numKeys) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    Random random = new Random();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    byte[][] ret = new byte[numKeys][];<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    for (int i = 0; i &lt; numKeys; i++) {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      ret[i] =<a name="line.379"></a>
-<span class="sourceLineNo">380</span>          PerformanceEvaluation.generateData(random, PerformanceEvaluation.DEFAULT_VALUE_LENGTH);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    return ret;<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>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  public void testMRIncrementalLoad() throws Exception {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    LOG.info("\nStarting test testMRIncrementalLoad\n");<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    doIncrementalLoadTest(false, false);<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>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  public void testMRIncrementalLoadWithSplit() throws Exception {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    LOG.info("\nStarting test testMRIncrementalLoadWithSplit\n");<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    doIncrementalLoadTest(true, false);<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>  /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * Test for HFileOutputFormat2.LOCALITY_SENSITIVE_CONF_KEY = true<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * This test could only check the correctness of original logic if LOCALITY_SENSITIVE_CONF_KEY<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * is set to true. Because MiniHBaseCluster always run with single hostname (and different ports),<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * it's not possible to check the region locality by comparing region locations and DN hostnames.<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * When MiniHBaseCluster supports explicit hostnames parameter (just like MiniDFSCluster does),<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * we could test region locality features more easily.<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   */<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public void testMRIncrementalLoadWithLocality() throws Exception {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    LOG.info("\nStarting test testMRIncrementalLoadWithLocality\n");<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    doIncrementalLoadTest(false, true);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    doIncrementalLoadTest(true, true);<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>  private void doIncrementalLoadTest(boolean shouldChangeRegions, boolean shouldKeepLocality)<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      throws Exception {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    util = new HBaseTestingUtility();<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    Configuration conf = util.getConfiguration();<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    conf.setBoolean(HFileOutputFormat2.LOCALITY_SENSITIVE_CONF_KEY, shouldKeepLocality);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    int hostCount = 1;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    int regionNum = 5;<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    if(shouldKeepLocality) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      // We should change host count higher than hdfs replica count when MiniHBaseCluster supports<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      // explicit hostnames parameter just like MiniDFSCluster does.<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      hostCount = 3;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      regionNum = 20;<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>    byte[][] splitKeys = generateRandomSplitKeys(regionNum - 1);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    String[] hostnames = new String[hostCount];<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    for(int i = 0; i &lt; hostCount; ++i) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      hostnames[i] = "datanode_" + i;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    util.startMiniCluster(1, hostCount, hostnames);<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>    Table table = util.createTable(TABLE_NAME, FAMILIES, splitKeys);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Path testDir = util.getDataTestDirOnTestFS("testLocalMRIncrementalLoad");<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    try (RegionLocator r = util.getConnection().getRegionLocator(TABLE_NAME); Admin admin =<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        util.getConnection().getAdmin();) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      assertEquals("Should start with empty table", 0, util.countRows(table));<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      int numRegions = r.getStartKeys().length;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      assertEquals("Should make " + regionNum + " regions", numRegions, regionNum);<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>      // Generate the bulk load files<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      runIncrementalPELoad(conf, table.getTableDescriptor(), r, testDir);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // This doesn't write into the table, just makes files<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      assertEquals("HFOF should not touch actual table", 0, util.countRows(table));<a name="line.444"></a>
-<span class="sourceLineNo">445</span><a name="line.445"></a>
-<span class="sourceLineNo">446</span>      // Make sure that a directory was created for every CF<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      int dir = 0;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      for (FileStatus f : testDir.getFileSystem(conf).listStatus(testDir)) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        for (byte[] family : FAMILIES) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          if (Bytes.toString(family).equals(f.getPath().getName())) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>            ++dir;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        }<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      assertEquals("Column family not found in FS.", FAMILIES.length, dir);<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>      // handle the split case<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      if (shouldChangeRegions) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        LOG.info("Changing regions in table");<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        admin.disableTable(table.getName());<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        while(util.getMiniHBaseCluster().getMaster().getAssignmentManager().<a name="line.461"></a>
-<span class="sourceLineNo">462</span>            getRegionStates().isRegionsInTransition()) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>          Threads.sleep(200);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          LOG.info("Waiting on table to finish disabling");<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        }<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        util.deleteTable(table.getName());<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        byte[][] newSplitKeys = generateRandomSplitKeys(14);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        table = util.createTable(TABLE_NAME, FAMILIES, newSplitKeys);<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>        while (util.getConnection().getRegionLocator(TABLE_NAME)<a name="line.470"></a>
-<span class="sourceLineNo">471</span>            .getAllRegionLocations().size() != 15 ||<a name="line.471"></a>
-<span class="sourceLineNo">472</span>            !admin.isTableAvailable(table.getName())) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          Thread.sleep(200);<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          LOG.info("Waiting for new region assignment to happen");<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>      // Perform the actual load<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      new LoadIncrementalHFiles(conf).doBulkLoad(testDir, admin, table, r);<a name="line.479"></a>
-<span class="sourceLineNo">480</span><a name="line.480"></a>
-<span class="sourceLineNo">481</span>      // Ensure data shows up<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      int expectedRows = NMapInputFormat.getNumMapTasks(conf) * ROWSPERSPLIT;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      assertEquals("LoadIncrementalHFiles should put expected data in table",<a name="line.483"></a>
-<span class="sourceLineNo">484</span>          expectedRows, util.countRows(table));<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      Scan scan = new Scan();<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      ResultScanner results = table.getScanner(scan);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      for (Result res : results) {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        assertEquals(FAMILIES.length, res.rawCells().length);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        Cell first = res.rawCells()[0];<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        for (Cell kv : res.rawCells()) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>          assertTrue(CellUtil.matchingRow(first, kv));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          assertTrue(Bytes.equals(CellUtil.cloneValue(first), CellUtil.cloneValue(kv)));<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      results.close();<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      String tableDigestBefore = util.checksumRows(table);<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>      // Check region locality<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      HDFSBlocksDistribution hbd = new HDFSBlocksDistribution();<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      for (HRegion region : util.getHBaseCluster().getRegions(TABLE_NAME)) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>        hbd.add(region.getHDFSBlocksDistribution());<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      }<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      for (String hostname : hostnames) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        float locality =  hbd.getBlockLocalityIndex(hostname);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        LOG.info("locality of [" + hostname + "]: " + locality);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        assertEquals(100, (int) (locality * 100));<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      }<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>      // Cause regions to reopen<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      admin.disableTable(TABLE_NAME);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      while (!admin.isTableDisabled(TABLE_NAME)) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        Thread.sleep(200);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        LOG.info("Waiting for table to disable");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      admin.enableTable(TABLE_NAME);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>      util.waitTableAvailable(TABLE_NAME);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>      assertEquals("Data should remain after reopening of regions",<a name="line.517"></a>
-<span class="sourceLineNo">518</span>          tableDigestBefore, util.checksumRows(table));<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    } finally {<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      testDir.getFileSystem(conf).delete(testDir, true);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      util.deleteTable(TABLE_NAME);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      util.shutdownMiniCluster();<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span>  }<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>  private void runIncrementalPELoad(Configuration conf, HTableDescriptor tableDescriptor,<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      RegionLocator regionLocator, Path outDir) throws IOException, UnsupportedEncodingException,<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      InterruptedException, ClassNotFoundException {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    Job job = new Job(conf, "testLocalMRIncrementalLoad");<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    job.setWorkingDirectory(util.getDataTestDirOnTestFS("runIncrementalPELoad"));<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    job.getConfiguration().setStrings("io.serializations", conf.get("io.serializations"),<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        MutationSerialization.class.getName(), ResultSerialization.class.getName(),<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        KeyValueSerialization.class.getName());<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    setupRandomGeneratorMapper(job);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    HFileOutputFormat2.configureIncrementalLoad(job, tableDescriptor, regionLocator);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    FileOutputFormat.setOutputPath(job, outDir);<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>    assertFalse(util.getTestFileSystem().exists(outDir)) ;<a name="line.538"></a>
-<span class="sourceLineNo">539</span><a name="line.539"></a>
-<span class="sourceLineNo">540</span>    assertEquals(regionLocator.getAllRegionLocations().size(), job.getNumReduceTasks());<a name="line.540"></a>
-<span class="sourceLineNo">541</span><a name="line.541"></a>
-<span class="sourceLineNo">542</span>    assertTrue(job.waitForCompletion(true));<a name="line.542"></a>
-<span class="sourceLineNo">543</span>  }<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>  /**<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * Test for {@link HFileOutputFormat2#configureCompression(org.apache.hadoop.hbase.client.Table,<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * Configuration)} and {@link HFileOutputFormat2#createFamilyCompressionMap<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * (Configuration)}.<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * Tests that the compression map is correctly serialized into<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * and deserialized from configuration<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   *<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * @throws IOException<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   */<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.554"></a>
-<span class="sourceLineNo">555</span>  public void testSerializeDeserializeFamilyCompressionMap() throws IOException {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    for (int numCfs = 0; numCfs &lt;= 3; numCfs++) {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      Map&lt;String, Compression.Algorithm&gt; familyToCompression =<a name="line.558"></a>
-<span class="sourceLineNo">559</span>          getMockColumnFamiliesForCompression(numCfs);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      Table table = Mockito.mock(HTable.class);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      setupMockColumnFamiliesForCompression(table, familyToCompression);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      HFileOutputFormat2.configureCompression(conf, table.getTableDescriptor());<a name="line.562"></a>
-<span class="sourceLineNo">563</span><a name="line.563"></a>
-<span class="sourceLineNo">564</span>      // read back family specific compression setting from the configuration<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      Map&lt;byte[], Algorithm&gt; retrievedFamilyToCompressionMap = HFileOutputFormat2<a name="line.565"></a>
-<span class="sourceLineNo">566</span>          .createFamilyCompressionMap(conf);<a name="line.566"></a>
-<span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>      // test that we have a value for all column families that matches with the<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      // used mock values<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      for (Entry&lt;String, Algorithm&gt; entry : familyToCompression.entrySet()) {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        assertEquals("Compression configuration incorrect for column family:"<a name="line.571"></a>
-<span class="sourceLineNo">572</span>            + entry.getKey(), entry.getValue(),<a name="line.572"></a>
-<span class="sourceLineNo">573</span>            retrievedFamilyToCompressionMap.get(entry.getKey().getBytes()));<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>
-<span class="sourceLineNo">576</span>  }<a name="line.576"></a>
-<span class="sourceLineNo">577</span><a name="line.577"></a>
-<span class="sourceLineNo">578</span>  private void setupMockColumnFamiliesForCompression(Table table,<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      Map&lt;String, Compression.Algorithm&gt; familyToCompression) throws IOException {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    HTableDescriptor mockTableDescriptor = new HTableDescriptor(TABLE_NAME);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    for (Entry&lt;String, Compression.Algorithm&gt; entry : familyToCompression.entrySet()) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      mockTableDescriptor.addFamily(new HColumnDescriptor(entry.getKey())<a name="line.582"></a>
-<span class="sourceLineNo">583</span>          .setMaxVersions(1)<a name="line.583"></a>
-<span class="sourceLineNo">584</span>          .setCompressionType(entry.getValue())<a name="line.584"></a>
-<span class="sourceLineNo">585</span>          .setBlockCacheEnabled(false)<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          .setTimeToLive(0));<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    }<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    Mockito.doReturn(mockTableDescriptor).when(table).getTableDescriptor();<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
-<span class="sourceLineNo">590</span><a name="line.590"></a>
-<span class="sourceLineNo">591</span>  /**<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   * @return a map from column family names to compression algorithms for<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   *         testing column family compression. Column family names have special characters<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   */<a name="line.594"></a>
-<span class="sourceLineNo">595</span>  private Map&lt;String, Compression.Algorithm&gt;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      getMockColumnFamiliesForCompression (int numCfs) {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    Map&lt;String, Compression.Algorithm&gt; familyToCompression<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      = new HashMap&lt;String, Compression.Algorithm&gt;();<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    // use column family names having special characters<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    if (numCfs-- &gt; 0) {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      familyToCompression.put("Family1!@#!@#&amp;", Compression.Algorithm.LZO);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    }<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    if (numCfs-- &gt; 0) {<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      familyToCompression.put("Family2=asdads&amp;!AASD", Compression.Algorithm.SNAPPY);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    if (numCfs-- &gt; 0) {<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      familyToCompression.put("Family2=asdads&amp;!AASD", Compression.Algorithm.GZ);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    }<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    if (numCfs-- &gt; 0) {<a name="line.609"></a>
-<span class="sourceLineNo">610</span>      familyToCompression.put("Family3", Compression.Algorithm.NONE);<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    }<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    return familyToCompression;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  }<a name="line.613"></a>
-<span class="sourceLineNo">614</span><a name="line.614"></a>
+<span class="sourceLineNo">352</span>    conf.set(HConstants.TEMPORARY_FS_DIRECTORY_KEY, util.getDataTestDir("testJobConfiguration")<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        .toString());<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Job job = new Job(conf);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    job.setWorkingDirectory(util.getDataTestDir("testJobConfiguration"));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    Table table = Mockito.mock(Table.class);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    RegionLocator regionLocator = Mockito.mock(RegionLocator.class);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    setupMockStartKeys(regionLocator);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    setupMockTableName(regionLocator);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    assertEquals(job.getNumReduceTasks(), 4);<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>  private byte [][] generateRandomStartKeys(int numKeys) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    Random random = new Random();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    byte[][] ret = new byte[numKeys][];<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // first region start key is always empty<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    ret[0] = HConstants.EMPTY_BYTE_ARRAY;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    for (int i = 1; i &lt; numKeys; i++) {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      ret[i] =<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        PerformanceEvaluation.generateData(random, PerformanceEvaluation.DEFAULT_VALUE_LENGTH);<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    }<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    return ret;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>  private byte[][] generateRandomSplitKeys(int numKeys) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    Random random = new Random();<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    byte[][] ret = new byte[numKeys][];<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    for (int i = 0; i &lt; numKeys; i++) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      ret[i] =<a name="line.380"></a>
+<span class="sourceLineNo">381</span>          PerformanceEvaluation.generateData(random, PerformanceEvaluation.DEFAULT_VALUE_LENGTH);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>    }<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    return ret;<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>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.386"></a>
+<span class="sourceLineNo">387</span>  public void testMRIncrementalLoad() throws Exception {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    LOG.info("\nStarting test testMRIncrementalLoad\n");<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    doIncrementalLoadTest(false, false);<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>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.392"></a>
+<span class="sourceLineNo">393</span>  public void testMRIncrementalLoadWithSplit() throws Exception {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    LOG.info("\nStarting test testMRIncrementalLoadWithSplit\n");<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    doIncrementalLoadTest(true, false);<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>  /**<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * Test for HFileOutputFormat2.LOCALITY_SENSITIVE_CONF_KEY = true<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * This test could only check the correctness of original logic if LOCALITY_SENSITIVE_CONF_KEY<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * is set to true. Because MiniHBaseCluster always run with single hostname (and different ports),<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   * it's not possible to check the region locality by comparing region locations and DN hostnames.<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * When MiniHBaseCluster supports explicit hostnames parameter (just like MiniDFSCluster does),<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * we could test region locality features more easily.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  public void testMRIncrementalLoadWithLocality() throws Exception {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    LOG.info("\nStarting test testMRIncrementalLoadWithLocality\n");<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    doIncrementalLoadTest(false, true);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    doIncrementalLoadTest(true, true);<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>  private void doIncrementalLoadTest(boolean shouldChangeRegions, boolean shouldKeepLocality)<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      throws Exception {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    util = new HBaseTestingUtility();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    Configuration conf = util.getConfiguration();<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    conf.setBoolean(HFileOutputFormat2.LOCALITY_SENSITIVE_CONF_KEY, shouldKeepLocality);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    int hostCount = 1;<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    int regionNum = 5;<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    if(shouldKeepLocality) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      // We should change host count higher than hdfs replica count when MiniHBaseCluster supports<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      // explicit hostnames parameter just like MiniDFSCluster does.<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      hostCount = 3;<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      regionNum = 20;<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>    byte[][] splitKeys = generateRandomSplitKeys(regionNum - 1);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    String[] hostnames = new String[hostCount];<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    for(int i = 0; i &lt; hostCount; ++i) {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      hostnames[i] = "datanode_" + i;<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    }<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    util.startMiniCluster(1, hostCount, hostnames);<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    Table table = util.createTable(TABLE_NAME, FAMILIES, splitKeys);<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    Path testDir = util.getDataTestDirOnTestFS("testLocalMRIncrementalLoad");<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    try (RegionLocator r = util.getConnection().getRegionLocator(TABLE_NAME); Admin admin =<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        util.getConnection().getAdmin();) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      assertEquals("Should start with empty table", 0, util.countRows(table));<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      int numRegions = r.getStartKeys().length;<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      assertEquals("Should make " + regionNum + " regions", numRegions, regionNum);<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>      // Generate the bulk load files<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      runIncrementalPELoad(conf, table.getTableDescriptor(), r, testDir);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>      // This doesn't write into the table, just makes files<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      assertEquals("HFOF should not touch actual table", 0, util.countRows(table));<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // Make sure that a directory was created for every CF<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      int dir = 0;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      for (FileStatus f : testDir.getFileSystem(conf).listStatus(testDir)) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>        for (byte[] family : FAMILIES) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>          if (Bytes.toString(family).equals(f.getPath().getName())) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>            ++dir;<a name="line.452"></a>
+<span class="sourceLineNo">453</span>          }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      }<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      assertEquals("Column family not found in FS.", FAMILIES.length, dir);<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>      // handle the split case<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      if (shouldChangeRegions) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        LOG.info("Changing regions in table");<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        admin.disableTable(table.getName());<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        while(util.getMiniHBaseCluster().getMaster().getAssignmentManager().<a name="line.462"></a>
+<span class="sourceLineNo">463</span>            getRegionStates().isRegionsInTransition()) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>          Threads.sleep(200);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>          LOG.info("Waiting on table to finish disabling");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        }<a name="line.466"></a>
+<span class="sourceLineNo">467</span>        util.deleteTable(table.getName());<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        byte[][] newSplitKeys = generateRandomSplitKeys(14);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        table = util.createTable(TABLE_NAME, FAMILIES, newSplitKeys);<a name="line.469"></a>
+<span class="sourceLineNo">470</span><a name="line.470"></a>
+<span class="sourceLineNo">471</span>        while (util.getConnection().getRegionLocator(TABLE_NAME)<a name="line.471"></a>
+<span class="sourceLineNo">472</span>            .getAllRegionLocations().size() != 15 ||<a name="line.472"></a>
+<span class="sourceLineNo">473</span>            !admin.isTableAvailable(table.getName())) {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>          Thread.sleep(200);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>          LOG.info("Waiting for new region assignment to happen");<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        }<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>      // Perform the actual load<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      new LoadIncrementalHFiles(conf).doBulkLoad(testDir, admin, table, r);<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>      // Ensure data shows up<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      int expectedRows = NMapInputFormat.getNumMapTasks(conf) * ROWSPERSPLIT;<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      assertEquals("LoadIncrementalHFiles should put expected data in table",<a name="line.484"></a>
+<span class="sourceLineNo">485</span>          expectedRows, util.countRows(table));<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      Scan scan = new Scan();<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      ResultScanner results = table.getScanner(scan);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      for (Result res : results) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>        assertEquals(FAMILIES.length, res.rawCells().length);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>        Cell first = res.rawCells()[0];<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        for (Cell kv : res.rawCells()) {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          assertTrue(CellUtil.matchingRow(first, kv));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>          assertTrue(Bytes.equals(CellUtil.cloneValue(first), CellUtil.cloneValue(kv)));<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      }<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      results.close();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      String tableDigestBefore = util.checksumRows(table);<a name="line.497"></a>
+<span class="sourceLineNo">498</span><a name="line.498"></a>
+<span class="sourceLineNo">499</span>      // Check region locality<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      HDFSBlocksDistribution hbd = new HDFSBlocksDistribution();<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      for (HRegion region : util.getHBaseCluster().getRegions(TABLE_NAME)) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        hbd.add(region.getHDFSBlocksDistribution());<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      for (String hostname : hostnames) {<a name="line.504"></a>
+<span class="sourceLineNo">505</span>        float locality =  hbd.getBlockLocalityIndex(hostname);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>        LOG.info("locality of [" + hostname + "]: " + locality);<a name="line.506"></a>
+<span class="sourceLineNo">507</span>        assertEquals(100, (int) (locality * 100));<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      }<a name="line.508"></a>
+<span class="sourceLineNo">509</span><a name="line.509"></a>
+<span class="sourceLineNo">510</span>      // Cause regions to reopen<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      admin.disableTable(TABLE_NAME);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      while (!admin.isTableDisabled(TABLE_NAME)) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>        Thread.sleep(200);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>        LOG.info("Waiting for table to disable");<a name="line.514"></a>
+<span class="sourceLineNo">515</span>      }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>      admin.enableTable(TABLE_NAME);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      util.waitTableAvailable(TABLE_NAME);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      assertEquals("Data should remain after reopening of regions",<a name="line.518"></a>
+<span class="sourceLineNo">519</span>          tableDigestBefore, util.checksumRows(table));<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    } finally {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      testDir.getFileSystem(conf).delete(testDir, true);<a name="line.521"></a>
+<span class="sourceLineNo">522</span>      util.deleteTable(TABLE_NAME);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>      util.shutdownMiniCluster();<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
+<span class="sourceLineNo">525</span>  }<a name="line.525"></a>
+<span class="sourceLineNo">526</span><a name="line.526"></a>
+<span class="sourceLineNo">527</span>  private void runIncrementalPELoad(Configuration conf, HTableDescriptor tableDescriptor,<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      RegionLocator regionLocator, Path outDir) throws IOException, UnsupportedEncodingException,<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      InterruptedException, ClassNotFoundException {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    Job job = new Job(conf, "testLocalMRIncrementalLoad");<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    job.setWorkingDirectory(util.getDataTestDirOnTestFS("runIncrementalPELoad"));<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    job.getConfiguration().setStrings("io.serializations", conf.get("io.serializations"),<a name="line.532"></a>
+<span class="sourceLineNo">533</span>        MutationSerialization.class.getName(), ResultSerialization.class.getName(),<a name="line.533"></a>
+<span class="sourceLineNo">534</span>        KeyValueSerialization.class.getName());<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    setupRandomGeneratorMapper(job);<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    HFileOutputFormat2.configureIncrementalLoad(job, tableDescriptor, regionLocator);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    FileOutputFormat.setOutputPath(job, outDir);<a name="line.537"></a>
+<span class="sourceLineNo">538</span><a name="line.538"></a>
+<span class="sourceLineNo">539</span>    assertFalse(util.getTestFileSystem().exists(outDir)) ;<a name="line.539"></a>
+<span class="sourceLineNo">540</span><a name="line.540"></a>
+<span class="sourceLineNo">541</span>    assertEquals(regionLocator.getAllRegionLocations().size(), job.getNumReduceTasks());<a name="line.541"></a>
+<span class="sourceLineNo">542</span><a name="line.542"></a>
+<span class="sourceLineNo">543</span>    assertTrue(job.waitForCompletion(true));<a name="line.543"></a>
+<span class="sourceLineNo">544</span>  }<a name="line.544"></a>
+<span class="sourceLineNo">545</span><a name="line.545"></a>
+<span class="sourceLineNo">546</span>  /**<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   * Test for {@link HFileOutputFormat2#configureCompression(org.apache.hadoop.hbase.client.Table,<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   * Configuration)} and {@link HFileOutputFormat2#createFamilyCompressionMap<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * (Configuration)}.<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * Tests that the compression map is correctly serialized into<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * and deserialized from configuration<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   *<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @throws IOException<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   */<a name="line.554"></a>
+<span class="sourceLineNo">555</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.555"></a>
+<span class="sourceLineNo">556</span>  public void testSerializeDeserializeFamilyCompressionMap() throws IOException {<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    for (int numCfs = 0; numCfs &lt;= 3; numCfs++) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      Map&lt;String, Compression.Algorithm&gt; familyToCompression =<a name="line.559"></a>
+<span class="sourceLineNo">560</span>          getMockColumnFamiliesForCompression(numCfs);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      Table table = Mockito.mock(HTable.class);<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      setupMockColumnFamiliesForCompression(table, familyToCompression);<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      HFileOutputFormat2.configureCompression(conf, table.getTableDescriptor());<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>      // read back family specific compression setting from the configuration<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      Map&lt;byte[], Algorithm&gt; retrievedFamilyToCompressionMap = HFileOutputFormat2<a name="line.566"></a>
+<span class="sourceLineNo">567</span>          .createFamilyCompressionMap(conf);<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>      // test that we have a value for all column families that matches with the<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      // used mock values<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      for (Entry&lt;String, Algorithm&gt; entry : familyToCompression.entrySet()) {<a name="line.571"></a>
+<span class="sourceLineNo">572</span>        assertEquals("Compression configuration incorrect for column family:"<a name="line.572"></a>
+<span class="sourceLineNo">573</span>            + entry.getKey(), entry.getValue(),<a name="line.573"></a>
+<span class="sourceLineNo">574</span>            retrievedFamilyToCompressionMap.get(entry.getKey().getBytes()));<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    }<a name="line.576"></a>
+<span class="sourceLineNo">577</span>  }<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>  private void setupMockColumnFamiliesForCompression(Table table,<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      Map&lt;String, Compression.Algorithm&gt; familyToCompression) throws IOException {<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    HTableDescriptor mockTableDescriptor = new HTableDescriptor(TABLE_NAME);<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    for (Entry&lt;String, Compression.Algorithm&gt; entry : familyToCompression.entrySet()) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      mockTableDescriptor.addFamily(new HColumnDescriptor(entry.getKey())<a name="line.583"></a>
+<span class="sourceLineNo">584</span>          .setMaxVersions(1)<a name="line.584"></a>
+<span class="sourceLineNo">585</span>          .setCompressionType(entry.getValue())<a name="line.585"></a>
+<span class="sourceLineNo">586</span>          .setBlockCacheEnabled(false)<a name="line.586"></a>
+<span class="sourceLineNo">587</span>          .setTimeToLive(0));<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    Mockito.doReturn(mockTableDescriptor).when(table).getTableDescriptor();<a name="line.589"></a>
+<span class="sourceLineNo">590</span>  }<a name="line.590"></a>
+<span class="sourceLineNo">591</span><a name="line.591"></a>
+<span class="sourceLineNo">592</span>  /**<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @return a map from column family names to compression algorithms for<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   *         testing column family compression. Column family names have special characters<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
+<span class="sourceLineNo">596</span>  private Map&lt;String, Compression.Algorithm&gt;<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      getMockColumnFamiliesForCompression (int numCfs) {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    Map&lt;String, Compression.Algorithm&gt; familyToCompression<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      = new HashMap&lt;String, Compression.Algorithm&gt;();<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    // use column family names having special characters<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    if (numCfs-- &gt; 0) {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      familyToCompression.put("Family1!@#!@#&amp;", Compression.Algorithm.LZO);<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    }<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    if (numCfs-- &gt; 0) {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      familyToCompression.put("Family2=asdads&amp;!AASD", Compression.Algorithm.SNAPPY);<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    if (numCfs-- &gt; 0) {<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      familyToCompression.put("Family2=asdads&amp;!AASD", Compression.Algorithm.GZ);<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    if (numCfs-- &gt; 0) {<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      familyToCompression.put("Family3", Compression.Algorithm.NONE);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    }<a name="line.612"></a>
+<span class="sourceLineNo">613</span>    return familyToCompression;<a name="line.613"></a>
+<span class="sourceLineNo">614</span>  }<a name="line.614"></a>
 <span class="sourceLineNo">615</span><a name="line.615"></a>
-<span class="sourceLineNo">616</span>  /**<a name="line.616"></a>
-<span class="sourceLineNo">617</span>   * Test for {@link HFileOutputFormat2#configureBloomType(org.apache.hadoop.hbase.client.Table,<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * Configuration)} and {@link HFileOutputFormat2#createFamilyBloomTypeMap<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * (Configuration)}.<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * Tests that the compression map is correctly serialized into<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * and deserialized from configuration<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   *<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * @throws IOException<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   */<a name="line.624"></a>
-<span class="sourceLineNo">625</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.625"></a>
-<span class="sourceLineNo">626</span>  public void testSerializeDeserializeFamilyBloomTypeMap() throws IOException {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    for (int numCfs = 0; numCfs &lt;= 2; numCfs++) {<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      Map&lt;String, BloomType&gt; familyToBloomType =<a name="line.629"></a>
-<span class="sourceLineNo">630</span>          getMockColumnFamiliesForBloomType(numCfs);<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      Table table = Mockito.mock(HTable.class);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      setupMockColumnFamiliesForBloomType(table,<a name="line.632"></a>
-<span class="sourceLineNo">633</span>          familyToBloomType);<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      HFileOutputFormat2.configureBloomType(table.getTableDescriptor(), conf);<a name="line.634"></a>
-<span class="sourceLineNo">635</span><a name="line.635"></a>
-<span class="sourceLineNo">636</span>      // read back family specific data block encoding settings from the<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      // configuration<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      Map&lt;byte[], BloomType&gt; retrievedFamilyToBloomTypeMap =<a name="line.638"></a>
-<span class="sourceLineNo">639</span>          HFileOutputFormat2<a name="line.639"></a>
-<span class="sourceLineNo">640</span>              .createFamilyBloomTypeMap(conf);<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>      // test that we have a value for all column families that matches with the<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      // used mock values<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      for (Entry&lt;String, BloomType&gt; entry : familyToBloomType.entrySet()) {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        assertEquals("BloomType configuration incorrect for column family:"<a name="line.645"></a>
-<span class="sourceLineNo">646</span>            + entry.getKey(), entry.getValue(),<a name="line.646"></a>
-<span class="sourceLineNo">647</span>            retrievedFamilyToBloomTypeMap.get(entry.getKey().getBytes()));<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      }<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>  }<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>  private void setupMockColumnFamiliesForBloomType(Table table,<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      Map&lt;String, BloomType&gt; familyToDataBlockEncoding) throws IOException {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    HTableDescriptor mockTableDescriptor = new HTableDescriptor(TABLE_NAME);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    for (Entry&lt;String, BloomType&gt; entry : familyToDataBlockEncoding.entrySet()) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      mockTableDescriptor.addFamily(new HColumnDescriptor(entry.getKey())<a name="line.656"></a>
-<span class="sourceLineNo">657</span>          .setMaxVersions(1)<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          .setBloomFilterType(entry.getValue())<a name="line.658"></a>
-<span class="sourceLineNo">659</span>          .setBlockCacheEnabled(false)<a name="line.659"></a>
-<span class="sourceLineNo">660</span>          .setTimeToLive(0));<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    Mockito.doReturn(mockTableDescriptor).when(table).getTableDescriptor();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>  }<a name="line.663"></a>
-<span class="sourceLineNo">664</span><a name="line.664"></a>
-<span class="sourceLineNo">665</span>  /**<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * @return a map from column family names to compression algorithms for<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   *         testing column family compression. Column family names have special characters<a name="line.667"></a>
-<span class="sourceLineNo">668</span>   */<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  private Map&lt;String, BloomType&gt;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>  getMockColumnFamiliesForBloomType (int numCfs) {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    Map&lt;String, BloomType&gt; familyToBloomType =<a name="line.671"></a>
-<span class="sourceLineNo">672</span>        new HashMap&lt;String, BloomType&gt;();<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    // use column family names having special characters<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    if (numCfs-- &gt; 0) {<a name="line.674"></a>
-<span class="sourceLineNo">675</span>      familyToBloomType.put("Family1!@#!@#&amp;", BloomType.ROW);<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    }<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    if (numCfs-- &gt; 0) {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      familyToBloomType.put("Family2=asdads&amp;!AASD",<a name="line.678"></a>
-<span class="sourceLineNo">679</span>          BloomType.ROWCOL);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    }<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    if (numCfs-- &gt; 0) {<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      familyToBloomType.put("Family3", BloomType.NONE);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    }<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    return familyToBloomType;<a name="line.684"></a>
-<span class="sourceLineNo">685</span>  }<a name="line.685"></a>
-<span class="sourceLineNo">686</span><a name="line.686"></a>
-<span class="sourceLineNo">687</span>  /**<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * Test for {@link HFileOutputFormat2#configureBlockSize(org.apache.hadoop.hbase.client.Table,<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   * Configuration)} and {@link HFileOutputFormat2#createFamilyBlockSizeMap<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * (Configuration)}.<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   * Tests that the compression map is correctly serialized into<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   * and deserialized from configuration<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   *<a name="line.693"></a>
-<span class="sourceLineNo">694</span>   * @throws IOException<a name="line.694"></a>
-<span class="sourceLineNo">695</span>   */<a name="line.695"></a>
-<span class="sourceLineNo">696</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.696"></a>
-<span class="sourceLineNo">697</span>  public void testSerializeDeserializeFamilyBlockSizeMap() throws IOException {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    for (int numCfs = 0; numCfs &lt;= 3; numCfs++) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.699"></a>
-<span class="sourceLineNo">700</span>      Map&lt;String, Integer&gt; familyToBlockSize =<a name="line.700"></a>
-<span class="sourceLineNo">701</span>          getMockColumnFamiliesForBlockSize(numCfs);<a name="line.701"></a>
-<span class="sourceLineNo">702</span>      Table table = Mockito.mock(HTable.class);<a name="line.702"></a>
-<span class="sourceLineNo">703</span>      setupMockColumnFamiliesForBlockSize(table,<a name="line.703"></a>
-<span class="sourceLineNo">704</span>          familyToBlockSize);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>      HFileOutputFormat2.configureBlockSize(table.getTableDescriptor(), conf);<a name="line.705"></a>
-<span class="sourceLineNo">706</span><a name="line.706"></a>
-<span class="sourceLineNo">707</span>      // read back family specific data block encoding settings from the<a name="line.707"></a>
-<span class="sourceLineNo">708</span>      // configuration<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      Map&lt;byte[], Integer&gt; retrievedFamilyToBlockSizeMap =<a name="line.709"></a>
-<span class="sourceLineNo">710</span>          HFileOutputFormat2<a name="line.710"></a>
-<span class="sourceLineNo">711</span>              .createFamilyBlockSizeMap(conf);<a name="line.711"></a>
-<span class="sourceLineNo">712</span><a name="line.712"></a>
-<span class="sourceLineNo">713</span>      // test that we have a value for all column families that matches with the<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      // used mock values<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      for (Entry&lt;String, Integer&gt; entry : familyToBlockSize.entrySet()<a name="line.715"></a>
-<span class="sourceLineNo">716</span>          ) {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>        assertEquals("BlockSize configuration incorrect for column family:"<a name="line.717"></a>
-<span class="sourceLineNo">718</span>            + entry.getKey(), entry.getValue(),<a name="line.718"></a>
-<span class="sourceLineNo">719</span>            retrievedFamilyToBlockSizeMap.get(entry.getKey().getBytes()));<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      }<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    }<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
-<span class="sourceLineNo">723</span><a name="line.723"></a>
-<span class="sourceLineNo">724</span>  private void setupMockColumnFamiliesForBlockSize(Table table,<a name="line.724"></a>
-<span class="sourceLineNo">725</span>      Map&lt;String, Integer&gt; familyToDataBlockEncoding) throws IOException {<a name="line.725"></a>
-<span class="sourceLineNo">726</span>    HTableDescriptor mockTableDescriptor = new HTableDescriptor(TABLE_NAME);<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    for (Entry&lt;String, Integer&gt; entry : familyToDataBlockEncoding.entrySet()) {<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      mockTableDescriptor.addFamily(new HColumnDescriptor(entry.getKey())<a name="line.728"></a>
-<span class="sourceLineNo">729</span>          .setMaxVersions(1)<a name="line.729"></a>
-<span class="sourceLineNo">730</span>          .setBlocksize(entry.getValue())<a name="line.730"></a>
-<span class="sourceLineNo">731</span>          .setBlockCacheEnabled(false)<a name="line.731"></a>
-<span class="sourceLineNo">732</span>          .setTimeToLive(0));<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    }<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    Mockito.doReturn(mockTableDescriptor).when(table).getTableDescriptor();<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>   * @return a map from column family names to compression algorithms for<a name="line.738"></a>
-<span class="sourceLineNo">739</span>   *         testing column family compression. Column family names have special characters<a name="line.739"></a>
-<span class="sourceLineNo">740</span>   */<a name="line.740"></a>
-<span class="sourceLineNo">741</span>  private Map&lt;String, Integer&gt;<a name="line.741"></a>
-<span class="sourceLineNo">742</span>  getMockColumnFamiliesForBlockSize (int numCfs) {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    Map&lt;String, Integer&gt; familyToBlockSize =<a name="line.743"></a>
-<span class="sourceLineNo">744</span>        new HashMap&lt;String, Integer&gt;();<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    // use column family names having special characters<a name="line.745"></a>
-<span class="sourceLineNo">746</span>    if (numCfs-- &gt; 0) {<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      familyToBlockSize.put("Family1!@#!@#&amp;", 1234);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    }<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    if (numCfs-- &gt; 0) {<a name="line.749"></a>
-<span class="sourceLineNo">750</span>      familyToBlockSize.put("Family2=asdads&amp;!AASD",<a name="line.750"></a>
-<span class="sourceLineNo">751</span>          Integer.MAX_VALUE);<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    }<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    if (numCfs-- &gt; 0) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      familyToBlockSize.put("Family2=asdads&amp;!AASD",<a name="line.754"></a>
-<span class="sourceLineNo">755</span>          Integer.MAX_VALUE);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    }<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    if (numCfs-- &gt; 0) {<a name="line.757"></a>
-<span class="sourceLineNo">758</span>      familyToBlockSize.put("Family3", 0);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    }<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    return familyToBlockSize;<a name="line.760"></a>
-<span class="sourceLineNo">761</span>  }<a name="line.761"></a>
-<span class="sourceLineNo">762</span><a name="line.762"></a>
-<span class="sourceLineNo">763</span>  /**<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * Test for {@link HFileOutputFormat2#configureDataBlockEncoding(HTableDescriptor, Configuration)}<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * and {@link HFileOutputFormat2#createFamilyDataBlockEncodingMap(Configuration)}.<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   * Tests that the compression map is correctly serialized into<a name="line.766"></a>
-<span class="sourceLineNo">767</span>   * and deserialized from configuration<a name="line.767"></a>
-<span class="sourceLineNo">768</span>   *<a name="line.768"></a>
-<span class="sourceLineNo">769</span>   * @throws IOException<a name="line.769"></a>
-<span class="sourceLineNo">770</span>   */<a name="line.770"></a>
-<span class="sourceLineNo">771</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.771"></a>
-<span class="sourceLineNo">772</span>  public void testSerializeDeserializeFamilyDataBlockEncodingMap() throws IOException {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    for (int numCfs = 0; numCfs &lt;= 3; numCfs++) {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.774"></a>
-<span class="sourceLineNo">775</span>      Map&lt;String, DataBlockEncoding&gt; familyToDataBlockEncoding =<a name="line.775"></a>
-<span class="sourceLineNo">776</span>          getMockColumnFamiliesForDataBlockEncoding(numCfs);<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      Table table = Mockito.mock(HTable.class);<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      setupMockColumnFamiliesForDataBlockEncoding(table,<a name="line.778"></a>
-<span class="sourceLineNo">779</span>          familyToDataBlockEncoding);<a name="line.779"></a>
-<span class="sourceLineNo">780</span>      HTableDescriptor tableDescriptor = table.getTableDescriptor();<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      HFileOutputFormat2.configureDataBlockEncoding(tableDescriptor, conf);<a name="line.781"></a>
-<span class="sourceLineNo">782</span><a name="line.782"></a>
-<span class="sourceLineNo">783</span>      // read back family specific data block encoding settings from the<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      // configuration<a name="line.784"></a>
-<span class="sourceLineNo">785</span>      Map&lt;byte[], DataBlockEncoding&gt; retrievedFamilyToDataBlockEncodingMap =<a name="line.785"></a>
-<span class="sourceLineNo">786</span>          HFileOutputFormat2<a name="line.786"></a>
-<span class="sourceLineNo">787</span>          .createFamilyDataBlockEncodingMap(conf);<a name="line.787"></a>
-<span class="sourceLineNo">788</span><a name="line.788"></a>
-<span class="sourceLineNo">789</span>      // test that we have a value for all column families that matches with the<a name="line.789"></a>
-<span class="sourceLineNo">790</span>      // used mock values<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      for (Entry&lt;String, DataBlockEncoding&gt; entry : familyToDataBlockEncoding.entrySet()) {<a name="line.791"></a>
-<span class="sourceLineNo">792</span>        assertEquals("DataBlockEncoding configuration incorrect for column family:"<a name="line.792"></a>
-<span class="sourceLineNo">793</span>            + entry.getKey(), entry.getValue(),<a name="line.793"></a>
-<span class="sourceLineNo">794</span>            retrievedFamilyToDataBlockEncodingMap.get(entry.getKey().getBytes()));<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      }<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    }<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>  private void setupMockColumnFamiliesForDataBlockEncoding(Table table,<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      Map&lt;String, DataBlockEncoding&gt; familyToDataBlockEncoding) throws IOException {<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    HTableDescriptor mockTableDescriptor = new HTableDescriptor(TABLE_NAME);<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    for (Entry&lt;String, DataBlockEncoding&gt; entry : familyToDataBlockEncoding.entrySet()) {<a name="line.802"></a>
-<span class="sourceLineNo">803</span>      mockTableDescriptor.addFamily(new HColumnDescriptor(entry.getKey())<a name="line.803"></a>
-<span class="sourceLineNo">804</span>          .setMaxVersions(1)<a name="line.804"></a>
-<span class="sourceLineNo">805</span>          .setDataBlockEncoding(entry.getValue())<a name="line.805"></a>
-<span class="sourceLineNo">806</span>          .setBlockCacheEnabled(false)<a name="line.806"></a>
-<span class="sourceLineNo">807</span>          .setTimeToLive(0));<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    }<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    Mockito.doReturn(mockTableDescriptor).when(table).getTableDescriptor();<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  }<a name="line.810"></a>
-<span class="sourceLineNo">811</span><a name="line.811"></a>
-<span class="sourceLineNo">812</span>  /**<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * @return a map from column family names to compression algorithms for<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   *         testing column family compression. Column family names have special characters<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   */<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  private Map&lt;String, DataBlockEncoding&gt;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      getMockColumnFamiliesForDataBlockEncoding (int numCfs) {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    Map&lt;String, DataBlockEncoding&gt; familyToDataBlockEncoding =<a name="line.818"></a>
-<span class="sourceLineNo">819</span>        new HashMap&lt;String, DataBlockEncoding&gt;();<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    // use column family names having special characters<a name="line.820"></a>
-<span class="sourceLineNo">821</span>    if (numCfs-- &gt; 0) {<a name="line.821"></a>
-<span class="sourceLineNo">822</span>      familyToDataBlockEncoding.put("Family1!@#!@#&amp;", DataBlockEncoding.DIFF);<a name="line.822"></a>
-<span class="sourceLineNo">823</span>    }<a name="line.823"></a>
-<span class="sourceLineNo">824</span>    if (numCfs-- &gt; 0) {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>      familyToDataBlockEncoding.put("Family2=asdads&amp;!AASD",<a name="line.825"></a>
-<span class="sourceLineNo">826</span>          DataBlockEncoding.FAST_DIFF);<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    }<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    if (numCfs-- &gt; 0) {<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      familyToDataBlockEncoding.put("Family2=asdads&amp;!AASD",<a name="line.829"></a>
-<span class="sourceLineNo">830</span>          DataBlockEncoding.PREFIX);<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    }<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    if (numCfs-- &gt; 0) {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      familyToDataBlockEncoding.put("Family3", DataBlockEncoding.NONE);<a name="line.833"></a>
-<span class="sourceLineNo">834</span>    }<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    return familyToDataBlockEncoding;<a name="line.835"></a>
-<span class="sourceLineNo">836</span>  }<a name="line.836"></a>
-<span class="sourceLineNo">837</span><a name="line.837"></a>
-<span class="sourceLineNo">838</span>  private void setupMockStartKeys(RegionLocator table) throws IOException {<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    byte[][] mockKeys = new byte[][] {<a name="line.839"></a>
-<span class="sourceLineNo">840</span>        HConstants.EMPTY_BYTE_ARRAY,<a name="line.840"></a>
-<span class="sourceLineNo">841</span>        Bytes.toBytes("aaa"),<a name="line.841"></a>
-<span class="sourceLineNo">842</span>        Bytes.toBytes("ggg"),<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        Bytes.toBytes("zzz")<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    };<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    Mockito.doReturn(mockKeys).when(table).getStartKeys();<a name="line.845"></a>
-<span class="sourceLineNo">846</span>  }<a name="line.846"></a>
-<span class="sourceLineNo">847</span><a name="line.847"></a>
-<span class="sourceLineNo">848</span>  private void setupMockTableName(RegionLocator table) throws IOException {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    TableName mockTableName = TableName.valueOf("mock_table");<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    Mockito.doReturn(mockTableName).when(table).getName();<a name="line.850"></a>
-<span class="sourceLineNo">851</span>  }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>  /**<a name="line.853"></a>
-<span class="sourceLineNo">854</span>   * Test that {@link HFileOutputFormat2} RecordWriter uses compression and<a name="line.854"></a>
-<span class="sourceLineNo">855</span>   * bloom filter settings from the column family descriptor<a name="line.855"></a>
-<span class="sourceLineNo">856</span>   */<a name="line.856"></a>
-<span class="sourceLineNo">857</span>  @Ignore("Goes zombie too frequently; needs work. See HBASE-14563") @Test<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  public void testColumnFamilySettings() throws Exception {<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    Configuration conf = new Configuration(this.util.getConfiguration());<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    RecordWriter&lt;ImmutableBytesWritable, Cell&gt; writer = null;<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    TaskAttemptContext context = null;<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    Path dir = util.getDataTestDir("testColumnFamilySettings");<a name="line.862"></a>
-<span class="sourceLineNo">863</span><a name="line.863"></a>
-<span class="sourceLineNo">864</span>    // Setup table descriptor<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    Table table = Mockito.mock(Table.class);<a name="line.865"></a>
-<span class="sourceLineNo">866</span>    RegionLocator regionLocator = Mockito.mock(RegionLocator.class);<a name="line.866"></a>
-<span class="sourceLineNo">867</span>    HTableDescriptor htd = new HTableDescriptor(TABLE_NAME);<a name="line.867"></a>
-<span class="sourceLineNo">868</span>    Mockito.doReturn(htd).when(table).getTableDescriptor();<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    for (HColumnDescriptor hcd: HBaseTestingUtility.generateColumnDescriptors()) {<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      htd.addFamily(hcd);<a name="line.870"></a>
-<span class="sourceLineNo">871</span>    }<a name="line.871"></a>
-<span class="sourceLineNo">872</span><a name="line.872"></a>
-<span class="sourceLineNo">873</span>    // set up the table to return some mock keys<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    setupMockStartKeys(regionLocator);<a name="line.874"></a>
-<span class="sourceLineNo">875</span><a name="line.875"></a>
-<span class="sourceLineNo">876</span>    try {<a name="line.876"></a>
-<span class="sourceLineNo">877</span>      // partial map red setup to get an operational writer for testing<a name="line.877"></a>
-<span class="sourceLineNo">878</span>      // We turn off the sequence file compression, because DefaultCodec<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      // pollutes the GZip codec pool with an incompatible compressor.<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      conf.set("io.seqfile.compression.type", "NONE");<a name="line.880"></a>
-<span class="sourceLineNo">881</span>      conf.set("hbase.fs.tmp.dir", dir.toString());<a name="line.881"></a>
-<span class="sourceLineNo">882</span>      // turn locality off to eliminate getRegionLocation fail-and-retry time when writing kvs<a name="line.882"></a>
-<span class="sourceLineNo">883</span>      conf.setBoolean(HFileOutputFormat2.LOCALITY_SENSITIVE_CONF_KEY, false);<a name="line.883"></a>
-<span class="sourceLineNo">884</span><a name="line.884"></a>
-<span class="sourceLineNo">885</span>      Job job = new Job(conf, "testLocalMRIncrementalLoad");<a name="line.885"></a>
-<span class="sourceLineNo">886</span>      job.setWorkingDirectory(util.getDataTestDirOnTestFS("testColumnFamilySettings"));<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      setupRandomGeneratorMapper(job);<a name="line.887"></a>
-<span class="sourceLineNo">888</span>      HFileOutputFormat2.configureIncrementalLoad(job, table.getTableDescriptor(), regionLocator);<a name="line.888"></a>
-<span class="sourceLineNo">889</span>      FileOutputFormat.setOutputPath(job, dir);<a name="line.889"></a>
-<span class="sourceLineNo">890</span>      context = createTestTaskAttemptContext(job);<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      HFileOutputFormat2 hof = new HFileOutputFormat2();<a name="line.891"></a>
-<span class="sourceLineNo">892</span>      writer = hof.getRecordWriter(context);<a name="line.892"></a>
-<span class="sourceLineNo">893</span><a name="line.893"></a>
-<span class="sourceLineNo">894</span>      // write out random rows<a name="line.894"></a>
-<span class="sourceLineNo">895</span>      writeRandomKeyValues(writer, context, htd.getFamiliesKeys(), ROWSPERSPLIT);<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      writer.close(context);<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>      // Make sure that a directory was created for every CF<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      FileSystem fs = dir.getFileSystem(conf);<a name="line.899"></a>
-<span class="sourceLineNo">900</span><a name="line.900"></a>
-<span class="sourceLineNo">901</span>      // commit so that the filesystem has one directory per column family<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      hof.getOutputCommitter(context).commitTask(context);<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      hof.getOutputCommitter(context).commitJob(context);<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      FileStatus[] families = FSUtils.listStatus(fs, dir, new FSUtils.FamilyDirFilter(fs));<a name="line.904"></a>
-<span class="sourceLineNo">905</span>      assertEquals(htd.getFamilies().size(), families.length);<a name="line.905"></a>
-<span class="sourceLineNo">906</span>      for (FileStatus f : families) {<a name="line.906"></a>
-<span class="sourceLineNo">907</span>        String familyStr = f.getPath().getName();<a name="line.907"></a>
-<span class="sourceLineNo">908</span>        HColumnDescriptor hcd = htd.getFamily(Bytes.toBytes(familyStr));<a name="line.908"></a>
-<span class="sourceLineNo">909</span>        // verify that the compression on this file matches the configured<a name="line.909"></a>
-<span class="sourceLineNo">910</span>        // compression<a name="line.910"></a>
-<span class="sourceLineNo">911</span>        Path dataFilePath = fs.listStatus(f.getPath())[0].getPath();<a name="line.911"></a>
-<span class="sourceLineNo">912</span>        Reader reader = HFile.createReader(fs, dataFilePath, new CacheConfig(conf), conf);<a name="line.912"></a>
-<span class="sourceLineNo">913</span>        Map&lt;byte[], byte[]&gt; fileInfo = reader.loadFileInfo();<a name="line.913"></a>
-<span class="sourceLineNo">914</span><a name="line.914"></a>
-<span class="sourceLineNo">915</span>        byte[] bloomFilter = fileInfo.get(StoreFile.BLOOM_FILTER_TYPE_KEY);<a name="line.915"></a>
-<span class="sourceLineNo">916</span>        if (bloomFilter == null) bloomFilter = Bytes.toBytes("NONE");<a name="line.916"></a>
-<span class="sourceLineNo">917</span>        assertEquals("Incorrect bloom filter used for column family " + familyStr +<a name="line.917"></a>
-<span class="sourceLineNo">918</span>          "(reader: " + reader + ")",<a name="line.918"></a>
-<span class="sourceLineNo">919</span>          hcd.getBloomFilterType(), BloomType.valueOf(Bytes.toString(bloomFilter)));<a name="line.919"></a>
-<span class="sourceLineNo">920</span>        assertEquals("Incorrect compression used for column family " + familyStr +<a name="line.920"></a>
-<span class="sourceLineNo">921</span>          "(reader: " + reader + ")", hcd.getCompressionType(), reader.getFileContext().getCompression());<a name="line.921"></a>
-<span class="sourceLineNo">922</span>      }<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    } finally {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>      dir.getFileSystem(conf).delete(dir, true);<a name="line.924"></a>
-<span class="sourceLineNo">925</span>    }<a name="line.925"></a>
-<span class="sourceLineNo">926</span>  }<a name="line.926"></a>
-<span class="sourceLineNo">927</span><a name="line.927"></a>
-<span class="sourceLineNo">928</span>  /**<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   * Write random values to the writer assuming a table created using<a name="line.929"></a>
-<span class="sourceLineNo">930</span>   * {@link #FAMILIES} as column family descriptors<a name="line.930"></a>
-<span class="sourceLineNo">931</span>   */<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  private void writeRandomKeyValues(RecordWriter&lt;ImmutableBytesWritable, Cell&gt; writer,<a name="line.932"></a>
-<span class="sourceLineNo">933</span>      TaskAttemptContext context, Set&lt;byte[]&gt; families, int numRows)<a name="line.933"></a>
-<span class="sourceLin

<TRUNCATED>

[33/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/HLogKey.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/HLogKey.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/HLogKey.html
index 02d1d6a..dec4c09 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/HLogKey.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/HLogKey.html
@@ -57,7 +57,7 @@
 <span class="sourceLineNo">049</span> *<a name="line.49"></a>
 <span class="sourceLineNo">050</span> * &lt;p&gt;Some Transactional edits (START, COMMIT, ABORT) will not have an<a name="line.50"></a>
 <span class="sourceLineNo">051</span> * associated row.<a name="line.51"></a>
-<span class="sourceLineNo">052</span> * @deprecated use WALKey.  as of 2.0.  Remove in 3.0<a name="line.52"></a>
+<span class="sourceLineNo">052</span> * @deprecated use WALKey. Deprecated as of 1.0 (HBASE-12522). Remove in 2.0<a name="line.52"></a>
 <span class="sourceLineNo">053</span> */<a name="line.53"></a>
 <span class="sourceLineNo">054</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.REPLICATION)<a name="line.54"></a>
 <span class="sourceLineNo">055</span>@Deprecated<a name="line.55"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html
index 2eedf84..de53dfc 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html
@@ -26,41 +26,40 @@
 <span class="sourceLineNo">018</span><a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver.wal;<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.List;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.UUID;<a name="line.23"></a>
-<span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.TableName;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl;<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> * An HLogKey specific to WalEdits coming from replay.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> */<a name="line.31"></a>
-<span class="sourceLineNo">032</span>@InterfaceAudience.Private<a name="line.32"></a>
-<span class="sourceLineNo">033</span>public class ReplayHLogKey extends HLogKey {<a name="line.33"></a>
-<span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>  public ReplayHLogKey(final byte [] encodedRegionName, final TableName tablename,<a name="line.35"></a>
-<span class="sourceLineNo">036</span>      final long now, List&lt;UUID&gt; clusterIds, long nonceGroup, long nonce,<a name="line.36"></a>
-<span class="sourceLineNo">037</span>      MultiVersionConcurrencyControl mvcc) {<a name="line.37"></a>
-<span class="sourceLineNo">038</span>    super(encodedRegionName, tablename, now, clusterIds, nonceGroup, nonce, mvcc);<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  }<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>  public ReplayHLogKey(final byte [] encodedRegionName, final TableName tablename,<a name="line.41"></a>
-<span class="sourceLineNo">042</span>      long logSeqNum, final long now, List&lt;UUID&gt; clusterIds, long nonceGroup, long nonce,<a name="line.42"></a>
-<span class="sourceLineNo">043</span>      MultiVersionConcurrencyControl mvcc) {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>    super(encodedRegionName, tablename, logSeqNum, now, clusterIds, nonceGroup, nonce, mvcc);<a name="line.44"></a>
-<span class="sourceLineNo">045</span>  }<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>   * Returns the original sequence id<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   * @return long the new assigned sequence number<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   */<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  @Override<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  public long getSequenceId() throws IOException {<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    return this.getOrigLogSeqNum();<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">021</span>import java.util.List;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.UUID;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.TableName;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>/**<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * An HLogKey specific to WalEdits coming from replay.<a name="line.29"></a>
+<span class="sourceLineNo">030</span> */<a name="line.30"></a>
+<span class="sourceLineNo">031</span>@InterfaceAudience.Private<a name="line.31"></a>
+<span class="sourceLineNo">032</span>public class ReplayHLogKey extends HLogKey {<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>  public ReplayHLogKey(final byte [] encodedRegionName, final TableName tablename,<a name="line.34"></a>
+<span class="sourceLineNo">035</span>      final long now, List&lt;UUID&gt; clusterIds, long nonceGroup, long nonce,<a name="line.35"></a>
+<span class="sourceLineNo">036</span>      MultiVersionConcurrencyControl mvcc) {<a name="line.36"></a>
+<span class="sourceLineNo">037</span>    super(encodedRegionName, tablename, now, clusterIds, nonceGroup, nonce, mvcc);<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>  public ReplayHLogKey(final byte [] encodedRegionName, final TableName tablename,<a name="line.40"></a>
+<span class="sourceLineNo">041</span>      long logSeqNum, final long now, List&lt;UUID&gt; clusterIds, long nonceGroup, long nonce,<a name="line.41"></a>
+<span class="sourceLineNo">042</span>      MultiVersionConcurrencyControl mvcc) {<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    super(encodedRegionName, tablename, logSeqNum, now, clusterIds, nonceGroup, nonce, mvcc);<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  }<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  /**<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * Returns the original sequence id<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * @return long the new assigned sequence number<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   */<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  @Override<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  public long getSequenceId() {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    return this.getOrigLogSeqNum();<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  }<a name="line.53"></a>
+<span class="sourceLineNo">054</span>}<a name="line.54"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html
index 541e5ae..5a3dc1c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html
@@ -28,26 +28,30 @@
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import org.apache.hadoop.conf.Configuration;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import org.apache.hadoop.fs.Path;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.24"></a>
-<span class="sourceLineNo">025</span><a name="line.25"></a>
-<span class="sourceLineNo">026</span>@InterfaceAudience.Private<a name="line.26"></a>
-<span class="sourceLineNo">027</span>public class SecureBulkLoadUtil {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>  private final static String BULKLOAD_STAGING_DIR = "hbase.bulkload.staging.dir";<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>   * This returns the staging path for a given column family.<a name="line.31"></a>
-<span class="sourceLineNo">032</span>   * This is needed for clean recovery and called reflectively in LoadIncrementalHFiles<a name="line.32"></a>
-<span class="sourceLineNo">033</span>   */<a name="line.33"></a>
-<span class="sourceLineNo">034</span>  public static Path getStagingPath(Configuration conf, String bulkToken, byte[] family) {<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    Path stageP = new Path(getBaseStagingDir(conf), bulkToken);<a name="line.35"></a>
-<span class="sourceLineNo">036</span>    return new Path(stageP, Bytes.toString(family));<a name="line.36"></a>
-<span class="sourceLineNo">037</span>  }<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  public static Path getBaseStagingDir(Configuration conf) {<a name="line.39"></a>
-<span class="sourceLineNo">040</span>    return new Path(conf.get(BULKLOAD_STAGING_DIR));<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">023</span>import org.apache.hadoop.hbase.HConstants;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<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><a name="line.26"></a>
+<span class="sourceLineNo">027</span>@InterfaceAudience.Private<a name="line.27"></a>
+<span class="sourceLineNo">028</span>public class SecureBulkLoadUtil {<a name="line.28"></a>
+<span class="sourceLineNo">029</span>  private final static String BULKLOAD_STAGING_DIR = "hbase.bulkload.staging.dir";<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>   * This returns the staging path for a given column family.<a name="line.32"></a>
+<span class="sourceLineNo">033</span>   * This is needed for clean recovery and called reflectively in LoadIncrementalHFiles<a name="line.33"></a>
+<span class="sourceLineNo">034</span>   */<a name="line.34"></a>
+<span class="sourceLineNo">035</span>  public static Path getStagingPath(Configuration conf, String bulkToken, byte[] family) {<a name="line.35"></a>
+<span class="sourceLineNo">036</span>    Path stageP = new Path(getBaseStagingDir(conf), bulkToken);<a name="line.36"></a>
+<span class="sourceLineNo">037</span>    return new Path(stageP, Bytes.toString(family));<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>  public static Path getBaseStagingDir(Configuration conf) {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    String hbaseTmpFsDir =<a name="line.41"></a>
+<span class="sourceLineNo">042</span>        conf.get(HConstants.TEMPORARY_FS_DIRECTORY_KEY,<a name="line.42"></a>
+<span class="sourceLineNo">043</span>          HConstants.DEFAULT_TEMPORARY_HDFS_DIRECTORY);<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    return new Path(conf.get(BULKLOAD_STAGING_DIR, hbaseTmpFsDir));<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  }<a name="line.45"></a>
+<span class="sourceLineNo">046</span>}<a name="line.46"></a>
 
 
 

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

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


[11/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html
index 9cddc0a..1240e3e 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.Incrementer.html
@@ -27,8 +27,8 @@
 <span class="sourceLineNo">019</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam1;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam2;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertTrue;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertNull;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import static org.junit.Assert.fail;<a name="line.24"></a>
 <span class="sourceLineNo">025</span><a name="line.25"></a>
 <span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
@@ -61,19 +61,19 @@
 <span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.Get;<a name="line.54"></a>
 <span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Put;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Result;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.68"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Put;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.Result;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
 <span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>import org.junit.After;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import org.junit.Before;<a name="line.71"></a>
@@ -191,535 +191,539 @@
 <span class="sourceLineNo">183</span>   */<a name="line.183"></a>
 <span class="sourceLineNo">184</span>  @Test<a name="line.184"></a>
 <span class="sourceLineNo">185</span>  public void testIncrementMultiThreads() throws IOException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // run a with mixed column families (1 and 3 versions)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // create 25 threads, each will increment by its own quantity<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    int numThreads = 25;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    int incrementsPerThread = 1000;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    int expectedTotal = 0;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // create all threads<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      expectedTotal += (i * incrementsPerThread);<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>    // run all threads<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        all[i].join();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      } catch (InterruptedException e) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    assertICV(row, fam1, qual2, expectedTotal*2);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    assertICV(row, fam2, qual3, expectedTotal*3);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private void assertICV(byte [] row,<a name="line.221"></a>
-<span class="sourceLineNo">222</span>                         byte [] familiy,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>                         byte[] qualifier,<a name="line.223"></a>
-<span class="sourceLineNo">224</span>                         long amount) throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // run a get and see?<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    Get get = new Get(row);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    get.addColumn(familiy, qualifier);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    Result result = region.get(get);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    assertEquals(1, result.size());<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Cell kv = result.rawCells()[0];<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    assertEquals(amount, r);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      byte[] ... families)<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    byte[] ... families)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  throws IOException {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    int i=0;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    for(byte [] family : families) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      htd.addFamily(hcd);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * A thread that makes a few increment calls<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static class Incrementer extends Thread {<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final Region region;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final int numIncrements;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final int amount;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">186</span>    boolean fast = true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // run a with mixed column families (1 and 3 versions)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // Create 100 threads, each will increment by its own quantity. All 100 threads update the<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // same row over two column families.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    int numThreads = 100;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    int incrementsPerThread = 1000;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    int expectedTotal = 0;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // create all threads<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      expectedTotal += (i * incrementsPerThread);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    // run all threads<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      try {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        all[i].join();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      } catch (InterruptedException e) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal, fast);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    assertICV(row, fam1, qual2, expectedTotal*2, fast);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    assertICV(row, fam2, qual3, expectedTotal*3, fast);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private void assertICV(byte [] row,<a name="line.223"></a>
+<span class="sourceLineNo">224</span>                         byte [] familiy,<a name="line.224"></a>
+<span class="sourceLineNo">225</span>                         byte[] qualifier,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>                         long amount,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>                         boolean fast) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    // run a get and see?<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    Get get = new Get(row);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    if (fast) get.setIsolationLevel(IsolationLevel.READ_UNCOMMITTED);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    get.addColumn(familiy, qualifier);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Result result = region.get(get);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    assertEquals(1, result.size());<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    Cell kv = result.rawCells()[0];<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    assertEquals(amount, r);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      byte[] ... families)<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    throws IOException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    byte[] ... families)<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    int i=0;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    for(byte [] family : families) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      htd.addFamily(hcd);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<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 thread that makes increment calls always on the same row, this.row against two column<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * families on this row.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public static class Incrementer extends Thread {<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public Incrementer(Region region,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        int threadNumber, int amount, int numIncrements) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      super("incrementer." + threadNumber);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.region = region;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      this.numIncrements = numIncrements;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.amount = amount;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      setDaemon(true);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    public void run() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        try {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          Increment inc = new Increment(row);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          inc.addColumn(fam1, qual1, amount);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>          // verify: Make sure we only see completed increments<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          Get g = new Get(row);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          Result result = region.get(g);<a name="line.288"></a>
+<span class="sourceLineNo">266</span>    private final Region region;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    private final int numIncrements;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final int amount;<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>    public Incrementer(Region region, int threadNumber, int amount, int numIncrements) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      super("Incrementer." + threadNumber);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      this.region = region;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this.numIncrements = numIncrements;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this.amount = amount;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      setDaemon(true);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public void run() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        try {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          Increment inc = new Increment(row);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          inc.addColumn(fam1, qual1, amount);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          Result result = region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.288"></a>
 <span class="sourceLineNo">289</span>          if (result != null) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            assertTrue(result.getValue(fam1, qual1) != null);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            assertTrue(result.getValue(fam1, qual2) != null);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.293"></a>
-<span class="sourceLineNo">294</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } catch (IOException e) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          e.printStackTrace();<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>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  @Test<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  public void testAppendMultiThreads() throws IOException {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    // run a with mixed column families (1 and 3 versions)<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    int numThreads = 100;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int opsPerThread = 100;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    final byte[] val = new byte[]{1};<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    // create all threads<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        public void run() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            try {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>              Append a = new Append(row);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>              a.add(fam1, qual1, val);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              a.add(fam1, qual2, val);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>              a.add(fam2, qual3, val);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>              Get g = new Get(row);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              Result result = region.get(g);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.333"></a>
-<span class="sourceLineNo">334</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.334"></a>
-<span class="sourceLineNo">335</span>            } catch (IOException e) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>              e.printStackTrace();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              failures.incrementAndGet();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>              fail();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>            }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      };<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // run all threads<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      try {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        all[i].join();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Get g = new Get(row);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    Result result = region.get(g);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // create 10 threads, each will alternate between adding and<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // removing a column<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    int numThreads = 10;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    int opsPerThread = 250;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    // create all threads<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        @Override<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        public void run() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>          boolean op = true;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            try {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>              // throw in some flushes<a name="line.388"></a>
-<span class="sourceLineNo">389</span>              if (i%10==0) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>                synchronized(region) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>                  LOG.debug("flushing");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>                  region.flush(true);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>                  if (i%100==0) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>                    region.compact(false);<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>              }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>              long ts = timeStamps.incrementAndGet();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>              RowMutations rm = new RowMutations(row);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>              if (op) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>                Put p = new Put(row, ts);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>                p.addColumn(fam1, qual1, value1);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>                rm.add(p);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>                Delete d = new Delete(row);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>                d.addColumns(fam1, qual2, ts);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>                rm.add(d);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              } else {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                Delete d = new Delete(row);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                d.addColumns(fam1, qual1, ts);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>                rm.add(d);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>                Put p = new Put(row, ts);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>                p.addColumn(fam1, qual2, value2);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>                rm.add(p);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>              }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>              region.mutateRow(rm);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>              op ^= true;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>              // check: should always see exactly one column<a name="line.421"></a>
-<span class="sourceLineNo">422</span>              Get g = new Get(row);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>              Result r = region.get(g);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>              if (r.size() != 1) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                LOG.debug(r);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>                failures.incrementAndGet();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>                fail();<a name="line.427"></a>
-<span class="sourceLineNo">428</span>              }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>            } catch (IOException e) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>              e.printStackTrace();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>              failures.incrementAndGet();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>              fail();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>            }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      };<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // run all threads<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      all[i].start();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // wait for all threads to finish<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      try {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        all[i].join();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>  /**<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * Test multi-threaded region mutations.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  @Test<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // create 10 threads, each will alternate between adding and<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // removing a column<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    int numThreads = 10;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    int opsPerThread = 250;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // create all threads<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        public void run() {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          boolean op = true;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            try {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>              // throw in some flushes<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              if (i%10==0) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>                synchronized(region) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>                  LOG.debug("flushing");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>                  region.flush(true);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>                  if (i%100==0) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>                    region.compact(false);<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>              long ts = timeStamps.incrementAndGet();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              if (op) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>                Put p = new Put(row2, ts);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>                p.addColumn(fam1, qual1, value1);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>                mrm.add(p);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>                Delete d = new Delete(row);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>                d.addColumns(fam1, qual1, ts);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>                mrm.add(d);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>              } else {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>                Delete d = new Delete(row2);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>                d.addColumns(fam1, qual1, ts);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>                mrm.add(d);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>                Put p = new Put(row, ts);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                p.addColumn(fam1, qual1, value2);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>                mrm.add(p);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>              }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>              op ^= true;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>              // check: should always see exactly one column<a name="line.514"></a>
-<span class="sourceLineNo">515</span>              Scan s = new Scan(row);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>              RegionScanner rs = region.getScanner(s);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>              while (rs.next(r))<a name="line.518"></a>
-<span class="sourceLineNo">519</span>                ;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              rs.close();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              if (r.size() != 1) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>                LOG.debug(r);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>                failures.incrementAndGet();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>                fail();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>            } catch (IOException e) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>              e.printStackTrace();<a name="line.527"></a>
-<span class="sourceLineNo">528</span>              failures.incrementAndGet();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>              fail();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>            }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>          }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      };<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // run all threads<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      all[i].start();<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    // wait for all threads to finish<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      try {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        all[i].join();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public static class AtomicOperation extends Thread {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    protected final Region region;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    protected final int numOps;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    protected final AtomicLong timeStamps;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    protected final AtomicInteger failures;<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    protected final Random r = new Random();<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        AtomicInteger failures) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      this.region = region;<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.numOps = numOps;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      this.timeStamps = timeStamps;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      this.failures = failures;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  }<a name="line.565"></a>
-<span class="sourceLineNo">566</span>  <a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private enum TestStep {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    PUT_COMPLETED,         // put complete (released RowLock, but may not have advanced MVCC).<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    CHECKANDPUT_STARTED,   // began checkAndPut: if 10 -&gt; 11<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    CHECKANDPUT_COMPLETED  // completed checkAndPut<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    // NOTE: at the end of these steps, the value of the cell should be 50, not 11!<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  private static volatile TestStep testStep = TestStep.INIT;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>  private final String family = "f1";<a name="line.577"></a>
-<span class="sourceLineNo">578</span>     <a name="line.578"></a>
-<span class="sourceLineNo">579</span>  /**<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Test written as a verifier for HBASE-7051, CheckAndPut should properly read<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * MVCC. <a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * <a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * Moved into TestAtomicOperation from its original location, TestHBase7051<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testPutAndCheckAndPutInParallel() throws Exception {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    final String tableName = "testPutAndCheckAndPut";<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    conf.setClass(HConstants.REGION_IMPL, MockHRegion.class, HeapSize.class);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName))<a name="line.590"></a>
-<span class="sourceLineNo">591</span>        .addFamily(new HColumnDescriptor(family));<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    this.region = TEST_UTIL.createLocalHRegion(htd, null, null);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Put[] puts = new Put[1];<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    Put put = new Put(Bytes.toBytes("r1"));<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("10"));<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    puts[0] = put;<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    <a name="line.597"></a>
-<span class="sourceLineNo">598</span>    region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    MultithreadedTestUtil.TestContext ctx =<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      new MultithreadedTestUtil.TestContext(conf);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    ctx.addThread(new PutThread(ctx, region));<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    ctx.addThread(new CheckAndPutThread(ctx, region));<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    ctx.startThreads();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    while (testStep != TestStep.CHECKANDPUT_COMPLETED) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      Thread.sleep(100);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    ctx.stop();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    Scan s = new Scan();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    RegionScanner scanner = region.getScanner(s);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    List&lt;Cell&gt; results = new ArrayList&lt;Cell&gt;();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    ScannerContext scannerContext = ScannerContext.newBuilder().setBatchLimit(2).build();<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    scanner.next(results, scannerContext);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    for (Cell keyValue : results) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      assertEquals("50",Bytes.toString(CellUtil.cloneValue(keyValue)));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  private class PutThread extends TestThread {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    private Region region;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    PutThread(TestContext ctx, Region region) {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      super(ctx);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      this.region = region;<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    }<a name="line.623"></a>
-<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span>    public void doWork() throws Exception {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      Put[] puts = new Put[1];<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("50"));<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      puts[0] = put;<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      testStep = TestStep.PUT_STARTED;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    }<a name="line.632"></a>
-<span class="sourceLineNo">633</span>  }<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>  private class CheckAndPutThread extends TestThread {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    private Region region;<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    CheckAndPutThread(TestContext ctx, Region region) {<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      super(ctx);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      this.region = region;<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   }<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>    public void doWork() throws Exception {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      Put[] puts = new Put[1];<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("11"));<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      puts[0] = put;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      while (testStep != TestStep.PUT_COMPLETED) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        Thread.sleep(100);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      testStep = TestStep.CHECKANDPUT_STARTED;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      region.checkAndMutate(Bytes.toBytes("r1"), Bytes.toBytes(family), Bytes.toBytes("q1"),<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("10")), put, true);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      testStep = TestStep.CHECKANDPUT_COMPLETED;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>  public static class MockHRegion extends HRegion {<a name="line.657"></a>
-<span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    public MockHRegion(Path tableDir, WAL log, FileSystem fs, Configuration conf,<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        final HRegionInfo regionInfo, final HTableDescriptor htd, RegionServerServices rsServices) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      super(tableDir, log, fs, conf, regionInfo, htd, rsServices);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    @Override<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    public RowLock getRowLock(final byte[] row, boolean readLock) throws IOException {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      if (testStep == TestStep.CHECKANDPUT_STARTED) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        latch.countDown();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      return new WrappedRowLock(super.getRowLock(row, readLock));<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    <a name="line.671"></a>
-<span class="sourceLineNo">672</span>    public class WrappedRowLock implements RowLock {<a name="line.672"></a>
-<span class="sourceLineNo">673</span><a name="line.673"></a>
-<span class="sourceLineNo">674</span>      private final RowLock rowLock;<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>      private WrappedRowLock(RowLock rowLock) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>        this.rowLock = rowLock;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      }<a name="line.678"></a>
+<span class="sourceLineNo">290</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.291"></a>
+<span class="sourceLineNo">292</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.295"></a>
+<span class="sourceLineNo">296</span>               Bytes.toLong(result.getValue(fam1, qual2)));<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            long fam1Increment = Bytes.toLong(result.getValue(fam1, qual1))*3;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>            long fam2Increment = Bytes.toLong(result.getValue(fam2, qual3));<a name="line.298"></a>
+<span class="sourceLineNo">299</span>            assertEquals("fam1=" + fam1Increment + ", fam2=" + fam2Increment,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              fam1Increment, fam2Increment);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        } catch (IOException e) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          e.printStackTrace();<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>    }<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>  @Test<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public void testAppendMultiThreads() throws IOException {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // run a with mixed column families (1 and 3 versions)<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    int numThreads = 100;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    int opsPerThread = 100;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    final byte[] val = new byte[]{1};<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    // create all threads<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        @Override<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        public void run() {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>            try {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>              Append a = new Append(row);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>              a.add(fam1, qual1, val);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>              a.add(fam1, qual2, val);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>              a.add(fam2, qual3, val);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>              Get g = new Get(row);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>              Result result = region.get(g);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.337"></a>
+<span class="sourceLineNo">338</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.338"></a>
+<span class="sourceLineNo">339</span>            } catch (IOException e) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>              e.printStackTrace();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              failures.incrementAndGet();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>              fail();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>            }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      };<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    // run all threads<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      all[i].start();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    // wait for all threads to finish<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      try {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        all[i].join();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    Get g = new Get(row);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    Result result = region.get(g);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  @Test<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    // create 10 threads, each will alternate between adding and<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // removing a column<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    int numThreads = 10;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    int opsPerThread = 250;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // create all threads<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        @Override<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        public void run() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          boolean op = true;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            try {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              // throw in some flushes<a name="line.392"></a>
+<span class="sourceLineNo">393</span>              if (i%10==0) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>                synchronized(region) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>                  LOG.debug("flushing");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>                  region.flush(true);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>                  if (i%100==0) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>                    region.compact(false);<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>              }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>              long ts = timeStamps.incrementAndGet();<a name="line.402"></a>
+<span class="sourceLineNo">403</span>              RowMutations rm = new RowMutations(row);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              if (op) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                Put p = new Put(row, ts);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                p.addColumn(fam1, qual1, value1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>                rm.add(p);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>                Delete d = new Delete(row);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>                d.addColumns(fam1, qual2, ts);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>                rm.add(d);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>              } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>                Delete d = new Delete(row);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>                d.addColumns(fam1, qual1, ts);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>                rm.add(d);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>                Put p = new Put(row, ts);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>                p.addColumn(fam1, qual2, value2);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                rm.add(p);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>              }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>              region.mutateRow(rm);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>              op ^= true;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>              // check: should always see exactly one column<a name="line.425"></a>
+<span class="sourceLineNo">426</span>              Get g = new Get(row);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>              Result r = region.get(g);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>              if (r.size() != 1) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>                LOG.debug(r);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>                failures.incrementAndGet();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>                fail();<a name="line.431"></a>
+<span class="sourceLineNo">432</span>              }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>            } catch (IOException e) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>              e.printStackTrace();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>              failures.incrementAndGet();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>              fail();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>            }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      };<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // run all threads<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      try {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        all[i].join();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } catch (InterruptedException e) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(0, failures.get());<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><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * Test multi-threaded region mutations.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  @Test<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    // create 10 threads, each will alternate between adding and<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    // removing a column<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    int numThreads = 10;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    int opsPerThread = 250;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // create all threads<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        @Override<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        public void run() {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          boolean op = true;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>            try {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>              // throw in some flushes<a name="line.485"></a>
+<span class="sourceLineNo">486</span>              if (i%10==0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>                synchronized(region) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>                  LOG.debug("flushing");<a name="line.488"></a>
+<span class="sourceLineNo">489</span>                  region.flush(true);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>                  if (i%100==0) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>                    region.compact(false);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>                  }<a name="line.492"></a>
+<span class="sourceLineNo">493</span>                }<a name="line.493"></a>
+<span class="sourceLineNo">494</span>              }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>              long ts = timeStamps.incrementAndGet();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>              if (op) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>                Put p = new Put(row2, ts);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>                p.addColumn(fam1, qual1, value1);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>                mrm.add(p);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>                Delete d = new Delete(row);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>                d.addColumns(fam1, qual1, ts);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>                mrm.add(d);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>              } else {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>                Delete d = new Delete(row2);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>                d.addColumns(fam1, qual1, ts);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>                mrm.add(d);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>                Put p = new Put(row, ts);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>                p.addColumn(fam1, qual1, value2);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>                mrm.add(p);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>              }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>              op ^= true;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>              // check: should always see exactly one column<a name="line.518"></a>
+<span class="sourceLineNo">519</span>              Scan s = new Scan(row);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>              RegionScanner rs = region.getScanner(s);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>              while (rs.next(r))<a name="line.522"></a>
+<span class="sourceLineNo">523</span>                ;<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              rs.close();<a name="line.524"></a>
+<span class="sourceLineNo">525</span>              if (r.size() != 1) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>                LOG.debug(r);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>                failures.incrementAndGet();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>                fail();<a name="line.528"></a>
+<span class="sourceLineNo">529</span>              }<a name="line.529"></a>
+<span class="sourceLineNo">530</span>            } catch (IOException e) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>              e.printStackTrace();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>              failures.incrementAndGet();<a name="line.532"></a>
+<span class="sourceLineNo">533</span>              fail();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>          }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        }<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      };<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span>    // run all threads<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      all[i].start();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>    // wait for all threads to finish<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      try {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>        all[i].join();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      } catch (InterruptedException e) {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    assertEquals(0, failures.get());<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  public static class AtomicOperation extends Thread {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    protected final Region region;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    protected final int numOps;<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    protected final AtomicLong timeStamps;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    protected final AtomicInteger failures;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    protected final Random r = new Random();<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>        AtomicInteger failures) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      this.region = region;<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      this.numOps = numOps;<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.timeStamps = timeStamps;<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      this.failures = failures;<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>  <a name="line.570"></a>
+<span class="sourceLineNo">571</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private enum TestStep {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    PUT_COMPLETED,         // put complete (released RowLock, but may

<TRUNCATED>

[36/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html
index c5c052a..036de4d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/FSHLog.SafePointZigZagLatch.html
@@ -7,1999 +7,1998 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span><a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver.wal;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.wal.DefaultWALProvider.WAL_FILE_NAME_DELIMITER;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.io.FileNotFoundException;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.io.InterruptedIOException;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.io.OutputStream;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.lang.management.ManagementFactory;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.lang.management.MemoryUsage;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.lang.reflect.InvocationTargetException;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.net.URLEncoder;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.ArrayList;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Arrays;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Comparator;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.List;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Map;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.NavigableMap;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.Set;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.concurrent.BlockingQueue;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import java.util.concurrent.CountDownLatch;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.util.concurrent.ExecutionException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.concurrent.ExecutorService;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import java.util.concurrent.Executors;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import java.util.concurrent.TimeUnit;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.commons.logging.Log;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.commons.logging.LogFactory;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.conf.Configuration;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileStatus;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.FileSystem;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.Path;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.fs.PathFilter;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.Cell;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HConstants;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.io.util.HeapMemorySizeUtil;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.DrainBarrier;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.wal.DefaultWALProvider;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.wal.WALPrettyPrinter;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.wal.WALProvider.Writer;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hdfs.DFSOutputStream;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hdfs.client.HdfsDataOutputStream;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.util.StringUtils;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.htrace.NullScope;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.htrace.Span;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.htrace.Trace;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.htrace.TraceScope;<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>import com.google.common.annotations.VisibleForTesting;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import com.lmax.disruptor.BlockingWaitStrategy;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import com.lmax.disruptor.EventHandler;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import com.lmax.disruptor.ExceptionHandler;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import com.lmax.disruptor.LifecycleAware;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import com.lmax.disruptor.TimeoutException;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.lmax.disruptor.dsl.Disruptor;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import com.lmax.disruptor.dsl.ProducerType;<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> * Implementation of {@link WAL} to go against {@link FileSystem}; i.e. keep WALs in HDFS.<a name="line.102"></a>
-<span class="sourceLineNo">103</span> * Only one WAL is ever being written at a time.  When a WAL hits a configured maximum size,<a name="line.103"></a>
-<span class="sourceLineNo">104</span> * it is rolled.  This is done internal to the implementation.<a name="line.104"></a>
-<span class="sourceLineNo">105</span> *<a name="line.105"></a>
-<span class="sourceLineNo">106</span> * &lt;p&gt;As data is flushed from the MemStore to other on-disk structures (files sorted by<a name="line.106"></a>
-<span class="sourceLineNo">107</span> * key, hfiles), a WAL becomes obsolete. We can let go of all the log edits/entries for a given<a name="line.107"></a>
-<span class="sourceLineNo">108</span> * HRegion-sequence id.  A bunch of work in the below is done keeping account of these region<a name="line.108"></a>
-<span class="sourceLineNo">109</span> * sequence ids -- what is flushed out to hfiles, and what is yet in WAL and in memory only.<a name="line.109"></a>
-<span class="sourceLineNo">110</span> *<a name="line.110"></a>
-<span class="sourceLineNo">111</span> * &lt;p&gt;It is only practical to delete entire files. Thus, we delete an entire on-disk file<a name="line.111"></a>
-<span class="sourceLineNo">112</span> * &lt;code&gt;F&lt;/code&gt; when all of the edits in &lt;code&gt;F&lt;/code&gt; have a log-sequence-id that's older<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * (smaller) than the most-recent flush.<a name="line.113"></a>
-<span class="sourceLineNo">114</span> *<a name="line.114"></a>
-<span class="sourceLineNo">115</span> * &lt;p&gt;To read an WAL, call {@link WALFactory#createReader(org.apache.hadoop.fs.FileSystem,<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * org.apache.hadoop.fs.Path)}.<a name="line.116"></a>
-<span class="sourceLineNo">117</span> *<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * &lt;h2&gt;Failure Semantic&lt;/h2&gt;<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * If an exception on append or sync, roll the WAL because the current WAL is now a lame duck;<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * any more appends or syncs will fail also with the same original exception. If we have made<a name="line.120"></a>
-<span class="sourceLineNo">121</span> * successful appends to the WAL and we then are unable to sync them, our current semantic is to<a name="line.121"></a>
-<span class="sourceLineNo">122</span> * return error to the client that the appends failed but also to abort the current context,<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * usually the hosting server. We need to replay the WALs. TODO: Change this semantic. A roll of<a name="line.123"></a>
-<span class="sourceLineNo">124</span> * WAL may be sufficient as long as we have flagged client that the append failed. TODO:<a name="line.124"></a>
-<span class="sourceLineNo">125</span> * replication may pick up these last edits though they have been marked as failed append (Need to<a name="line.125"></a>
-<span class="sourceLineNo">126</span> * keep our own file lengths, not rely on HDFS).<a name="line.126"></a>
-<span class="sourceLineNo">127</span> */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>@InterfaceAudience.Private<a name="line.128"></a>
-<span class="sourceLineNo">129</span>public class FSHLog implements WAL {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  // IMPLEMENTATION NOTES:<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  //<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  // At the core is a ring buffer.  Our ring buffer is the LMAX Disruptor.  It tries to<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  // minimize synchronizations and volatile writes when multiple contending threads as is the case<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  // here appending and syncing on a single WAL.  The Disruptor is configured to handle multiple<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  // producers but it has one consumer only (the producers in HBase are IPC Handlers calling append<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  // and then sync).  The single consumer/writer pulls the appends and syncs off the ring buffer.<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  // When a handler calls sync, it is given back a future. The producer 'blocks' on the future so<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  // it does not return until the sync completes.  The future is passed over the ring buffer from<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  // the producer/handler to the consumer thread where it does its best to batch up the producer<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  // syncs so one WAL sync actually spans multiple producer sync invocations.  How well the<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  // batching works depends on the write rate; i.e. we tend to batch more in times of<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  // high writes/syncs.<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  //<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  // Calls to append now also wait until the append has been done on the consumer side of the<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  // disruptor.  We used to not wait but it makes the implemenation easier to grok if we have<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  // the region edit/sequence id after the append returns.<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  //<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  // TODO: Handlers need to coordinate appending AND syncing.  Can we have the threads contend<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  // once only?  Probably hard given syncs take way longer than an append.<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  //<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  // The consumer threads pass the syncs off to multiple syncing threads in a round robin fashion<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  // to ensure we keep up back-to-back FS sync calls (FS sync calls are the long poll writing the<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  // WAL).  The consumer thread passes the futures to the sync threads for it to complete<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  // the futures when done.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  //<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  // The 'sequence' in the below is the sequence of the append/sync on the ringbuffer.  It<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  // acts as a sort-of transaction id.  It is always incrementing.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  //<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  // The RingBufferEventHandler class hosts the ring buffer consuming code.  The threads that<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  // do the actual FS sync are implementations of SyncRunner.  SafePointZigZagLatch is a<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  // synchronization class used to halt the consumer at a safe point --  just after all outstanding<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  // syncs and appends have completed -- so the log roller can swap the WAL out under it.<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private static final Log LOG = LogFactory.getLog(FSHLog.class);<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  private static final int DEFAULT_SLOW_SYNC_TIME_MS = 100; // in ms<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>   * The nexus at which all incoming handlers meet.  Does appends and sync with an ordering.<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * Appends and syncs are each put on the ring which means handlers need to<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   * smash up against the ring twice (can we make it once only? ... maybe not since time to append<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   * is so different from time to sync and sometimes we don't want to sync or we want to async<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * the sync).  The ring is where we make sure of our ordering and it is also where we do<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   * batching up of handler sync calls.<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   */<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private final Disruptor&lt;RingBufferTruck&gt; disruptor;<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>   * An executorservice that runs the disruptor AppendEventHandler append executor.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>   */<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  private final ExecutorService appendExecutor;<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * This fellow is run by the above appendExecutor service but it is all about batching up appends<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * and syncs; it may shutdown without cleaning out the last few appends or syncs.  To guard<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * against this, keep a reference to this handler and do explicit close on way out to make sure<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * all flushed out before we exit.<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   */<a name="line.188"></a>
-<span class="sourceLineNo">189</span>  private final RingBufferEventHandler ringBufferEventHandler;<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>   * Map of {@link SyncFuture}s keyed by Handler objects.  Used so we reuse SyncFutures.<a name="line.192"></a>
-<span class="sourceLineNo">193</span>   * TODO: Reus FSWALEntry's rather than create them anew each time as we do SyncFutures here.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * TODO: Add a FSWalEntry and SyncFuture as thread locals on handlers rather than have them<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * get them from this Map?<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private final Map&lt;Thread, SyncFuture&gt; syncFuturesByHandler;<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
-<span class="sourceLineNo">200</span>   * The highest known outstanding unsync'd WALEdit sequence number where sequence number is the<a name="line.200"></a>
-<span class="sourceLineNo">201</span>   * ring buffer sequence.  Maintained by the ring buffer consumer.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>   */<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  private volatile long highestUnsyncedSequence = -1;<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>   * Updated to the ring buffer sequence of the last successful sync call.  This can be less than<a name="line.206"></a>
-<span class="sourceLineNo">207</span>   * {@link #highestUnsyncedSequence} for case where we have an append where a sync has not yet<a name="line.207"></a>
-<span class="sourceLineNo">208</span>   * come in for it.  Maintained by the syncing threads.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
-<span class="sourceLineNo">210</span>  private final AtomicLong highestSyncedSequence = new AtomicLong(0);<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>   * file system instance<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  protected final FileSystem fs;<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>   * WAL directory, where all WAL files would be placed.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   */<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  private final Path fullPathLogDir;<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  /**<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * dir path where old logs are kept.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   */<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private final Path fullPathArchiveDir;<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * Matches just those wal files that belong to this wal instance.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   */<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  private final PathFilter ourFiles;<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>   * Prefix of a WAL file, usually the region server name it is hosted on.<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  private final String logFilePrefix;<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>   * Suffix included on generated wal file names<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   */<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  private final String logFileSuffix;<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  /**<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   * Prefix used when checking for wal membership.<a name="line.243"></a>
-<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  private final String prefixPathStr;<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  private final WALCoprocessorHost coprocessorHost;<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>   * conf object<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  protected final Configuration conf;<a name="line.252"></a>
-<span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  /** Listeners that are called on WAL events. */<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  private final List&lt;WALActionsListener&gt; listeners =<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    new CopyOnWriteArrayList&lt;WALActionsListener&gt;();<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  @Override<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public void registerWALActionsListener(final WALActionsListener listener) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    this.listeners.add(listener);<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>  @Override<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  public boolean unregisterWALActionsListener(final WALActionsListener listener) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    return this.listeners.remove(listener);<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>  @Override<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  public WALCoprocessorHost getCoprocessorHost() {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    return coprocessorHost;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  /**<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * FSDataOutputStream associated with the current SequenceFile.writer<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   */<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  private FSDataOutputStream hdfs_out;<a name="line.276"></a>
-<span class="sourceLineNo">277</span><a name="line.277"></a>
-<span class="sourceLineNo">278</span>  // All about log rolling if not enough replicas outstanding.<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>  // Minimum tolerable replicas, if the actual value is lower than it, rollWriter will be triggered<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  private final int minTolerableReplication;<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  private final int slowSyncNs;<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  // If live datanode count is lower than the default replicas value,<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  // RollWriter will be triggered in each sync(So the RollWriter will be<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // triggered one by one in a short time). Using it as a workaround to slow<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  // down the roll frequency triggered by checkLowReplication().<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  private final AtomicInteger consecutiveLogRolls = new AtomicInteger(0);<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>  private final int lowReplicationRollLimit;<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  // If consecutiveLogRolls is larger than lowReplicationRollLimit,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  // then disable the rolling in checkLowReplication().<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // Enable it if the replications recover.<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private volatile boolean lowReplicationRollEnabled = true;<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>   * Class that does accounting of sequenceids in WAL subsystem. Holds oldest outstanding<a name="line.299"></a>
-<span class="sourceLineNo">300</span>   * sequence id as yet not flushed as well as the most recent edit sequence id appended to the<a name="line.300"></a>
-<span class="sourceLineNo">301</span>   * WAL. Has facility for answering questions such as "Is it safe to GC a WAL?".<a name="line.301"></a>
-<span class="sourceLineNo">302</span>   */<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  private SequenceIdAccounting sequenceIdAccounting = new SequenceIdAccounting();<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>   * Current log file.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   */<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  volatile Writer writer;<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>  /** The barrier used to ensure that close() waits for all log rolls and flushes to finish. */<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  private final DrainBarrier closeBarrier = new DrainBarrier();<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  /**<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * This lock makes sure only one log roll runs at a time. Should not be taken while any other<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * lock is held. We don't just use synchronized because that results in bogus and tedious<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * findbugs warning when it thinks synchronized controls writer thread safety.  It is held when<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * we are actually rolling the log.  It is checked when we are looking to see if we should roll<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * the log or not.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private final ReentrantLock rollWriterLock = new ReentrantLock(true);<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>  private volatile boolean closed = false;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private final AtomicBoolean shutdown = new AtomicBoolean(false);<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // The timestamp (in ms) when the log file was created.<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private final AtomicLong filenum = new AtomicLong(-1);<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // Number of transactions in the current Wal.<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private final AtomicInteger numEntries = new AtomicInteger(0);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // If &gt; than this size, roll the log.<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private final long logrollsize;<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  /**<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * The total size of wal<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  private AtomicLong totalLogSize = new AtomicLong(0);<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  /*<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * If more than this many logs, force flush of oldest region to oldest edit<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * goes to disk.  If too many and we crash, then will take forever replaying.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * Keep the number of logs tidy.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private final int maxLogs;<a name="line.344"></a>
-<span class="sourceLineNo">345</span><a name="line.345"></a>
-<span class="sourceLineNo">346</span>  /** Number of log close errors tolerated before we abort */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private final int closeErrorsTolerated;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  private final AtomicInteger closeErrorCount = new AtomicInteger();<a name="line.349"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.regionserver.wal;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.wal.DefaultWALProvider.WAL_FILE_NAME_DELIMITER;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.FileNotFoundException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.InterruptedIOException;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.io.OutputStream;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.lang.management.ManagementFactory;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.lang.management.MemoryUsage;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.lang.reflect.InvocationTargetException;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.net.URLEncoder;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.ArrayList;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.Arrays;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.Comparator;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.List;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Map;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.NavigableMap;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.Set;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.concurrent.BlockingQueue;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.concurrent.ConcurrentSkipListMap;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.concurrent.CopyOnWriteArrayList;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.concurrent.CountDownLatch;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.util.concurrent.ExecutionException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.concurrent.ExecutorService;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import java.util.concurrent.Executors;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.TimeUnit;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import java.util.concurrent.atomic.AtomicLong;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import java.util.concurrent.locks.ReentrantLock;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FSDataOutputStream;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.FileStatus;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.fs.FileSystem;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.fs.Path;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.fs.PathFilter;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.Cell;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.HConstants;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.io.util.HeapMemorySizeUtil;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.util.DrainBarrier;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.wal.DefaultWALProvider;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.wal.WALFactory;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.wal.WALPrettyPrinter;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.wal.WALProvider.Writer;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.wal.WALSplitter;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import org.apache.hadoop.hdfs.DFSOutputStream;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import org.apache.hadoop.hdfs.client.HdfsDataOutputStream;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>import org.apache.hadoop.hdfs.protocol.DatanodeInfo;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>import org.apache.hadoop.util.StringUtils;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>import org.apache.htrace.NullScope;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>import org.apache.htrace.Span;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>import org.apache.htrace.Trace;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>import org.apache.htrace.TraceScope;<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>import com.google.common.annotations.VisibleForTesting;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import com.lmax.disruptor.BlockingWaitStrategy;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import com.lmax.disruptor.EventHandler;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import com.lmax.disruptor.ExceptionHandler;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import com.lmax.disruptor.LifecycleAware;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import com.lmax.disruptor.TimeoutException;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import com.lmax.disruptor.dsl.Disruptor;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import com.lmax.disruptor.dsl.ProducerType;<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> * Implementation of {@link WAL} to go against {@link FileSystem}; i.e. keep WALs in HDFS.<a name="line.101"></a>
+<span class="sourceLineNo">102</span> * Only one WAL is ever being written at a time.  When a WAL hits a configured maximum size,<a name="line.102"></a>
+<span class="sourceLineNo">103</span> * it is rolled.  This is done internal to the implementation.<a name="line.103"></a>
+<span class="sourceLineNo">104</span> *<a name="line.104"></a>
+<span class="sourceLineNo">105</span> * &lt;p&gt;As data is flushed from the MemStore to other on-disk structures (files sorted by<a name="line.105"></a>
+<span class="sourceLineNo">106</span> * key, hfiles), a WAL becomes obsolete. We can let go of all the log edits/entries for a given<a name="line.106"></a>
+<span class="sourceLineNo">107</span> * HRegion-sequence id.  A bunch of work in the below is done keeping account of these region<a name="line.107"></a>
+<span class="sourceLineNo">108</span> * sequence ids -- what is flushed out to hfiles, and what is yet in WAL and in memory only.<a name="line.108"></a>
+<span class="sourceLineNo">109</span> *<a name="line.109"></a>
+<span class="sourceLineNo">110</span> * &lt;p&gt;It is only practical to delete entire files. Thus, we delete an entire on-disk file<a name="line.110"></a>
+<span class="sourceLineNo">111</span> * &lt;code&gt;F&lt;/code&gt; when all of the edits in &lt;code&gt;F&lt;/code&gt; have a log-sequence-id that's older<a name="line.111"></a>
+<span class="sourceLineNo">112</span> * (smaller) than the most-recent flush.<a name="line.112"></a>
+<span class="sourceLineNo">113</span> *<a name="line.113"></a>
+<span class="sourceLineNo">114</span> * &lt;p&gt;To read an WAL, call {@link WALFactory#createReader(org.apache.hadoop.fs.FileSystem,<a name="line.114"></a>
+<span class="sourceLineNo">115</span> * org.apache.hadoop.fs.Path)}.<a name="line.115"></a>
+<span class="sourceLineNo">116</span> *<a name="line.116"></a>
+<span class="sourceLineNo">117</span> * &lt;h2&gt;Failure Semantic&lt;/h2&gt;<a name="line.117"></a>
+<span class="sourceLineNo">118</span> * If an exception on append or sync, roll the WAL because the current WAL is now a lame duck;<a name="line.118"></a>
+<span class="sourceLineNo">119</span> * any more appends or syncs will fail also with the same original exception. If we have made<a name="line.119"></a>
+<span class="sourceLineNo">120</span> * successful appends to the WAL and we then are unable to sync them, our current semantic is to<a name="line.120"></a>
+<span class="sourceLineNo">121</span> * return error to the client that the appends failed but also to abort the current context,<a name="line.121"></a>
+<span class="sourceLineNo">122</span> * usually the hosting server. We need to replay the WALs. TODO: Change this semantic. A roll of<a name="line.122"></a>
+<span class="sourceLineNo">123</span> * WAL may be sufficient as long as we have flagged client that the append failed. TODO:<a name="line.123"></a>
+<span class="sourceLineNo">124</span> * replication may pick up these last edits though they have been marked as failed append (Need to<a name="line.124"></a>
+<span class="sourceLineNo">125</span> * keep our own file lengths, not rely on HDFS).<a name="line.125"></a>
+<span class="sourceLineNo">126</span> */<a name="line.126"></a>
+<span class="sourceLineNo">127</span>@InterfaceAudience.Private<a name="line.127"></a>
+<span class="sourceLineNo">128</span>public class FSHLog implements WAL {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  // IMPLEMENTATION NOTES:<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  //<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  // At the core is a ring buffer.  Our ring buffer is the LMAX Disruptor.  It tries to<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  // minimize synchronizations and volatile writes when multiple contending threads as is the case<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  // here appending and syncing on a single WAL.  The Disruptor is configured to handle multiple<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  // producers but it has one consumer only (the producers in HBase are IPC Handlers calling append<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  // and then sync).  The single consumer/writer pulls the appends and syncs off the ring buffer.<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  // When a handler calls sync, it is given back a future. The producer 'blocks' on the future so<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  // it does not return until the sync completes.  The future is passed over the ring buffer from<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  // the producer/handler to the consumer thread where it does its best to batch up the producer<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  // syncs so one WAL sync actually spans multiple producer sync invocations.  How well the<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  // batching works depends on the write rate; i.e. we tend to batch more in times of<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  // high writes/syncs.<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  //<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  // Calls to append now also wait until the append has been done on the consumer side of the<a name="line.143"></a>
+<span class="sourceLineNo">144</span>  // disruptor.  We used to not wait but it makes the implemenation easier to grok if we have<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  // the region edit/sequence id after the append returns.<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  //<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  // TODO: Handlers need to coordinate appending AND syncing.  Can we have the threads contend<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  // once only?  Probably hard given syncs take way longer than an append.<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  //<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  // The consumer threads pass the syncs off to multiple syncing threads in a round robin fashion<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  // to ensure we keep up back-to-back FS sync calls (FS sync calls are the long poll writing the<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  // WAL).  The consumer thread passes the futures to the sync threads for it to complete<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  // the futures when done.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  //<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  // The 'sequence' in the below is the sequence of the append/sync on the ringbuffer.  It<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  // acts as a sort-of transaction id.  It is always incrementing.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>  //<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  // The RingBufferEventHandler class hosts the ring buffer consuming code.  The threads that<a name="line.158"></a>
+<span class="sourceLineNo">159</span>  // do the actual FS sync are implementations of SyncRunner.  SafePointZigZagLatch is a<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  // synchronization class used to halt the consumer at a safe point --  just after all outstanding<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  // syncs and appends have completed -- so the log roller can swap the WAL out under it.<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  private static final Log LOG = LogFactory.getLog(FSHLog.class);<a name="line.163"></a>
+<span class="sourceLineNo">164</span><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  private static final int DEFAULT_SLOW_SYNC_TIME_MS = 100; // in ms<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>   * The nexus at which all incoming handlers meet.  Does appends and sync with an ordering.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * Appends and syncs are each put on the ring which means handlers need to<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * smash up against the ring twice (can we make it once only? ... maybe not since time to append<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * is so different from time to sync and sometimes we don't want to sync or we want to async<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   * the sync).  The ring is where we make sure of our ordering and it is also where we do<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   * batching up of handler sync calls.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   */<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  private final Disruptor&lt;RingBufferTruck&gt; disruptor;<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  /**<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   * An executorservice that runs the disruptor AppendEventHandler append executor.<a name="line.178"></a>
+<span class="sourceLineNo">179</span>   */<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  private final ExecutorService appendExecutor;<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>   * This fellow is run by the above appendExecutor service but it is all about batching up appends<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * and syncs; it may shutdown without cleaning out the last few appends or syncs.  To guard<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * against this, keep a reference to this handler and do explicit close on way out to make sure<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * all flushed out before we exit.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   */<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  private final RingBufferEventHandler ringBufferEventHandler;<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>  /**<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   * Map of {@link SyncFuture}s keyed by Handler objects.  Used so we reuse SyncFutures.<a name="line.191"></a>
+<span class="sourceLineNo">192</span>   * TODO: Reus FSWALEntry's rather than create them anew each time as we do SyncFutures here.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>   * TODO: Add a FSWalEntry and SyncFuture as thread locals on handlers rather than have them<a name="line.193"></a>
+<span class="sourceLineNo">194</span>   * get them from this Map?<a name="line.194"></a>
+<span class="sourceLineNo">195</span>   */<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  private final Map&lt;Thread, SyncFuture&gt; syncFuturesByHandler;<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>  /**<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * The highest known outstanding unsync'd WALEdit sequence number where sequence number is the<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * ring buffer sequence.  Maintained by the ring buffer consumer.<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   */<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  private volatile long highestUnsyncedSequence = -1;<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>  /**<a name="line.204"></a>
+<span class="sourceLineNo">205</span>   * Updated to the ring buffer sequence of the last successful sync call.  This can be less than<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * {@link #highestUnsyncedSequence} for case where we have an append where a sync has not yet<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * come in for it.  Maintained by the syncing threads.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   */<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  private final AtomicLong highestSyncedSequence = new AtomicLong(0);<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>   * file system instance<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  protected final FileSystem fs;<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>   * WAL directory, where all WAL files would be placed.<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   */<a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private final Path fullPathLogDir;<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>   * dir path where old logs are kept.<a name="line.222"></a>
+<span class="sourceLineNo">223</span>   */<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private final Path fullPathArchiveDir;<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  /**<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   * Matches just those wal files that belong to this wal instance.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   */<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private final PathFilter ourFiles;<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>   * Prefix of a WAL file, usually the region server name it is hosted on.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  private final String logFilePrefix;<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  /**<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   * Suffix included on generated wal file names<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   */<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  private final String logFileSuffix;<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  /**<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Prefix used when checking for wal membership.<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   */<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  private final String prefixPathStr;<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private final WALCoprocessorHost coprocessorHost;<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>   * conf object<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  protected final Configuration conf;<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>  /** Listeners that are called on WAL events. */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  private final List&lt;WALActionsListener&gt; listeners =<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    new CopyOnWriteArrayList&lt;WALActionsListener&gt;();<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>  @Override<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public void registerWALActionsListener(final WALActionsListener listener) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    this.listeners.add(listener);<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>  @Override<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  public boolean unregisterWALActionsListener(final WALActionsListener listener) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    return this.listeners.remove(listener);<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>  @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>  public WALCoprocessorHost getCoprocessorHost() {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    return coprocessorHost;<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>  /**<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   * FSDataOutputStream associated with the current SequenceFile.writer<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   */<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  private FSDataOutputStream hdfs_out;<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  // All about log rolling if not enough replicas outstanding.<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>  // Minimum tolerable replicas, if the actual value is lower than it, rollWriter will be triggered<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  private final int minTolerableReplication;<a name="line.280"></a>
+<span class="sourceLineNo">281</span><a name="line.281"></a>
+<span class="sourceLineNo">282</span>  private final int slowSyncNs;<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  // If live datanode count is lower than the default replicas value,<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  // RollWriter will be triggered in each sync(So the RollWriter will be<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  // triggered one by one in a short time). Using it as a workaround to slow<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // down the roll frequency triggered by checkLowReplication().<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private final AtomicInteger consecutiveLogRolls = new AtomicInteger(0);<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>  private final int lowReplicationRollLimit;<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  // If consecutiveLogRolls is larger than lowReplicationRollLimit,<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  // then disable the rolling in checkLowReplication().<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  // Enable it if the replications recover.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  private volatile boolean lowReplicationRollEnabled = true;<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  /**<a name="line.297"></a>
+<span class="sourceLineNo">298</span>   * Class that does accounting of sequenceids in WAL subsystem. Holds oldest outstanding<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * sequence id as yet not flushed as well as the most recent edit sequence id appended to the<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * WAL. Has facility for answering questions such as "Is it safe to GC a WAL?".<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private SequenceIdAccounting sequenceIdAccounting = new SequenceIdAccounting();<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>  /**<a name="line.304"></a>
+<span class="sourceLineNo">305</span>   * Current log file.<a name="line.305"></a>
+<span class="sourceLineNo">306</span>   */<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  volatile Writer writer;<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>  /** The barrier used to ensure that close() waits for all log rolls and flushes to finish. */<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  private final DrainBarrier closeBarrier = new DrainBarrier();<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>  /**<a name="line.312"></a>
+<span class="sourceLineNo">313</span>   * This lock makes sure only one log roll runs at a time. Should not be taken while any other<a name="line.313"></a>
+<span class="sourceLineNo">314</span>   * lock is held. We don't just use synchronized because that results in bogus and tedious<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * findbugs warning when it thinks synchronized controls writer thread safety.  It is held when<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * we are actually rolling the log.  It is checked when we are looking to see if we should roll<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * the log or not.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   */<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private final ReentrantLock rollWriterLock = new ReentrantLock(true);<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  private volatile boolean closed = false;<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private final AtomicBoolean shutdown = new AtomicBoolean(false);<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  // The timestamp (in ms) when the log file was created.<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  private final AtomicLong filenum = new AtomicLong(-1);<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // Number of transactions in the current Wal.<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private final AtomicInteger numEntries = new AtomicInteger(0);<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  // If &gt; than this size, roll the log.<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  private final long logrollsize;<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
+<span class="sourceLineNo">334</span>   * The total size of wal<a name="line.334"></a>
+<span class="sourceLineNo">335</span>   */<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  private AtomicLong totalLogSize = new AtomicLong(0);<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>   * If more than this many logs, force flush of oldest region to oldest edit<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * goes to disk.  If too many and we crash, then will take forever replaying.<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * Keep the number of logs tidy.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  private final int maxLogs;<a name="line.343"></a>
+<span class="sourceLineNo">344</span><a name="line.344"></a>
+<span class="sourceLineNo">345</span>  /** Number of log close errors tolerated before we abort */<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private final int closeErrorsTolerated;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private final AtomicInteger closeErrorCount = new AtomicInteger();<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
 <span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  /**<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   * WAL Comparator; it compares the timestamp (log filenum), present in the log file name.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>   * Throws an IllegalArgumentException if used to compare paths from different wals.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   */<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  final Comparator&lt;Path&gt; LOG_NAME_COMPARATOR = new Comparator&lt;Path&gt;() {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    @Override<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    public int compare(Path o1, Path o2) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      long t1 = getFileNumFromFileName(o1);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      long t2 = getFileNumFromFileName(o2);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      if (t1 == t2) return 0;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      return (t1 &gt; t2) ? 1 : -1;<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><a name="line.365"></a>
-<span class="sourceLineNo">366</span>  /**<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * Map of WAL log file to the latest sequence ids of all regions it has entries of.<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * The map is sorted by the log file creation timestamp (contained in the log file name).<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private NavigableMap&lt;Path, Map&lt;byte[], Long&gt;&gt; byWalRegionSequenceIds =<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    new ConcurrentSkipListMap&lt;Path, Map&lt;byte[], Long&gt;&gt;(LOG_NAME_COMPARATOR);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  /**<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * Exception handler to pass the disruptor ringbuffer.  Same as native implementation only it<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * logs using our logger instead of java native logger.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  static class RingBufferExceptionHandler implements ExceptionHandler {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    @Override<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    public void handleEventException(Throwable ex, long sequence, Object event) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      LOG.error("Sequence=" + sequence + ", event=" + event, ex);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      throw new RuntimeException(ex);<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 void handleOnStartException(Throwable ex) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      LOG.error(ex);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      throw new RuntimeException(ex);<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>    @Override<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    public void handleOnShutdownException(Throwable ex) {<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      LOG.error(ex);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      throw new RuntimeException(ex);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    }<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>  /**<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * Constructor.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   *<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @param fs filesystem handle<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param root path for stored and archived wals<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param logDir dir where wals are stored<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param conf configuration to use<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @throws IOException<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   */<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public FSHLog(final FileSystem fs, final Path root, final String logDir, final Configuration conf)<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      throws IOException {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    this(fs, root, logDir, HConstants.HREGION_OLDLOGDIR_NAME, conf, null, true, null, null);<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>  /**<a name="line.411"></a>
-<span class="sourceLineNo">412</span>   * Create an edit log at the given &lt;code&gt;dir&lt;/code&gt; location.<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   *<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * You should never have to load an existing log. If there is a log at<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * startup, it should have already been processed and deleted by the time the<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * WAL object is started up.<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   *<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param fs filesystem handle<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @param rootDir path to where logs and oldlogs<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @param logDir dir where wals are stored<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * @param archiveDir dir where wals are archived<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * @param conf configuration to use<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @param listeners Listeners on WAL events. Listeners passed here will<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * be registered before we do anything else; e.g. the<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * Constructor {@link #rollWriter()}.<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * @param failIfWALExists If true IOException will be thrown if files related to this wal<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   *        already exist.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param prefix should always be hostname and port in distributed env and<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   *        it will be URL encoded before being used.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   *        If prefix is null, "wal" will be used<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @param suffix will be url encoded. null is treated as empty. non-empty must start with<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   *        {@link DefaultWALProvider#WAL_FILE_NAME_DELIMITER}<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @throws IOException<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  public FSHLog(final FileSystem fs, final Path rootDir, final String logDir,<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      final String archiveDir, final Configuration conf,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      final List&lt;WALActionsListener&gt; listeners,<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      final boolean failIfWALExists, final String prefix, final String suffix)<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      throws IOException {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    this.fs = fs;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    this.fullPathLogDir = new Path(rootDir, logDir);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    this.fullPathArchiveDir = new Path(rootDir, archiveDir);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    this.conf = conf;<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>    if (!fs.exists(fullPathLogDir) &amp;&amp; !fs.mkdirs(fullPathLogDir)) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      throw new IOException("Unable to mkdir " + fullPathLogDir);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>    if (!fs.exists(this.fullPathArchiveDir)) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      if (!fs.mkdirs(this.fullPathArchiveDir)) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        throw new IOException("Unable to mkdir " + this.fullPathArchiveDir);<a name="line.451"></a>
-<span class="sourceLineNo">452</span>      }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    }<a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>    // If prefix is null||empty then just name it wal<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    this.logFilePrefix =<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      prefix == null || prefix.isEmpty() ? "wal" : URLEncoder.encode(prefix, "UTF8");<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    // we only correctly differentiate suffices when numeric ones start with '.'<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    if (suffix != null &amp;&amp; !(suffix.isEmpty()) &amp;&amp; !(suffix.startsWith(WAL_FILE_NAME_DELIMITER))) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      throw new IllegalArgumentException("WAL suffix must start with '" + WAL_FILE_NAME_DELIMITER +<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          "' but instead was '" + suffix + "'");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    // Now that it exists, set the storage policy for the entire directory of wal files related to<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // this FSHLog instance<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    FSUtils.setStoragePolicy(fs, conf, this.fullPathLogDir, HConstants.WAL_STORAGE_POLICY,<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      HConstants.DEFAULT_WAL_STORAGE_POLICY);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    this.logFileSuffix = (suffix == null) ? "" : URLEncoder.encode(suffix, "UTF8");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    this.prefixPathStr = new Path(fullPathLogDir,<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        logFilePrefix + WAL_FILE_NAME_DELIMITER).toString();<a name="line.469"></a>
-<span class="sourceLineNo">470</span><a name="line.470"></a>
-<span class="sourceLineNo">471</span>    this.ourFiles = new PathFilter() {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      @Override<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      public boolean accept(final Path fileName) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>        // The path should start with dir/&lt;prefix&gt; and end with our suffix<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        final String fileNameString = fileName.toString();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        if (!fileNameString.startsWith(prefixPathStr)) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          return false;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>        }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        if (logFileSuffix.isEmpty()) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>          // in the case of the null suffix, we need to ensure the filename ends with a timestamp.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          return org.apache.commons.lang.StringUtils.isNumeric(<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              fileNameString.substring(prefixPathStr.length()));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        } else if (!fileNameString.endsWith(logFileSuffix)) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>          return false;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        }<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        return true;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      }<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    };<a name="line.488"></a>
-<span class="sourceLineNo">489</span><a name="line.489"></a>
-<span class="sourceLineNo">490</span>    if (failIfWALExists) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      final FileStatus[] walFiles = FSUtils.listStatus(fs, fullPathLogDir, ourFiles);<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      if (null != walFiles &amp;&amp; 0 != walFiles.length) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        throw new IOException("Target WAL already exists within directory " + fullPathLogDir);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>    // Register listeners.  TODO: Should this exist anymore?  We have CPs?<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    if (listeners != null) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      for (WALActionsListener i: listeners) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        registerWALActionsListener(i);<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>    this.coprocessorHost = new WALCoprocessorHost(this, conf);<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>    // Get size to roll log at. Roll at 95% of HDFS block size so we avoid crossing HDFS blocks<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    // (it costs a little x'ing bocks)<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    final long blocksize = this.conf.getLong("hbase.regionserver.hlog.blocksize",<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        FSUtils.getDefaultBlockSize(this.fs, this.fullPathLogDir));<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    this.logrollsize =<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      (long)(blocksize * conf.getFloat("hbase.regionserver.logroll.multiplier", 0.95f));<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    <a name="line.511"></a>
-<span class="sourceLineNo">512</span>    float memstoreRatio = conf.getFloat(HeapMemorySizeUtil.MEMSTORE_SIZE_KEY,<a name="l

<TRUNCATED>

[31/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/distribution-management.html
----------------------------------------------------------------------
diff --git a/distribution-management.html b/distribution-management.html
index f2a7f5a..55b50f5 100644
--- a/distribution-management.html
+++ b/distribution-management.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Distribution Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -290,7 +290,7 @@
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 6699365..3119da1 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="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -330,7 +330,7 @@ for more details.</p>
                         <a href="http://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2016-02-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2016-02-03</li>
             </p>
                 </div>
 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/hbase-spark/license.html
----------------------------------------------------------------------
diff --git a/hbase-spark/license.html b/hbase-spark/license.html
index 8267ce7..46a2535 100644
--- a/hbase-spark/license.html
+++ b/hbase-spark/license.html
@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2016-02-02 -->
+<!-- Generated by Apache Maven Doxia Site Renderer 1.6 at 2016-02-03 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
@@ -10,7 +10,7 @@
       @import url("./css/site.css");
     </style>
     <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
-    <meta name="Date-Revision-yyyymmdd" content="20160202" />
+    <meta name="Date-Revision-yyyymmdd" content="20160203" />
     <meta http-equiv="Content-Language" content="en" />
         
         </head>
@@ -27,7 +27,7 @@
             
                     
                 <div class="xleft">
-        <span id="publishDate">Last Published: 2016-02-02</span>
+        <span id="publishDate">Last Published: 2016-02-03</span>
                   &nbsp;| <span id="projectVersion">Version: 2.0.0-SNAPSHOT</span>
                       </div>
             <div class="xright">                    <a href="./" title="Apache HBase - Spark">Apache HBase - Spark</a>
@@ -120,7 +120,210 @@
 <h2><a name="Project_License"></a>Project License</h2><a name="Project_License"></a>
 <div class="section">
 <h3><a name="The_Apache_Software_License_Version_2.0"></a>The Apache Software License, Version 2.0</h3><a name="The_Apache_Software_License_Version_2.0"></a>
-<p>Can't read the url [http://www.apache.org/licenses/LICENSE-2.0.txt] : connect timed out</p></div></div>
+<div class="source">
+<pre>
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      &quot;Legal Entity&quot; shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      &quot;control&quot; means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      &quot;Source&quot; form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      &quot;Object&quot; form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      &quot;Work&quot; shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      &quot;Derivative Works&quot; shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      &quot;Contribution&quot; shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, &quot;submitted&quot;
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as &quot;Not a Contribution.&quot;
+
+      &quot;Contributor&quot; shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a &quot;NOTICE&quot; text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an &quot;AS IS&quot; BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets &quot;[]&quot;
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same &quot;printed page&quot; as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+</pre></div></div></div>
       </div>
     </div>
     <div class="clear">

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

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

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

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


[04/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
index f538aaa..99eccfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.FlushThread.html
@@ -5018,1055 +5018,1055 @@
 <span class="sourceLineNo">5010</span>        put.addColumn(family, qf, null);<a name="line.5010"></a>
 <span class="sourceLineNo">5011</span>      }<a name="line.5011"></a>
 <span class="sourceLineNo">5012</span>      region.put(put);<a name="line.5012"></a>
-<span class="sourceLineNo">5013</span>    }<a name="line.5013"></a>
-<span class="sourceLineNo">5014</span>  }<a name="line.5014"></a>
-<span class="sourceLineNo">5015</span><a name="line.5015"></a>
-<span class="sourceLineNo">5016</span>  static void verifyData(HRegion newReg, int startRow, int numRows, byte[] qf, byte[]... families)<a name="line.5016"></a>
-<span class="sourceLineNo">5017</span>      throws IOException {<a name="line.5017"></a>
-<span class="sourceLineNo">5018</span>    for (int i = startRow; i &lt; startRow + numRows; i++) {<a name="line.5018"></a>
-<span class="sourceLineNo">5019</span>      byte[] row = Bytes.toBytes("" + i);<a name="line.5019"></a>
-<span class="sourceLineNo">5020</span>      Get get = new Get(row);<a name="line.5020"></a>
-<span class="sourceLineNo">5021</span>      for (byte[] family : families) {<a name="line.5021"></a>
-<span class="sourceLineNo">5022</span>        get.addColumn(family, qf);<a name="line.5022"></a>
-<span class="sourceLineNo">5023</span>      }<a name="line.5023"></a>
-<span class="sourceLineNo">5024</span>      Result result = newReg.get(get);<a name="line.5024"></a>
-<span class="sourceLineNo">5025</span>      Cell[] raw = result.rawCells();<a name="line.5025"></a>
-<span class="sourceLineNo">5026</span>      assertEquals(families.length, result.size());<a name="line.5026"></a>
-<span class="sourceLineNo">5027</span>      for (int j = 0; j &lt; families.length; j++) {<a name="line.5027"></a>
-<span class="sourceLineNo">5028</span>        assertTrue(CellUtil.matchingRow(raw[j], row));<a name="line.5028"></a>
-<span class="sourceLineNo">5029</span>        assertTrue(CellUtil.matchingFamily(raw[j], families[j]));<a name="line.5029"></a>
-<span class="sourceLineNo">5030</span>        assertTrue(CellUtil.matchingQualifier(raw[j], qf));<a name="line.5030"></a>
-<span class="sourceLineNo">5031</span>      }<a name="line.5031"></a>
-<span class="sourceLineNo">5032</span>    }<a name="line.5032"></a>
-<span class="sourceLineNo">5033</span>  }<a name="line.5033"></a>
-<span class="sourceLineNo">5034</span><a name="line.5034"></a>
-<span class="sourceLineNo">5035</span>  static void assertGet(final HRegion r, final byte[] family, final byte[] k) throws IOException {<a name="line.5035"></a>
-<span class="sourceLineNo">5036</span>    // Now I have k, get values out and assert they are as expected.<a name="line.5036"></a>
-<span class="sourceLineNo">5037</span>    Get get = new Get(k).addFamily(family).setMaxVersions();<a name="line.5037"></a>
-<span class="sourceLineNo">5038</span>    Cell[] results = r.get(get).rawCells();<a name="line.5038"></a>
-<span class="sourceLineNo">5039</span>    for (int j = 0; j &lt; results.length; j++) {<a name="line.5039"></a>
-<span class="sourceLineNo">5040</span>      byte[] tmp = CellUtil.cloneValue(results[j]);<a name="line.5040"></a>
-<span class="sourceLineNo">5041</span>      // Row should be equal to value every time.<a name="line.5041"></a>
-<span class="sourceLineNo">5042</span>      assertTrue(Bytes.equals(k, tmp));<a name="line.5042"></a>
-<span class="sourceLineNo">5043</span>    }<a name="line.5043"></a>
-<span class="sourceLineNo">5044</span>  }<a name="line.5044"></a>
-<span class="sourceLineNo">5045</span><a name="line.5045"></a>
-<span class="sourceLineNo">5046</span>  /*<a name="line.5046"></a>
-<span class="sourceLineNo">5047</span>   * Assert first value in the passed region is &lt;code&gt;firstValue&lt;/code&gt;.<a name="line.5047"></a>
-<span class="sourceLineNo">5048</span>   *<a name="line.5048"></a>
-<span class="sourceLineNo">5049</span>   * @param r<a name="line.5049"></a>
-<span class="sourceLineNo">5050</span>   *<a name="line.5050"></a>
-<span class="sourceLineNo">5051</span>   * @param fs<a name="line.5051"></a>
-<span class="sourceLineNo">5052</span>   *<a name="line.5052"></a>
-<span class="sourceLineNo">5053</span>   * @param firstValue<a name="line.5053"></a>
-<span class="sourceLineNo">5054</span>   *<a name="line.5054"></a>
-<span class="sourceLineNo">5055</span>   * @throws IOException<a name="line.5055"></a>
-<span class="sourceLineNo">5056</span>   */<a name="line.5056"></a>
-<span class="sourceLineNo">5057</span>  private void assertScan(final HRegion r, final byte[] fs, final byte[] firstValue)<a name="line.5057"></a>
-<span class="sourceLineNo">5058</span>      throws IOException {<a name="line.5058"></a>
-<span class="sourceLineNo">5059</span>    byte[][] families = { fs };<a name="line.5059"></a>
-<span class="sourceLineNo">5060</span>    Scan scan = new Scan();<a name="line.5060"></a>
-<span class="sourceLineNo">5061</span>    for (int i = 0; i &lt; families.length; i++)<a name="line.5061"></a>
-<span class="sourceLineNo">5062</span>      scan.addFamily(families[i]);<a name="line.5062"></a>
-<span class="sourceLineNo">5063</span>    InternalScanner s = r.getScanner(scan);<a name="line.5063"></a>
-<span class="sourceLineNo">5064</span>    try {<a name="line.5064"></a>
-<span class="sourceLineNo">5065</span>      List&lt;Cell&gt; curVals = new ArrayList&lt;Cell&gt;();<a name="line.5065"></a>
-<span class="sourceLineNo">5066</span>      boolean first = true;<a name="line.5066"></a>
-<span class="sourceLineNo">5067</span>      OUTER_LOOP: while (s.next(curVals)) {<a name="line.5067"></a>
-<span class="sourceLineNo">5068</span>        for (Cell kv : curVals) {<a name="line.5068"></a>
-<span class="sourceLineNo">5069</span>          byte[] val = CellUtil.cloneValue(kv);<a name="line.5069"></a>
-<span class="sourceLineNo">5070</span>          byte[] curval = val;<a name="line.5070"></a>
-<span class="sourceLineNo">5071</span>          if (first) {<a name="line.5071"></a>
-<span class="sourceLineNo">5072</span>            first = false;<a name="line.5072"></a>
-<span class="sourceLineNo">5073</span>            assertTrue(Bytes.compareTo(curval, firstValue) == 0);<a name="line.5073"></a>
-<span class="sourceLineNo">5074</span>          } else {<a name="line.5074"></a>
-<span class="sourceLineNo">5075</span>            // Not asserting anything. Might as well break.<a name="line.5075"></a>
-<span class="sourceLineNo">5076</span>            break OUTER_LOOP;<a name="line.5076"></a>
-<span class="sourceLineNo">5077</span>          }<a name="line.5077"></a>
-<span class="sourceLineNo">5078</span>        }<a name="line.5078"></a>
-<span class="sourceLineNo">5079</span>      }<a name="line.5079"></a>
-<span class="sourceLineNo">5080</span>    } finally {<a name="line.5080"></a>
-<span class="sourceLineNo">5081</span>      s.close();<a name="line.5081"></a>
-<span class="sourceLineNo">5082</span>    }<a name="line.5082"></a>
-<span class="sourceLineNo">5083</span>  }<a name="line.5083"></a>
-<span class="sourceLineNo">5084</span><a name="line.5084"></a>
-<span class="sourceLineNo">5085</span>  /**<a name="line.5085"></a>
-<span class="sourceLineNo">5086</span>   * Test that we get the expected flush results back<a name="line.5086"></a>
-<span class="sourceLineNo">5087</span>   * @throws IOException<a name="line.5087"></a>
-<span class="sourceLineNo">5088</span>   */<a name="line.5088"></a>
-<span class="sourceLineNo">5089</span>  @Test<a name="line.5089"></a>
-<span class="sourceLineNo">5090</span>  public void testFlushResult() throws IOException {<a name="line.5090"></a>
-<span class="sourceLineNo">5091</span>    String method = name.getMethodName();<a name="line.5091"></a>
-<span class="sourceLineNo">5092</span>    TableName tableName = TableName.valueOf(method);<a name="line.5092"></a>
-<span class="sourceLineNo">5093</span>    byte[] family = Bytes.toBytes("family");<a name="line.5093"></a>
-<span class="sourceLineNo">5094</span><a name="line.5094"></a>
-<span class="sourceLineNo">5095</span>    this.region = initHRegion(tableName, method, family);<a name="line.5095"></a>
-<span class="sourceLineNo">5096</span><a name="line.5096"></a>
-<span class="sourceLineNo">5097</span>    // empty memstore, flush doesn't run<a name="line.5097"></a>
-<span class="sourceLineNo">5098</span>    HRegion.FlushResult fr = region.flush(true);<a name="line.5098"></a>
-<span class="sourceLineNo">5099</span>    assertFalse(fr.isFlushSucceeded());<a name="line.5099"></a>
-<span class="sourceLineNo">5100</span>    assertFalse(fr.isCompactionNeeded());<a name="line.5100"></a>
-<span class="sourceLineNo">5101</span><a name="line.5101"></a>
-<span class="sourceLineNo">5102</span>    // Flush enough files to get up to the threshold, doesn't need compactions<a name="line.5102"></a>
-<span class="sourceLineNo">5103</span>    for (int i = 0; i &lt; 2; i++) {<a name="line.5103"></a>
-<span class="sourceLineNo">5104</span>      Put put = new Put(tableName.toBytes()).addColumn(family, family, tableName.toBytes());<a name="line.5104"></a>
-<span class="sourceLineNo">5105</span>      region.put(put);<a name="line.5105"></a>
-<span class="sourceLineNo">5106</span>      fr = region.flush(true);<a name="line.5106"></a>
-<span class="sourceLineNo">5107</span>      assertTrue(fr.isFlushSucceeded());<a name="line.5107"></a>
-<span class="sourceLineNo">5108</span>      assertFalse(fr.isCompactionNeeded());<a name="line.5108"></a>
-<span class="sourceLineNo">5109</span>    }<a name="line.5109"></a>
-<span class="sourceLineNo">5110</span><a name="line.5110"></a>
-<span class="sourceLineNo">5111</span>    // Two flushes after the threshold, compactions are needed<a name="line.5111"></a>
-<span class="sourceLineNo">5112</span>    for (int i = 0; i &lt; 2; i++) {<a name="line.5112"></a>
-<span class="sourceLineNo">5113</span>      Put put = new Put(tableName.toBytes()).addColumn(family, family, tableName.toBytes());<a name="line.5113"></a>
-<span class="sourceLineNo">5114</span>      region.put(put);<a name="line.5114"></a>
-<span class="sourceLineNo">5115</span>      fr = region.flush(true);<a name="line.5115"></a>
-<span class="sourceLineNo">5116</span>      assertTrue(fr.isFlushSucceeded());<a name="line.5116"></a>
-<span class="sourceLineNo">5117</span>      assertTrue(fr.isCompactionNeeded());<a name="line.5117"></a>
-<span class="sourceLineNo">5118</span>    }<a name="line.5118"></a>
-<span class="sourceLineNo">5119</span>  }<a name="line.5119"></a>
-<span class="sourceLineNo">5120</span><a name="line.5120"></a>
-<span class="sourceLineNo">5121</span>  private Configuration initSplit() {<a name="line.5121"></a>
-<span class="sourceLineNo">5122</span>    // Always compact if there is more than one store file.<a name="line.5122"></a>
-<span class="sourceLineNo">5123</span>    CONF.setInt("hbase.hstore.compactionThreshold", 2);<a name="line.5123"></a>
-<span class="sourceLineNo">5124</span><a name="line.5124"></a>
-<span class="sourceLineNo">5125</span>    // Make lease timeout longer, lease checks less frequent<a name="line.5125"></a>
-<span class="sourceLineNo">5126</span>    CONF.setInt("hbase.master.lease.thread.wakefrequency", 5 * 1000);<a name="line.5126"></a>
-<span class="sourceLineNo">5127</span><a name="line.5127"></a>
-<span class="sourceLineNo">5128</span>    CONF.setInt(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, 10 * 1000);<a name="line.5128"></a>
-<span class="sourceLineNo">5129</span><a name="line.5129"></a>
-<span class="sourceLineNo">5130</span>    // Increase the amount of time between client retries<a name="line.5130"></a>
-<span class="sourceLineNo">5131</span>    CONF.setLong("hbase.client.pause", 15 * 1000);<a name="line.5131"></a>
-<span class="sourceLineNo">5132</span><a name="line.5132"></a>
-<span class="sourceLineNo">5133</span>    // This size should make it so we always split using the addContent<a name="line.5133"></a>
-<span class="sourceLineNo">5134</span>    // below. After adding all data, the first region is 1.3M<a name="line.5134"></a>
-<span class="sourceLineNo">5135</span>    CONF.setLong(HConstants.HREGION_MAX_FILESIZE, 1024 * 128);<a name="line.5135"></a>
-<span class="sourceLineNo">5136</span>    return CONF;<a name="line.5136"></a>
-<span class="sourceLineNo">5137</span>  }<a name="line.5137"></a>
-<span class="sourceLineNo">5138</span><a name="line.5138"></a>
-<span class="sourceLineNo">5139</span>  /**<a name="line.5139"></a>
-<span class="sourceLineNo">5140</span>   * @param tableName<a name="line.5140"></a>
-<span class="sourceLineNo">5141</span>   * @param callingMethod<a name="line.5141"></a>
-<span class="sourceLineNo">5142</span>   * @param conf<a name="line.5142"></a>
-<span class="sourceLineNo">5143</span>   * @param families<a name="line.5143"></a>
-<span class="sourceLineNo">5144</span>   * @throws IOException<a name="line.5144"></a>
-<span class="sourceLineNo">5145</span>   * @return A region on which you must call<a name="line.5145"></a>
-<span class="sourceLineNo">5146</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5146"></a>
-<span class="sourceLineNo">5147</span>   */<a name="line.5147"></a>
-<span class="sourceLineNo">5148</span>  private static HRegion initHRegion(TableName tableName, String callingMethod, Configuration conf,<a name="line.5148"></a>
-<span class="sourceLineNo">5149</span>      byte[]... families) throws IOException {<a name="line.5149"></a>
-<span class="sourceLineNo">5150</span>    return initHRegion(tableName, null, null, callingMethod, conf, false, families);<a name="line.5150"></a>
-<span class="sourceLineNo">5151</span>  }<a name="line.5151"></a>
-<span class="sourceLineNo">5152</span><a name="line.5152"></a>
-<span class="sourceLineNo">5153</span>  /**<a name="line.5153"></a>
-<span class="sourceLineNo">5154</span>   * @param tableName<a name="line.5154"></a>
-<span class="sourceLineNo">5155</span>   * @param callingMethod<a name="line.5155"></a>
-<span class="sourceLineNo">5156</span>   * @param conf<a name="line.5156"></a>
-<span class="sourceLineNo">5157</span>   * @param isReadOnly<a name="line.5157"></a>
-<span class="sourceLineNo">5158</span>   * @param families<a name="line.5158"></a>
-<span class="sourceLineNo">5159</span>   * @throws IOException<a name="line.5159"></a>
-<span class="sourceLineNo">5160</span>   * @return A region on which you must call<a name="line.5160"></a>
-<span class="sourceLineNo">5161</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5161"></a>
-<span class="sourceLineNo">5162</span>   */<a name="line.5162"></a>
-<span class="sourceLineNo">5163</span>  private static HRegion initHRegion(TableName tableName, String callingMethod, Configuration conf,<a name="line.5163"></a>
-<span class="sourceLineNo">5164</span>      boolean isReadOnly, byte[]... families) throws IOException {<a name="line.5164"></a>
-<span class="sourceLineNo">5165</span>    return initHRegion(tableName, null, null, callingMethod, conf, isReadOnly, families);<a name="line.5165"></a>
-<span class="sourceLineNo">5166</span>  }<a name="line.5166"></a>
-<span class="sourceLineNo">5167</span><a name="line.5167"></a>
-<span class="sourceLineNo">5168</span>  public static HRegion initHRegion(TableName tableName, byte[] startKey, byte[] stopKey,<a name="line.5168"></a>
-<span class="sourceLineNo">5169</span>      String callingMethod, Configuration conf, boolean isReadOnly, byte[]... families)<a name="line.5169"></a>
-<span class="sourceLineNo">5170</span>      throws IOException {<a name="line.5170"></a>
-<span class="sourceLineNo">5171</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.5171"></a>
-<span class="sourceLineNo">5172</span>    HRegionInfo hri = new HRegionInfo(tableName, startKey, stopKey);<a name="line.5172"></a>
-<span class="sourceLineNo">5173</span>    final WAL wal = HBaseTestingUtility.createWal(conf, logDir, hri);<a name="line.5173"></a>
-<span class="sourceLineNo">5174</span>    return initHRegion(tableName, startKey, stopKey, callingMethod, conf, isReadOnly,<a name="line.5174"></a>
-<span class="sourceLineNo">5175</span>        Durability.SYNC_WAL, wal, families);<a name="line.5175"></a>
-<span class="sourceLineNo">5176</span>  }<a name="line.5176"></a>
-<span class="sourceLineNo">5177</span><a name="line.5177"></a>
-<span class="sourceLineNo">5178</span>  /**<a name="line.5178"></a>
-<span class="sourceLineNo">5179</span>   * @param tableName<a name="line.5179"></a>
-<span class="sourceLineNo">5180</span>   * @param startKey<a name="line.5180"></a>
-<span class="sourceLineNo">5181</span>   * @param stopKey<a name="line.5181"></a>
-<span class="sourceLineNo">5182</span>   * @param callingMethod<a name="line.5182"></a>
-<span class="sourceLineNo">5183</span>   * @param conf<a name="line.5183"></a>
-<span class="sourceLineNo">5184</span>   * @param isReadOnly<a name="line.5184"></a>
-<span class="sourceLineNo">5185</span>   * @param families<a name="line.5185"></a>
-<span class="sourceLineNo">5186</span>   * @throws IOException<a name="line.5186"></a>
-<span class="sourceLineNo">5187</span>   * @return A region on which you must call<a name="line.5187"></a>
-<span class="sourceLineNo">5188</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5188"></a>
-<span class="sourceLineNo">5189</span>   */<a name="line.5189"></a>
-<span class="sourceLineNo">5190</span>  public static HRegion initHRegion(TableName tableName, byte[] startKey, byte[] stopKey,<a name="line.5190"></a>
-<span class="sourceLineNo">5191</span>      String callingMethod, Configuration conf, boolean isReadOnly, Durability durability,<a name="line.5191"></a>
-<span class="sourceLineNo">5192</span>      WAL wal, byte[]... families) throws IOException {<a name="line.5192"></a>
-<span class="sourceLineNo">5193</span>    return TEST_UTIL.createLocalHRegion(tableName, startKey, stopKey,<a name="line.5193"></a>
-<span class="sourceLineNo">5194</span>        isReadOnly, durability, wal, families);<a name="line.5194"></a>
-<span class="sourceLineNo">5195</span>  }<a name="line.5195"></a>
-<span class="sourceLineNo">5196</span><a name="line.5196"></a>
-<span class="sourceLineNo">5197</span>  /**<a name="line.5197"></a>
-<span class="sourceLineNo">5198</span>   * Assert that the passed in Cell has expected contents for the specified row,<a name="line.5198"></a>
-<span class="sourceLineNo">5199</span>   * column &amp; timestamp.<a name="line.5199"></a>
-<span class="sourceLineNo">5200</span>   */<a name="line.5200"></a>
-<span class="sourceLineNo">5201</span>  private void checkOneCell(Cell kv, byte[] cf, int rowIdx, int colIdx, long ts) {<a name="line.5201"></a>
-<span class="sourceLineNo">5202</span>    String ctx = "rowIdx=" + rowIdx + "; colIdx=" + colIdx + "; ts=" + ts;<a name="line.5202"></a>
-<span class="sourceLineNo">5203</span>    assertEquals("Row mismatch which checking: " + ctx, "row:" + rowIdx,<a name="line.5203"></a>
-<span class="sourceLineNo">5204</span>        Bytes.toString(CellUtil.cloneRow(kv)));<a name="line.5204"></a>
-<span class="sourceLineNo">5205</span>    assertEquals("ColumnFamily mismatch while checking: " + ctx, Bytes.toString(cf),<a name="line.5205"></a>
-<span class="sourceLineNo">5206</span>        Bytes.toString(CellUtil.cloneFamily(kv)));<a name="line.5206"></a>
-<span class="sourceLineNo">5207</span>    assertEquals("Column qualifier mismatch while checking: " + ctx, "column:" + colIdx,<a name="line.5207"></a>
-<span class="sourceLineNo">5208</span>        Bytes.toString(CellUtil.cloneQualifier(kv)));<a name="line.5208"></a>
-<span class="sourceLineNo">5209</span>    assertEquals("Timestamp mismatch while checking: " + ctx, ts, kv.getTimestamp());<a name="line.5209"></a>
-<span class="sourceLineNo">5210</span>    assertEquals("Value mismatch while checking: " + ctx, "value-version-" + ts,<a name="line.5210"></a>
-<span class="sourceLineNo">5211</span>        Bytes.toString(CellUtil.cloneValue(kv)));<a name="line.5211"></a>
-<span class="sourceLineNo">5212</span>  }<a name="line.5212"></a>
-<span class="sourceLineNo">5213</span><a name="line.5213"></a>
-<span class="sourceLineNo">5214</span>  @Test (timeout=60000)<a name="line.5214"></a>
-<span class="sourceLineNo">5215</span>  public void testReverseScanner_FromMemStore_SingleCF_Normal()<a name="line.5215"></a>
-<span class="sourceLineNo">5216</span>      throws IOException {<a name="line.5216"></a>
-<span class="sourceLineNo">5217</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5217"></a>
-<span class="sourceLineNo">5218</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5218"></a>
-<span class="sourceLineNo">5219</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5219"></a>
-<span class="sourceLineNo">5220</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5220"></a>
-<span class="sourceLineNo">5221</span>    byte[][] families = { cf };<a name="line.5221"></a>
-<span class="sourceLineNo">5222</span>    byte[] col = Bytes.toBytes("C");<a name="line.5222"></a>
-<span class="sourceLineNo">5223</span>    long ts = 1;<a name="line.5223"></a>
-<span class="sourceLineNo">5224</span>    String method = this.getName();<a name="line.5224"></a>
-<span class="sourceLineNo">5225</span>    this.region = initHRegion(tableName, method, families);<a name="line.5225"></a>
-<span class="sourceLineNo">5226</span>    try {<a name="line.5226"></a>
-<span class="sourceLineNo">5227</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5227"></a>
-<span class="sourceLineNo">5228</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5228"></a>
-<span class="sourceLineNo">5229</span>          null);<a name="line.5229"></a>
-<span class="sourceLineNo">5230</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5230"></a>
-<span class="sourceLineNo">5231</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5231"></a>
-<span class="sourceLineNo">5232</span>      Put put = null;<a name="line.5232"></a>
-<span class="sourceLineNo">5233</span>      put = new Put(rowC);<a name="line.5233"></a>
-<span class="sourceLineNo">5234</span>      put.add(kv1);<a name="line.5234"></a>
-<span class="sourceLineNo">5235</span>      put.add(kv11);<a name="line.5235"></a>
-<span class="sourceLineNo">5236</span>      region.put(put);<a name="line.5236"></a>
-<span class="sourceLineNo">5237</span>      put = new Put(rowA);<a name="line.5237"></a>
-<span class="sourceLineNo">5238</span>      put.add(kv2);<a name="line.5238"></a>
-<span class="sourceLineNo">5239</span>      region.put(put);<a name="line.5239"></a>
-<span class="sourceLineNo">5240</span>      put = new Put(rowB);<a name="line.5240"></a>
-<span class="sourceLineNo">5241</span>      put.add(kv3);<a name="line.5241"></a>
-<span class="sourceLineNo">5242</span>      region.put(put);<a name="line.5242"></a>
-<span class="sourceLineNo">5243</span><a name="line.5243"></a>
-<span class="sourceLineNo">5244</span>      Scan scan = new Scan(rowC);<a name="line.5244"></a>
-<span class="sourceLineNo">5245</span>      scan.setMaxVersions(5);<a name="line.5245"></a>
-<span class="sourceLineNo">5246</span>      scan.setReversed(true);<a name="line.5246"></a>
-<span class="sourceLineNo">5247</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5247"></a>
-<span class="sourceLineNo">5248</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5248"></a>
-<span class="sourceLineNo">5249</span>      boolean hasNext = scanner.next(currRow);<a name="line.5249"></a>
-<span class="sourceLineNo">5250</span>      assertEquals(2, currRow.size());<a name="line.5250"></a>
-<span class="sourceLineNo">5251</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5251"></a>
-<span class="sourceLineNo">5252</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5252"></a>
-<span class="sourceLineNo">5253</span>      assertTrue(hasNext);<a name="line.5253"></a>
-<span class="sourceLineNo">5254</span>      currRow.clear();<a name="line.5254"></a>
-<span class="sourceLineNo">5255</span>      hasNext = scanner.next(currRow);<a name="line.5255"></a>
-<span class="sourceLineNo">5256</span>      assertEquals(1, currRow.size());<a name="line.5256"></a>
-<span class="sourceLineNo">5257</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5257"></a>
-<span class="sourceLineNo">5258</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5258"></a>
-<span class="sourceLineNo">5259</span>      assertTrue(hasNext);<a name="line.5259"></a>
-<span class="sourceLineNo">5260</span>      currRow.clear();<a name="line.5260"></a>
-<span class="sourceLineNo">5261</span>      hasNext = scanner.next(currRow);<a name="line.5261"></a>
-<span class="sourceLineNo">5262</span>      assertEquals(1, currRow.size());<a name="line.5262"></a>
-<span class="sourceLineNo">5263</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5263"></a>
-<span class="sourceLineNo">5264</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5264"></a>
-<span class="sourceLineNo">5265</span>      assertFalse(hasNext);<a name="line.5265"></a>
-<span class="sourceLineNo">5266</span>      scanner.close();<a name="line.5266"></a>
-<span class="sourceLineNo">5267</span>    } finally {<a name="line.5267"></a>
-<span class="sourceLineNo">5268</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5268"></a>
-<span class="sourceLineNo">5269</span>      this.region = null;<a name="line.5269"></a>
-<span class="sourceLineNo">5270</span>    }<a name="line.5270"></a>
-<span class="sourceLineNo">5271</span>  }<a name="line.5271"></a>
-<span class="sourceLineNo">5272</span><a name="line.5272"></a>
-<span class="sourceLineNo">5273</span>  @Test (timeout=60000)<a name="line.5273"></a>
-<span class="sourceLineNo">5274</span>  public void testReverseScanner_FromMemStore_SingleCF_LargerKey()<a name="line.5274"></a>
-<span class="sourceLineNo">5275</span>      throws IOException {<a name="line.5275"></a>
-<span class="sourceLineNo">5276</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5276"></a>
-<span class="sourceLineNo">5277</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5277"></a>
-<span class="sourceLineNo">5278</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5278"></a>
-<span class="sourceLineNo">5279</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5279"></a>
-<span class="sourceLineNo">5280</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5280"></a>
-<span class="sourceLineNo">5281</span>    byte[][] families = { cf };<a name="line.5281"></a>
-<span class="sourceLineNo">5282</span>    byte[] col = Bytes.toBytes("C");<a name="line.5282"></a>
-<span class="sourceLineNo">5283</span>    long ts = 1;<a name="line.5283"></a>
-<span class="sourceLineNo">5284</span>    String method = this.getName();<a name="line.5284"></a>
-<span class="sourceLineNo">5285</span>    this.region = initHRegion(tableName, method, families);<a name="line.5285"></a>
-<span class="sourceLineNo">5286</span>    try {<a name="line.5286"></a>
-<span class="sourceLineNo">5287</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5287"></a>
-<span class="sourceLineNo">5288</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5288"></a>
-<span class="sourceLineNo">5289</span>          null);<a name="line.5289"></a>
-<span class="sourceLineNo">5290</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5290"></a>
-<span class="sourceLineNo">5291</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5291"></a>
-<span class="sourceLineNo">5292</span>      Put put = null;<a name="line.5292"></a>
-<span class="sourceLineNo">5293</span>      put = new Put(rowC);<a name="line.5293"></a>
-<span class="sourceLineNo">5294</span>      put.add(kv1);<a name="line.5294"></a>
-<span class="sourceLineNo">5295</span>      put.add(kv11);<a name="line.5295"></a>
-<span class="sourceLineNo">5296</span>      region.put(put);<a name="line.5296"></a>
-<span class="sourceLineNo">5297</span>      put = new Put(rowA);<a name="line.5297"></a>
-<span class="sourceLineNo">5298</span>      put.add(kv2);<a name="line.5298"></a>
-<span class="sourceLineNo">5299</span>      region.put(put);<a name="line.5299"></a>
-<span class="sourceLineNo">5300</span>      put = new Put(rowB);<a name="line.5300"></a>
-<span class="sourceLineNo">5301</span>      put.add(kv3);<a name="line.5301"></a>
-<span class="sourceLineNo">5302</span>      region.put(put);<a name="line.5302"></a>
-<span class="sourceLineNo">5303</span><a name="line.5303"></a>
-<span class="sourceLineNo">5304</span>      Scan scan = new Scan(rowD);<a name="line.5304"></a>
-<span class="sourceLineNo">5305</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5305"></a>
-<span class="sourceLineNo">5306</span>      scan.setReversed(true);<a name="line.5306"></a>
-<span class="sourceLineNo">5307</span>      scan.setMaxVersions(5);<a name="line.5307"></a>
-<span class="sourceLineNo">5308</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5308"></a>
-<span class="sourceLineNo">5309</span>      boolean hasNext = scanner.next(currRow);<a name="line.5309"></a>
-<span class="sourceLineNo">5310</span>      assertEquals(2, currRow.size());<a name="line.5310"></a>
-<span class="sourceLineNo">5311</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5311"></a>
-<span class="sourceLineNo">5312</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5312"></a>
-<span class="sourceLineNo">5313</span>      assertTrue(hasNext);<a name="line.5313"></a>
-<span class="sourceLineNo">5314</span>      currRow.clear();<a name="line.5314"></a>
-<span class="sourceLineNo">5315</span>      hasNext = scanner.next(currRow);<a name="line.5315"></a>
-<span class="sourceLineNo">5316</span>      assertEquals(1, currRow.size());<a name="line.5316"></a>
-<span class="sourceLineNo">5317</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5317"></a>
-<span class="sourceLineNo">5318</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5318"></a>
-<span class="sourceLineNo">5319</span>      assertTrue(hasNext);<a name="line.5319"></a>
-<span class="sourceLineNo">5320</span>      currRow.clear();<a name="line.5320"></a>
-<span class="sourceLineNo">5321</span>      hasNext = scanner.next(currRow);<a name="line.5321"></a>
-<span class="sourceLineNo">5322</span>      assertEquals(1, currRow.size());<a name="line.5322"></a>
-<span class="sourceLineNo">5323</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5323"></a>
-<span class="sourceLineNo">5324</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5324"></a>
-<span class="sourceLineNo">5325</span>      assertFalse(hasNext);<a name="line.5325"></a>
-<span class="sourceLineNo">5326</span>      scanner.close();<a name="line.5326"></a>
-<span class="sourceLineNo">5327</span>    } finally {<a name="line.5327"></a>
-<span class="sourceLineNo">5328</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5328"></a>
-<span class="sourceLineNo">5329</span>      this.region = null;<a name="line.5329"></a>
-<span class="sourceLineNo">5330</span>    }<a name="line.5330"></a>
-<span class="sourceLineNo">5331</span>  }<a name="line.5331"></a>
-<span class="sourceLineNo">5332</span><a name="line.5332"></a>
-<span class="sourceLineNo">5333</span>  @Test (timeout=60000)<a name="line.5333"></a>
-<span class="sourceLineNo">5334</span>  public void testReverseScanner_FromMemStore_SingleCF_FullScan()<a name="line.5334"></a>
-<span class="sourceLineNo">5335</span>      throws IOException {<a name="line.5335"></a>
-<span class="sourceLineNo">5336</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5336"></a>
-<span class="sourceLineNo">5337</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5337"></a>
-<span class="sourceLineNo">5338</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5338"></a>
-<span class="sourceLineNo">5339</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5339"></a>
-<span class="sourceLineNo">5340</span>    byte[][] families = { cf };<a name="line.5340"></a>
-<span class="sourceLineNo">5341</span>    byte[] col = Bytes.toBytes("C");<a name="line.5341"></a>
-<span class="sourceLineNo">5342</span>    long ts = 1;<a name="line.5342"></a>
-<span class="sourceLineNo">5343</span>    String method = this.getName();<a name="line.5343"></a>
-<span class="sourceLineNo">5344</span>    this.region = initHRegion(tableName, method, families);<a name="line.5344"></a>
-<span class="sourceLineNo">5345</span>    try {<a name="line.5345"></a>
-<span class="sourceLineNo">5346</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5346"></a>
-<span class="sourceLineNo">5347</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5347"></a>
-<span class="sourceLineNo">5348</span>          null);<a name="line.5348"></a>
-<span class="sourceLineNo">5349</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5349"></a>
-<span class="sourceLineNo">5350</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5350"></a>
-<span class="sourceLineNo">5351</span>      Put put = null;<a name="line.5351"></a>
-<span class="sourceLineNo">5352</span>      put = new Put(rowC);<a name="line.5352"></a>
-<span class="sourceLineNo">5353</span>      put.add(kv1);<a name="line.5353"></a>
-<span class="sourceLineNo">5354</span>      put.add(kv11);<a name="line.5354"></a>
-<span class="sourceLineNo">5355</span>      region.put(put);<a name="line.5355"></a>
-<span class="sourceLineNo">5356</span>      put = new Put(rowA);<a name="line.5356"></a>
-<span class="sourceLineNo">5357</span>      put.add(kv2);<a name="line.5357"></a>
-<span class="sourceLineNo">5358</span>      region.put(put);<a name="line.5358"></a>
-<span class="sourceLineNo">5359</span>      put = new Put(rowB);<a name="line.5359"></a>
-<span class="sourceLineNo">5360</span>      put.add(kv3);<a name="line.5360"></a>
-<span class="sourceLineNo">5361</span>      region.put(put);<a name="line.5361"></a>
-<span class="sourceLineNo">5362</span>      Scan scan = new Scan();<a name="line.5362"></a>
-<span class="sourceLineNo">5363</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5363"></a>
-<span class="sourceLineNo">5364</span>      scan.setReversed(true);<a name="line.5364"></a>
-<span class="sourceLineNo">5365</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5365"></a>
-<span class="sourceLineNo">5366</span>      boolean hasNext = scanner.next(currRow);<a name="line.5366"></a>
-<span class="sourceLineNo">5367</span>      assertEquals(1, currRow.size());<a name="line.5367"></a>
-<span class="sourceLineNo">5368</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5368"></a>
-<span class="sourceLineNo">5369</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5369"></a>
-<span class="sourceLineNo">5370</span>      assertTrue(hasNext);<a name="line.5370"></a>
-<span class="sourceLineNo">5371</span>      currRow.clear();<a name="line.5371"></a>
-<span class="sourceLineNo">5372</span>      hasNext = scanner.next(currRow);<a name="line.5372"></a>
-<span class="sourceLineNo">5373</span>      assertEquals(1, currRow.size());<a name="line.5373"></a>
-<span class="sourceLineNo">5374</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5374"></a>
-<span class="sourceLineNo">5375</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5375"></a>
-<span class="sourceLineNo">5376</span>      assertTrue(hasNext);<a name="line.5376"></a>
-<span class="sourceLineNo">5377</span>      currRow.clear();<a name="line.5377"></a>
-<span class="sourceLineNo">5378</span>      hasNext = scanner.next(currRow);<a name="line.5378"></a>
-<span class="sourceLineNo">5379</span>      assertEquals(1, currRow.size());<a name="line.5379"></a>
-<span class="sourceLineNo">5380</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5380"></a>
-<span class="sourceLineNo">5381</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5381"></a>
-<span class="sourceLineNo">5382</span>      assertFalse(hasNext);<a name="line.5382"></a>
-<span class="sourceLineNo">5383</span>      scanner.close();<a name="line.5383"></a>
-<span class="sourceLineNo">5384</span>    } finally {<a name="line.5384"></a>
-<span class="sourceLineNo">5385</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5385"></a>
-<span class="sourceLineNo">5386</span>      this.region = null;<a name="line.5386"></a>
-<span class="sourceLineNo">5387</span>    }<a name="line.5387"></a>
-<span class="sourceLineNo">5388</span>  }<a name="line.5388"></a>
-<span class="sourceLineNo">5389</span><a name="line.5389"></a>
-<span class="sourceLineNo">5390</span>  @Test (timeout=60000)<a name="line.5390"></a>
-<span class="sourceLineNo">5391</span>  public void testReverseScanner_moreRowsMayExistAfter() throws IOException {<a name="line.5391"></a>
-<span class="sourceLineNo">5392</span>    // case for "INCLUDE_AND_SEEK_NEXT_ROW &amp; SEEK_NEXT_ROW" endless loop<a name="line.5392"></a>
-<span class="sourceLineNo">5393</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5393"></a>
-<span class="sourceLineNo">5394</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5394"></a>
-<span class="sourceLineNo">5395</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5395"></a>
-<span class="sourceLineNo">5396</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5396"></a>
-<span class="sourceLineNo">5397</span>    byte[] rowE = Bytes.toBytes("rowE");<a name="line.5397"></a>
-<span class="sourceLineNo">5398</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5398"></a>
-<span class="sourceLineNo">5399</span>    byte[][] families = { cf };<a name="line.5399"></a>
-<span class="sourceLineNo">5400</span>    byte[] col1 = Bytes.toBytes("col1");<a name="line.5400"></a>
-<span class="sourceLineNo">5401</span>    byte[] col2 = Bytes.toBytes("col2");<a name="line.5401"></a>
-<span class="sourceLineNo">5402</span>    long ts = 1;<a name="line.5402"></a>
-<span class="sourceLineNo">5403</span>    String method = this.getName();<a name="line.5403"></a>
-<span class="sourceLineNo">5404</span>    this.region = initHRegion(tableName, method, families);<a name="line.5404"></a>
-<span class="sourceLineNo">5405</span>    try {<a name="line.5405"></a>
-<span class="sourceLineNo">5406</span>      KeyValue kv1 = new KeyValue(rowA, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5406"></a>
-<span class="sourceLineNo">5407</span>      KeyValue kv2 = new KeyValue(rowB, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5407"></a>
-<span class="sourceLineNo">5408</span>      KeyValue kv3 = new KeyValue(rowC, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5408"></a>
-<span class="sourceLineNo">5409</span>      KeyValue kv4_1 = new KeyValue(rowD, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5409"></a>
-<span class="sourceLineNo">5410</span>      KeyValue kv4_2 = new KeyValue(rowD, cf, col2, ts, KeyValue.Type.Put, null);<a name="line.5410"></a>
-<span class="sourceLineNo">5411</span>      KeyValue kv5 = new KeyValue(rowE, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5411"></a>
-<span class="sourceLineNo">5412</span>      Put put = null;<a name="line.5412"></a>
-<span class="sourceLineNo">5413</span>      put = new Put(rowA);<a name="line.5413"></a>
-<span class="sourceLineNo">5414</span>      put.add(kv1);<a name="line.5414"></a>
-<span class="sourceLineNo">5415</span>      region.put(put);<a name="line.5415"></a>
-<span class="sourceLineNo">5416</span>      put = new Put(rowB);<a name="line.5416"></a>
-<span class="sourceLineNo">5417</span>      put.add(kv2);<a name="line.5417"></a>
-<span class="sourceLineNo">5418</span>      region.put(put);<a name="line.5418"></a>
-<span class="sourceLineNo">5419</span>      put = new Put(rowC);<a name="line.5419"></a>
-<span class="sourceLineNo">5420</span>      put.add(kv3);<a name="line.5420"></a>
-<span class="sourceLineNo">5421</span>      region.put(put);<a name="line.5421"></a>
-<span class="sourceLineNo">5422</span>      put = new Put(rowD);<a name="line.5422"></a>
-<span class="sourceLineNo">5423</span>      put.add(kv4_1);<a name="line.5423"></a>
-<span class="sourceLineNo">5424</span>      region.put(put);<a name="line.5424"></a>
-<span class="sourceLineNo">5425</span>      put = new Put(rowD);<a name="line.5425"></a>
-<span class="sourceLineNo">5426</span>      put.add(kv4_2);<a name="line.5426"></a>
-<span class="sourceLineNo">5427</span>      region.put(put);<a name="line.5427"></a>
-<span class="sourceLineNo">5428</span>      put = new Put(rowE);<a name="line.5428"></a>
-<span class="sourceLineNo">5429</span>      put.add(kv5);<a name="line.5429"></a>
-<span class="sourceLineNo">5430</span>      region.put(put);<a name="line.5430"></a>
-<span class="sourceLineNo">5431</span>      region.flush(true);<a name="line.5431"></a>
-<span class="sourceLineNo">5432</span>      Scan scan = new Scan(rowD, rowA);<a name="line.5432"></a>
-<span class="sourceLineNo">5433</span>      scan.addColumn(families[0], col1);<a name="line.5433"></a>
-<span class="sourceLineNo">5434</span>      scan.setReversed(true);<a name="line.5434"></a>
-<span class="sourceLineNo">5435</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5435"></a>
-<span class="sourceLineNo">5436</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5436"></a>
-<span class="sourceLineNo">5437</span>      boolean hasNext = scanner.next(currRow);<a name="line.5437"></a>
-<span class="sourceLineNo">5438</span>      assertEquals(1, currRow.size());<a name="line.5438"></a>
-<span class="sourceLineNo">5439</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5439"></a>
-<span class="sourceLineNo">5440</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5440"></a>
-<span class="sourceLineNo">5441</span>      assertTrue(hasNext);<a name="line.5441"></a>
-<span class="sourceLineNo">5442</span>      currRow.clear();<a name="line.5442"></a>
-<span class="sourceLineNo">5443</span>      hasNext = scanner.next(currRow);<a name="line.5443"></a>
-<span class="sourceLineNo">5444</span>      assertEquals(1, currRow.size());<a name="line.5444"></a>
-<span class="sourceLineNo">5445</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5445"></a>
-<span class="sourceLineNo">5446</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5446"></a>
-<span class="sourceLineNo">5447</span>      assertTrue(hasNext);<a name="line.5447"></a>
-<span class="sourceLineNo">5448</span>      currRow.clear();<a name="line.5448"></a>
-<span class="sourceLineNo">5449</span>      hasNext = scanner.next(currRow);<a name="line.5449"></a>
-<span class="sourceLineNo">5450</span>      assertEquals(1, currRow.size());<a name="line.5450"></a>
-<span class="sourceLineNo">5451</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5451"></a>
-<span class="sourceLineNo">5452</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5452"></a>
-<span class="sourceLineNo">5453</span>      assertFalse(hasNext);<a name="line.5453"></a>
-<span class="sourceLineNo">5454</span>      scanner.close();<a name="line.5454"></a>
-<span class="sourceLineNo">5455</span><a name="line.5455"></a>
-<span class="sourceLineNo">5456</span>      scan = new Scan(rowD, rowA);<a name="line.5456"></a>
-<span class="sourceLineNo">5457</span>      scan.addColumn(families[0], col2);<a name="line.5457"></a>
-<span class="sourceLineNo">5458</span>      scan.setReversed(true);<a name="line.5458"></a>
-<span class="sourceLineNo">5459</span>      currRow.clear();<a name="line.5459"></a>
-<span class="sourceLineNo">5460</span>      scanner = region.getScanner(scan);<a name="line.5460"></a>
-<span class="sourceLineNo">5461</span>      hasNext = scanner.next(currRow);<a name="line.5461"></a>
-<span class="sourceLineNo">5462</span>      assertEquals(1, currRow.size());<a name="line.5462"></a>
-<span class="sourceLineNo">5463</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5463"></a>
-<span class="sourceLineNo">5464</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5464"></a>
-<span class="sourceLineNo">5465</span>      scanner.close();<a name="line.5465"></a>
-<span class="sourceLineNo">5466</span>    } finally {<a name="line.5466"></a>
-<span class="sourceLineNo">5467</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5467"></a>
-<span class="sourceLineNo">5468</span>      this.region = null;<a name="line.5468"></a>
-<span class="sourceLineNo">5469</span>    }<a name="line.5469"></a>
-<span class="sourceLineNo">5470</span>  }<a name="line.5470"></a>
-<span class="sourceLineNo">5471</span><a name="line.5471"></a>
-<span class="sourceLineNo">5472</span>  @Test (timeout=60000)<a name="line.5472"></a>
-<span class="sourceLineNo">5473</span>  public void testReverseScanner_smaller_blocksize() throws IOException {<a name="line.5473"></a>
-<span class="sourceLineNo">5474</span>    // case to ensure no conflict with HFile index optimization<a name="line.5474"></a>
-<span class="sourceLineNo">5475</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5475"></a>
-<span class="sourceLineNo">5476</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5476"></a>
-<span class="sourceLineNo">5477</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5477"></a>
-<span class="sourceLineNo">5478</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5478"></a>
-<span class="sourceLineNo">5479</span>    byte[] rowE = Bytes.toBytes("rowE");<a name="line.5479"></a>
-<span class="sourceLineNo">5480</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5480"></a>
-<span class="sourceLineNo">5481</span>    byte[][] families = { cf };<a name="line.5481"></a>
-<span class="sourceLineNo">5482</span>    byte[] col1 = Bytes.toBytes("col1");<a name="line.5482"></a>
-<span class="sourceLineNo">5483</span>    byte[] col2 = Bytes.toBytes("col2");<a name="line.5483"></a>
-<span class="sourceLineNo">5484</span>    long ts = 1;<a name="line.5484"></a>
-<span class="sourceLineNo">5485</span>    String method = this.getName();<a name="line.5485"></a>
-<span class="sourceLineNo">5486</span>    HBaseConfiguration config = new HBaseConfiguration();<a name="line.5486"></a>
-<span class="sourceLineNo">5487</span>    config.setInt("test.block.size", 1);<a name="line.5487"></a>
-<span class="sourceLineNo">5488</span>    this.region = initHRegion(tableName, method, config, families);<a name="line.5488"></a>
-<span class="sourceLineNo">5489</span>    try {<a name="line.5489"></a>
-<span class="sourceLineNo">5490</span>      KeyValue kv1 = new KeyValue(rowA, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5490"></a>
-<span class="sourceLineNo">5491</span>      KeyValue kv2 = new KeyValue(rowB, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5491"></a>
-<span class="sourceLineNo">5492</span>      KeyValue kv3 = new KeyValue(rowC, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5492"></a>
-<span class="sourceLineNo">5493</span>      KeyValue kv4_1 = new KeyValue(rowD, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5493"></a>
-<span class="sourceLineNo">5494</span>      KeyValue kv4_2 = new KeyValue(rowD, cf, col2, ts, KeyValue.Type.Put, null);<a name="line.5494"></a>
-<span class="sourceLineNo">5495</span>      KeyValue kv5 = new KeyValue(rowE, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5495"></a>
-<span class="sourceLineNo">5496</span>      Put put = null;<a name="line.5496"></a>
-<span class="sourceLineNo">5497</span>      put = new Put(rowA);<a name="line.5497"></a>
-<span class="sourceLineNo">5498</span>      put.add(kv1);<a name="line.5498"></a>
-<span class="sourceLineNo">5499</span>      region.put(put);<a name="line.5499"></a>
-<span class="sourceLineNo">5500</span>      put = new Put(rowB);<a name="line.5500"></a>
-<span class="sourceLineNo">5501</span>      put.add(kv2);<a name="line.5501"></a>
-<span class="sourceLineNo">5502</span>      region.put(put);<a name="line.5502"></a>
-<span class="sourceLineNo">5503</span>      put = new Put(rowC);<a name="line.5503"></a>
-<span class="sourceLineNo">5504</span>      put.add(kv3);<a name="line.5504"></a>
-<span class="sourceLineNo">5505</span>      region.put(put);<a name="line.5505"></a>
-<span class="sourceLineNo">5506</span>      put = new Put(rowD);<a name="line.5506"></a>
-<span class="sourceLineNo">5507</span>      put.add(kv4_1);<a name="line.5507"></a>
-<span class="sourceLineNo">5508</span>      region.put(put);<a name="line.5508"></a>
-<span class="sourceLineNo">5509</span>      put = new Put(rowD);<a name="line.5509"></a>
-<span class="sourceLineNo">5510</span>      put.add(kv4_2);<a name="line.5510"></a>
-<span class="sourceLineNo">5511</span>      region.put(put);<a name="line.5511"></a>
-<span class="sourceLineNo">5512</span>      put = new Put(rowE);<a name="line.5512"></a>
-<span class="sourceLineNo">5513</span>      put.add(kv5);<a name="line.5513"></a>
-<span class="sourceLineNo">5514</span>      region.put(put);<a name="line.5514"></a>
-<span class="sourceLineNo">5515</span>      region.flush(true);<a name="line.5515"></a>
-<span class="sourceLineNo">5516</span>      Scan scan = new Scan(rowD, rowA);<a name="line.5516"></a>
-<span class="sourceLineNo">5517</span>      scan.addColumn(families[0], col1);<a name="line.5517"></a>
-<span class="sourceLineNo">5518</span>      scan.setReversed(true);<a name="line.5518"></a>
-<span class="sourceLineNo">5519</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5519"></a>
-<span class="sourceLineNo">5520</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5520"></a>
-<span class="sourceLineNo">5521</span>      boolean hasNext = scanner.next(currRow);<a name="line.5521"></a>
-<span class="sourceLineNo">5522</span>      assertEquals(1, currRow.size());<a name="line.5522"></a>
-<span class="sourceLineNo">5523</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5523"></a>
-<span class="sourceLineNo">5524</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5524"></a>
-<span class="sourceLineNo">5525</span>      assertTrue(hasNext);<a name="line.5525"></a>
-<span class="sourceLineNo">5526</span>      currRow.clear();<a name="line.5526"></a>
-<span class="sourceLineNo">5527</span>      hasNext = scanner.next(currRow);<a name="line.5527"></a>
-<span class="sourceLineNo">5528</span>      assertEquals(1, currRow.size());<a name="line.5528"></a>
-<span class="sourceLineNo">5529</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5529"></a>
-<span class="sourceLineNo">5530</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5530"></a>
-<span class="sourceLineNo">5531</span>      assertTrue(hasNext);<a name="line.5531"></a>
-<span class="sourceLineNo">5532</span>      currRow.clear();<a name="line.5532"></a>
-<span class="sourceLineNo">5533</span>      hasNext = scanner.next(currRow);<a name="line.5533"></a>
-<span class="sourceLineNo">5534</span>      assertEquals(1, currRow.size());<a name="line.5534"></a>
-<span class="sourceLineNo">5535</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5535"></a>
-<span class="sourceLineNo">5536</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5536"></a>
-<span class="sourceLineNo">5537</span>      assertFalse(hasNext);<a name="line.5537"></a>
-<span class="sourceLineNo">5538</span>      scanner.close();<a name="line.5538"></a>
-<span class="sourceLineNo">5539</span><a name="line.5539"></a>
-<span class="sourceLineNo">5540</span>      scan = new Scan(rowD, rowA);<a name="line.5540"></a>
-<span class="sourceLineNo">5541</span>      scan.addColumn(families[0], col2);<a name="line.5541"></a>
-<span class="sourceLineNo">5542</span>      scan.setReversed(true);<a name="line.5542"></a>
-<span class="sourceLineNo">5543</span>      currRow.clear();<a name="line.5543"></a>
-<span class="sourceLineNo">5544</span>      scanner = region.getScanner(scan);<a name="line.5544"></a>
-<span class="sourceLineNo">5545</span>      hasNext = scanner.next(currRow);<a name="line.5545"></a>
-<span class="sourceLineNo">5546</span>      assertEquals(1, currRow.size());<a name="line.5546"></a>
-<span class="sourceLineNo">5547</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5547"></a>
-<span class="sourceLineNo">5548</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5548"></a>
-<span class="sourceLineNo">5549</span>      scanner.close();<a name="line.5549"></a>
-<span class="sourceLineNo">5550</span>    } finally {<a name="line.5550"></a>
-<span class="sourceLineNo">5551</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5551"></a>
-<span class="sourceLineNo">5552</span>      this.region = null;<a name="line.5552"></a>
-<span class="sourceLineNo">5553</span>    }<a name="line.5553"></a>
-<span class="sourceLineNo">5554</span>  }<a name="line.5554"></a>
-<span class="sourceLineNo">5555</span><a name="line.5555"></a>
-<span class="sourceLineNo">5556</span>  @Test (timeout=60000)<a name="line.5556"></a>
-<span class="sourceLineNo">5557</span>  public void testReverseScanner_FromMemStoreAndHFiles_MultiCFs1()<a name="line.5557"></a>
-<span class="sourceLineNo">5558</span>      throws IOException {<a name="line.5558"></a>
-<span class="sourceLineNo">5559</span>    byte[] row0 = Bytes.toBytes("row0"); // 1 kv<a name="line.5559"></a>
-<span class="sourceLineNo">5560</span>    byte[] row1 = Bytes.toBytes("row1"); // 2 kv<a name="line.5560"></a>
-<span class="sourceLineNo">5561</span>    byte[] row2 = Bytes.toBytes("row2"); // 4 kv<a name="line.5561"></a>
-<span class="sourceLineNo">5562</span>    byte[] row3 = Bytes.toBytes("row3"); // 2 kv<a name="line.5562"></a>
-<span class="sourceLineNo">5563</span>    byte[] row4 = Bytes.toBytes("row4"); // 5 kv<a name="line.5563"></a>
-<span class="sourceLineNo">5564</span>    byte[] row5 = Bytes.toBytes("row5"); // 2 kv<a name="line.5564"></a>
-<span class="sourceLineNo">5565</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5565"></a>
-<span class="sourceLineNo">5566</span>    byte[] cf2 = Bytes.toBytes("CF2");<a name="line.5566"></a>
-<span class="sourceLineNo">5567</span>    byte[] cf3 = Bytes.toBytes("CF3");<a name="line.5567"></a>
-<span class="sourceLineNo">5568</span>    byte[][] families = { cf1, cf2, cf3 };<a name="line.5568"></a>
-<span class="sourceLineNo">5569</span>    byte[] col = Bytes.toBytes("C");<a name="line.5569"></a>
-<span class="sourceLineNo">5570</span>    long ts = 1;<a name="line.5570"></a>
-<span class="sourceLineNo">5571</span>    String method = this.getName();<a name="line.5571"></a>
-<span class="sourceLineNo">5572</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5572"></a>
-<span class="sourceLineNo">5573</span>    // disable compactions in this test.<a name="line.5573"></a>
-<span class="sourceLineNo">5574</span>    conf.setInt("hbase.hstore.compactionThreshold", 10000);<a name="line.5574"></a>
-<span class="sourceLineNo">5575</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5575"></a>
-<span class="sourceLineNo">5576</span>    try {<a name="line.5576"></a>
-<span class="sourceLineNo">5577</span>      // kv naming style: kv(row number) totalKvCountInThisRow seq no<a name="line.5577"></a>
-<span class="sourceLineNo">5578</span>      KeyValue kv0_1_1 = new KeyValue(row0, cf1, col, ts, KeyValue.Type.Put,<a name="line.5578"></a>
-<span class="sourceLineNo">5579</span>          null);<a name="line.5579"></a>
-<span class="sourceLineNo">5580</span>      KeyValue kv1_2_1 = new KeyValue(row1, cf2, col, ts, KeyValue.Type.Put,<a name="line.5580"></a>
-<span class="sourceLineNo">5581</span>          null);<a name="line.5581"></a>
-<span class="sourceLineNo">5582</span>      KeyValue kv1_2_2 = new KeyValue(row1, cf1, col, ts + 1,<a name="line.5582"></a>
-<span class="sourceLineNo">5583</span>          KeyValue.Type.Put, null);<a name="line.5583"></a>
-<span class="sourceLineNo">5584</span>      KeyValue kv2_4_1 = new KeyValue(row2, cf2, col, ts, KeyValue.Type.Put,<a name="line.5584"></a>
-<span class="sourceLineNo">5585</span>          null);<a name="line.5585"></a>
-<span class="sourceLineNo">5586</span>      KeyValue kv2_4_2 = new KeyValue(row2, cf1, col, ts, KeyValue.Type.Put,<a name="line.5586"></a>
-<span class="sourceLineNo">5587</span>          null);<a name="line.5587"></a>
-<span class="sourceLineNo">5588</span>      KeyValue kv2_4_3 = new KeyValue(row2, cf3, col, ts, KeyValue.Type.Put,<a name="line.5588"></a>
-<span class="sourceLineNo">5589</span>          null);<a name="line.5589"></a>
-<span class="sourceLineNo">5590</span>      KeyValue kv2_4_4 = new KeyValue(row2, cf1, col, ts + 4,<a name="line.5590"></a>
-<span class="sourceLineNo">5591</span>          KeyValue.Type.Put, null);<a name="line.5591"></a>
-<span class="sourceLineNo">5592</span>      KeyValue kv3_2_1 = new KeyValue(row3, cf2, col, ts, KeyValue.Type.Put,<a name="line.5592"></a>
-<span class="sourceLineNo">5593</span>          null);<a name="line.5593"></a>
-<span class="sourceLineNo">5594</span>      KeyValue kv3_2_2 = new KeyValue(row3, cf1, col, ts + 4,<a name="line.5594"></a>
-<span class="sourceLineNo">5595</span>          KeyValue.Type.Put, null);<a name="line.5595"></a>
-<span class="sourceLineNo">5596</span>      KeyValue kv4_5_1 = new KeyValue(row4, cf1, col, ts, KeyValue.Type.Put,<a name="line.5596"></a>
-<span class="sourceLineNo">5597</span>          null);<a name="line.5597"></a>
-<span class="sourceLineNo">5598</span>      KeyValue kv4_5_2 = new KeyValue(row4, cf3, col, ts, KeyValue.Type.Put,<a name="line.5598"></a>
-<span class="sourceLineNo">5599</span>          null);<a name="line.5599"></a>
-<span class="sourceLineNo">5600</span>      KeyValue kv4_5_3 = new KeyValue(row4, cf3, col, ts + 5,<a name="line.5600"></a>
-<span class="sourceLineNo">5601</span>          KeyValue.Type.Put, null);<a name="line.5601"></a>
-<span class="sourceLineNo">5602</span>      KeyValue kv4_5_4 = new KeyValue(row4, cf2, col, ts, KeyValue.Type.Put,<a name="line.5602"></a>
-<span class="sourceLineNo">5603</span>          null);<a name="line.5603"></a>
-<span class="sourceLineNo">5604</span>      KeyValue kv4_5_5 = new KeyValue(row4, cf1, col, ts + 3,<a name="line.5604"></a>
-<span class="sourceLineNo">5605</span>          KeyValue.Type.Put, null);<a name="line.5605"></a>
-<span class="sourceLineNo">5606</span>      KeyValue kv5_2_1 = new KeyValue(row5, cf2, col, ts, KeyValue.Type.Put,<a name="line.5606"></a>
-<span class="sourceLineNo">5607</span>          null);<a name="line.5607"></a>
-<span class="sourceLineNo">5608</span>      KeyValue kv5_2_2 = new KeyValue(row5, cf3, col, ts, KeyValue.Type.Put,<a name="line.5608"></a>
-<span class="sourceLineNo">5609</span>          null);<a name="line.5609"></a>
-<span class="sourceLineNo">5610</span>      // hfiles(cf1/cf2) :"row1"(1 kv) / "row2"(1 kv) / "row4"(2 kv)<a name="line.5610"></a>
-<span class="sourceLineNo">5611</span>      Put put = null;<a name="line.5611"></a>
-<span class="sourceLineNo">5612</span>      put = new Put(row1);<a name="line.5612"></a>
-<span class="sourceLineNo">5613</span>      put.add(kv1_2_1);<a name="line.5613"></a>
-<span class="sourceLineNo">5614</span>      region.put(put);<a name="line.5614"></a>
-<span class="sourceLineNo">5615</span>      put = new Put(row2);<a name="line.5615"></a>
-<span class="sourceLineNo">5616</span>      put.add(kv2_4_1);<a name="line.5616"></a>
-<span class="sourceLineNo">5617</span>      region.put(put);<a name="line.5617"></a>
-<span class="sourceLineNo">5618</span>      put = new Put(row4);<a name="line.5618"></a>
-<span class="sourceLineNo">5619</span>      put.add(kv4_5_4);<a name="line.5619"></a>
-<span class="sourceLineNo">5620</span>      put.add(kv4_5_5);<a name="line.5620"></a>
-<span class="sourceLineNo">5621</span>      region.put(put);<a name="line.5621"></a>
-<span class="sourceLineNo">5622</span>      region.flush(true);<a name="line.5622"></a>
-<span class="sourceLineNo">5623</span>      // hfiles(cf1/cf3) : "row1" (1 kvs) / "row2" (1 kv) / "row4" (2 kv)<a name="line.5623"></a>
-<span class="sourceLineNo">5624</span>      put = new Put(row4);<a name="line.5624"></a>
-<span class="sourceLineNo">5625</span>      put.add(kv4_5_1);<a name="line.5625"></a>
-<span class="sourceLineNo">5626</span>      put.add(kv4_5_3);<a name="line.5626"></a>
-<span class="sourceLineNo">5627</span>      region.put(put);<a name="line.5627"></a>
-<span class="sourceLineNo">5628</span>      put = new Put(row1);<a name="line.5628"></a>
-<span class="sourceLineNo">5629</span>      put.add(kv1_2_2);<a name="line.5629"></a>
-<span class="sourceLineNo">5630</span>      region.put(put);<a name="line.5630"></a>
-<span class="sourceLineNo">5631</span>      put = new Put(row2);<a name="line.5631"></a>
-<span class="sourceLineNo">5632</span>      put.add(kv2_4_4);<a name="line.5632"></a>
-<span class="sourceLineNo">5633</span>      region.put(put);<a name="line.5633"></a>
-<span class="sourceLineNo">5634</span>      region.flush(true);<a name="line.5634"></a>
-<span class="sourceLineNo">5635</span>      // hfiles(cf1/cf3) : "row2"(2 kv) / "row3"(1 kvs) / "row4" (1 kv)<a name="line.5635"></a>
-<span class="sourceLineNo">5636</span>      put = new Put(row4);<a name="line.5636"></a>
-<span class="sourceLineNo">5637</span>      put.add(kv4_5_2);<a name="line.5637"></a>
-<span class="sourceLineNo">5638</span>      region.put(put);<a name="line.5638"></a>
-<span class="sourceLineNo">5639</span>      put = new Put(row2);<a name="line.5639"></a>
-<span class="sourceLineNo">5640</span>      put.add(kv2_4_2);<a name="line.5640"></a>
-<span class="sourceLineNo">5641</span>      put.add(kv2_4_3);<a name="line.5641"></a>
-<span class="sourceLineNo">5642</span>      region.put(put);<a name="line.5642"></a>
-<span class="sourceLineNo">5643</span>      put = new Put(row3);<a name="line.5643"></a>
-<span class="sourceLineNo">5644</span>      put.add(kv3_2_2);<a name="line.5644"></a>
-<span class="sourceLineNo">5645</span>      region.put(put);<a name="line.5645"></a>
-<span class="sourceLineNo">5646</span>      region.flush(true);<a name="line.5646"></a>
-<span class="sourceLineNo">5647</span>      // memstore(cf1/cf2/cf3) : "row0" (1 kvs) / "row3" ( 1 kv) / "row5" (max)<a name="line.5647"></a>
-<span class="sourceLineNo">5648</span>      // ( 2 kv)<a name="line.5648"></a>
-<span class="sourceLineNo">5649</span>      put = new Put(row0);<a name="line.5649"></a>
-<span class="sourceLineNo">5650</span>      put.add(kv0_1_1);<a name="line.5650"></a>
-<span class="sourceLineNo">5651</span>      region.put(put);<a name="line.5651"></a>
-<span class="sourceLineNo">5652</span>      put = new Put(row3);<a name="line.5652"></a>
-<span class="sourceLineNo">5653</span>      put.add(kv3_2_1);<a name="line.5653"></a>
-<span class="sourceLineNo">5654</span>      region.put(put);<a name="line.5654"></a>
-<span class="sourceLineNo">5655</span>      put = new Put(row5);<a name="line.5655"></a>
-<span class="sourceLineNo">5656</span>      put.add(kv5_2_1);<a name="line.5656"></a>
-<span class="sourceLineNo">5657</span>      put.add(kv5_2_2);<a name="line.5657"></a>
-<span class="sourceLineNo">5658</span>      region.put(put);<a name="line.5658"></a>
-<span class="sourceLineNo">5659</span>      // scan range = ["row4", min), skip the max "row5"<a name="line.5659"></a>
-<span class="sourceLineNo">5660</span>      Scan scan = new Scan(row4);<a name="line.5660"></a>
-<span class="sourceLineNo">5661</span>      scan.setMaxVersions(5);<a name="line.5661"></a>
-<span class="sourceLineNo">5662</span>      scan.setBatch(3);<a name="line.5662"></a>
-<span class="sourceLineNo">5663</span>      scan.setReversed(true);<a name="line.5663"></a>
-<span class="sourceLineNo">5664</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5664"></a>
-<span class="sourceLineNo">5665</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5665"></a>
-<span class="sourceLineNo">5666</span>      boolean hasNext = false;<a name="line.5666"></a>
-<span class="sourceLineNo">5667</span>      // 1. scan out "row4" (5 kvs), "row5" can't be scanned out since not<a name="line.5667"></a>
-<span class="sourceLineNo">5668</span>      // included in scan range<a name="line.5668"></a>
-<span class="sourceLineNo">5669</span>      // "row4" takes 2 next() calls since batch=3<a name="line.5669"></a>
-<span class="sourceLineNo">5670</span>      hasNext = scanner.next(currRow);<a name="line.5670"></a>
-<span class="sourceLineNo">5671</span>      assertEquals(3, currRow.size());<a name="line.5671"></a>
-<span class="sourceLineNo">5672</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5672"></a>
-<span class="sourceLineNo">5673</span>          .get(0).getRowLength(), row4, 0, row4.length));<a name="line.5673"></a>
-<span class="sourceLineNo">5674</span>      assertTrue(hasNext);<a name="line.5674"></a>
-<span class="sourceLineNo">5675</span>      currRow.clear();<a name="line.5675"></a>
-<span class="sourceLineNo">5676</span>      hasNext = scanner.next(currRow);<a name="line.5676"></a>
-<span class="sourceLineNo">5677</span>      assertEquals(2, currRow.size());<a name="line.5677"></a>
-<span class="sourceLineNo">5678</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow.get(0).getRowLength(), row4, 0,<a name="line.5678"></a>
-<span class="sourceLineNo">5679</span>        row4.length));<a name="line.5679"></a>
-<span class="sourceLineNo">5680</span>      assertTrue(hasNext);<a name="line.5680"></a>
-<span class="sourceLineNo">5681</span>      // 2. scan out "row3" (2 kv)<a name="line.5681"></a>
-<span class="sourceLineNo">5682</span>      currRow.clear();<a name="line.5682"></a>
-<span class="sourceLineNo">5683</span>      hasNext = scanner.next(currRow);<a name="line.5683"></a>
-<span class="sourceLineNo">5684</span>      assertEquals(2, currRow.size());<a name="line.5684"></a>
-<span class="sourceLineNo">5685</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5685"></a>
-<span class="sourceLineNo">5686</span>          .get(0).getRowLength(), row3, 0, row3.length));<a name="line.5686"></a>
-<span class="sourceLineNo">5687</span>      assertTrue(hasNext);<a name="line.5687"></a>
-<span class="sourceLineNo">5688</span>      // 3. scan out "row2" (4 kvs)<a name="line.5688"></a>
-<span class="sourceLineNo">5689</span>      // "row2" takes 2 next() calls since batch=3<a name="line.5689"></a>
-<span class="sourceLineNo">5690</span>      currRow.clear();<a name="line.5690"></a>
-<span class="sourceLineNo">5691</span>      hasNext = scanner.next(currRow);<a name="line.5691"></a>
-<span class="sourceLineNo">5692</span>      assertEquals(3, currRow.size());<a name="line.5692"></a>
-<span class="sourceLineNo">5693</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5693"></a>
-<span class="sourceLineNo">5694</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5694"></a>
-<span class="sourceLineNo">5695</span>      assertTrue(hasNext);<a name="line.5695"></a>
-<span class="sourceLineNo">5696</span>      currRow.clear();<a name="line.5696"></a>
-<span class="sourceLineNo">5697</span>      hasNext = scanner.next(currRow);<a name="line.5697"></a>
-<span class="sourceLineNo">5698</span>      assertEquals(1, currRow.size());<a name="line.5698"></a>
-<span class="sourceLineNo">5699</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5699"></a>
-<span class="sourceLineNo">5700</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5700"></a>
-<span class="sourceLineNo">5701</span>      assertTrue(hasNext);<a name="line.5701"></a>
-<span class="sourceLineNo">5702</span>      // 4. scan out "row1" (2 kv)<a name="line.5702"></a>
-<span class="sourceLineNo">5703</span>      currRow.clear();<a name="line.5703"></a>
-<span class="sourceLineNo">5704</span>      hasNext = scanner.next(currRow);<a name="line.5704"></a>
-<span class="sourceLineNo">5705</span>      assertEquals(2, currRow.size());<a name="line.5705"></a>
-<span class="sourceLineNo">5706</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5706"></a>
-<span class="sourceLineNo">5707</span>          .get(0).getRowLength(), row1, 0, row1.length));<a name="line.5707"></a>
-<span class="sourceLineNo">5708</span>      assertTrue(hasNext);<a name="line.5708"></a>
-<span class="sourceLineNo">5709</span>      // 5. scan out "row0" (1 kv)<a name="line.5709"></a>
-<span class="sourceLineNo">5710</span>      currRow.clear();<a name="line.5710"></a>
-<span class="sourceLineNo">5711</span>      hasNext = scanner.next(currRow);<a name="line.5711"></a>
-<span class="sourceLineNo">5712</span>      assertEquals(1, currRow.size());<a name="line.5712"></a>
-<span class="sourceLineNo">5713</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5713"></a>
-<span class="sourceLineNo">5714</span>          .get(0).getRowLength(), row0, 0, row0.length));<a name="line.5714"></a>
-<span class="sourceLineNo">5715</span>      assertFalse(hasNext);<a name="line.5715"></a>
-<span class="sourceLineNo">5716</span><a name="line.5716"></a>
-<span class="sourceLineNo">5717</span>      scanner.close();<a name="line.5717"></a>
-<span class="sourceLineNo">5718</span>    } finally {<a name="line.5718"></a>
-<span class="sourceLineNo">5719</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5719"></a>
-<span class="sourceLineNo">5720</span>      this.region = null;<a name="line.5720"></a>
-<span class="sourceLineNo">5721</span>    }<a name="line.5721"></a>
-<span class="sourceLineNo">5722</span>  }<a name="line.5722"></a>
-<span class="sourceLineNo">5723</span><a name="line.5723"></a>
-<span class="sourceLineNo">5724</span>  @Test (timeout=60000)<a name="line.5724"></a>
-<span class="sourceLineNo">5725</span>  public void testReverseScanner_FromMemStoreAndHFiles_MultiCFs2()<a name="line.5725"></a>
-<span class="sourceLineNo">5726</span>      throws IOException {<a name="line.5726"></a>
-<span class="sourceLineNo">5727</span>    byte[] row1 = Bytes.toBytes("row1");<a name="line.5727"></a>
-<span class="sourceLineNo">5728</span>    byte[] row2 = Bytes.toBytes("row2");<a name="line.5728"></a>
-<span class="sourceLineNo">5729</span>    byte[] row3 = Bytes.toBytes("row3");<a name="line.5729"></a>
-<span class="sourceLineNo">5730</span>    byte[] row4 = Bytes.toBytes("row4");<a name="line.5730"></a>
-<span class="sourceLineNo">5731</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5731"></a>
-<span class="sourceLineNo">5732</span>    byte[] cf2 = Bytes.toBytes("CF2");<a name="line.5732"></a>
-<span class="sourceLineNo">5733</span>    byte[] cf3 = Bytes.toBytes("CF3");<a name="line.5733"></a>
-<span class="sourceLineNo">5734</span>    byte[] cf4 = Bytes.toBytes("CF4");<a name="line.5734"></a>
-<span class="sourceLineNo">5735</span>    byte[][] families = { cf1, cf2, cf3, cf4 };<a name="line.5735"></a>
-<span class="sourceLineNo">5736</span>    byte[] col = Bytes.toBytes("C");<a name="line.5736"></a>
-<span class="sourceLineNo">5737</span>    long ts = 1;<a name="line.5737"></a>
-<span class="sourceLineNo">5738</span>    String method = this.getName();<a name="line.5738"></a>
-<span class="sourceLineNo">5739</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5739"></a>
-<span class="sourceLineNo">5740</span>    // disable compactions in this test.<a name="line.5740"></a>
-<span class="sourceLineNo">5741</span>    conf.setInt("hbase.hstore.compactionThreshold", 10000);<a name="line.5741"></a>
-<span class="sourceLineNo">5742</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5742"></a>
-<span class="sourceLineNo">5743</span>    try {<a name="line.5743"></a>
-<span class="sourceLineNo">5744</span>      KeyValue kv1 = new KeyValue(row1, cf1, col, ts, KeyValue.Type.Put, null);<a name="line.5744"></a>
-<span class="sourceLineNo">5745</span>      KeyValue kv2 = new KeyValue(row2, cf2, col, ts, KeyValue.Type.Put, null);<a name="line.5745"></a>
-<span class="sourceLineNo">5746</span>      KeyValue kv3 = new KeyValue(row3, cf3, col, ts, KeyValue.Type.Put, null);<a name="line.5746"></a>
-<span class="sourceLineNo">5747</span>      KeyValue kv4 = new KeyValue(row4, cf4, col, ts, KeyValue.Type.Put, null);<a name="line.5747"></a>
-<span class="sourceLineNo">5748</span>      // storefile1<a name="line.5748"></a>
-<span class="sourceLineNo">5749</span>      Put put = new Put(row1);<a name="line.5749"></a>
-<span class="sourceLineNo">5750</span>      put.add(kv1);<a name="line.5750"></a>
-<span class="sourceLineNo">5751</span>      region.put(put);<a name="line.5751"></a>
-<span class="sourceLineNo">5752</span>      region.flush(true);<a name="line.5752"></a>
-<span class="sourceLineNo">5753</span>      // storefile2<a name="line.5753"></a>
-<span class="sourceLineNo">5754</span>      put = new Put(row2);<a name="line.5754"></a>
-<span class="sourceLineNo">5755</span>      put.add(kv2);<a name="line.5755"></a>
-<span class="sourceLineNo">5756</span>      region.put(put);<a name="line.5756"></a>
-<span class="sourceLineNo">5757</span>      region.flush(true);<a name="line.5757"></a>
-<span class="sourceLineNo">5758</span>      // storefile3<a name="line.5758"></a>
-<span class="sourceLineNo">5759</span>      put = new Put(row3);<a name="line.5759"></a>
-<span class="sourceLineNo">5760</span>      put.add(kv3);<a name="line.5760"></a>
-<span class="sourceLineNo">5761</span>      region.put(put);<a name="line.5761"></a>
-<span class="sourceLineNo">5762</span>      region.flush(true);<a name="line.5762"></a>
-<span class="sourceLineNo">5763</span>      // memstore<a name="line.5763"></a>
-<span class="sourceLineNo">5764</span>      put = new Put(row4);<a name="line.5764"></a>
-<span class="sourceLineNo">5765</span>      put.add(kv4);<a name="line.5765"></a>
-<span class="sourceLineNo">5766</span>      region.put(put);<a name="line.5766"></a>
-<span class="sourceLineNo">5767</span>      // scan range = ["row4", min)<a name="line.5767"></a>
-<span class="sourceLineNo">5768</span>      Scan scan = new Scan(row4);<a name="line.5768"></a>
-<span class="sourceLineNo">5769</span>      scan.setReversed(true);<a name="line.5769"></a>
-<span class="sourceLineNo">5770</span>      scan.setBatch(10);<a name="line.5770"></a>
-<span class="sourceLineNo">5771</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5771"></a>
-<span class="sourceLineNo">5772</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5772"></a>
-<span class="sourceLineNo">5773</span>      boolean hasNext = scanner.next(currRow);<a name="line.5773"></a>
-<span class="sourceLineNo">5774</span>      assertEquals(1, currRow.size());<a name="line.5774"></a>
-<span class="sourceLineNo">5775</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5775"></a>
-<span class="sourceLineNo">5776</span>          .get(0).getRowLength(), row4, 0, row4.length));<a name="line.5776"></a>
-<span class="sourceLineNo">5777</span>      assertTrue(hasNext);<a name="line.5777"></a>
-<span class="sourceLineNo">5778</span>      currRow.clear();<a name="line.5778"></a>
-<span class="sourceLineNo">5779</span>      hasNext = scanner.next(currRow);<a name="line.5779"></a>
-<span class="sourceLineNo">5780</span>      assertEquals(1, currRow.size());<a name="line.5780"></a>
-<span class="sourceLineNo">5781</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5781"></a>
-<span class="sourceLineNo">5782</span>          .get(0).getRowLength(), row3, 0, row3.length));<a name="line.5782"></a>
-<span class="sourceLineNo">5783</span>      assertTrue(hasNext);<a name="line.5783"></a>
-<span class="sourceLineNo">5784</span>      currRow.clear();<a name="line.5784"></a>
-<span class="sourceLineNo">5785</span>      hasNext = scanner.next(currRow);<a name="line.5785"></a>
-<span class="sourceLineNo">5786</span>      assertEquals(1, currRow.size());<a name="line.5786"></a>
-<span class="sourceLineNo">5787</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5787"></a>
-<span class="sourceLineNo">5788</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5788"></a>
-<span class="sourceLineNo">5789</span>      assertTrue(hasNext);<a name="line.5789"></a>
-<span class="sourceLineNo">5790</span>      currRow.clear();<a name="line.5790"></a>
-<span class="sourceLineNo">5791</span>      hasNext = scanner.next(currRow);<a name="line.5791"></a>
-<span class="sourceLineNo">5792</span>      assertEquals(1, currRow.size());<a name="line.5792"></a>
-<span class="sourceLineNo">5793</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5793"></a>
-<span class="sourceLineNo">5794</span>          .get(0).getRowLength(), row1, 0, row1.length));<a name="line.5794"></a>
-<span class="sourceLineNo">5795</span>      assertFalse(hasNext);<a name="line.5795"></a>
-<span class="sourceLineNo">5796</span>    } finally {<a name="line.5796"></a>
-<span class="sourceLineNo">5797</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5797"></a>
-<span class="sourceLineNo">5798</span>      this.region = null;<a name="line.5798"></a>
-<span class="sourceLineNo">5799</span>    }<a name="line.5799"></a>
-<span class="sourceLineNo">5800</span>  }<a name="line.5800"></a>
-<span class="sourceLineNo">5801</span><a name="line.5801"></a>
-<span class="sourceLineNo">5802</span>  /**<a name="line.5802"></a>
-<span class="sourceLineNo">5803</span>   * Test for HBASE-14497: Reverse Scan threw StackOverflow caused by readPt checking<a name="line.5803"></a>
-<span class="sourceLineNo">5804</span>   */<a name="line.5804"></a>
-<span class="sourceLineNo">5805</span>  @Test (timeout = 60000)<a name="line.5805"></a>
-<span class="sourceLineNo">5806</span>  public void testReverseScanner_StackOverflow() throws IOException {<a name="line.5806"></a>
-<span class="sourceLineNo">5807</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5807"></a>
-<span class="sourceLineNo">5808</span>    byte[][] families = {cf1};<a name="line.5808"></a>
-<span class="sourceLineNo">5809</span>    byte[] col = Bytes.toBytes("C");<a name="line.5809"></a>
-<span class="sourceLineNo">5810</span>    String method = this.getName();<a name="line.5810"></a>
-<span class="sourceLineNo">5811</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5811"></a>
-<span class="sourceLineNo">5812</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5812"></a>
-<span class="sourceLineNo">5813</span>    try {<a name="line.5813"></a>
-<span class="sourceLineNo">5814</span>      // setup with one storefile and one memstore, to create scanner and get an earlier readPt<a name="line.5814"></a>
-<span class="sourceLineNo">5815</span>      Put put = new Put(Bytes.toBytes("19998"));<a name="line.5815"></a>
-<span class="sourceLineNo">5816</span>      put.addColumn(cf1, col, Bytes.toBytes("val"));<a name="line.5816"></a>
-<span class="sourceLineNo">5817</span>      region.put(put);<a name="line.5817"></a>
-<span class="sourceLineNo">5818</span>      region.flushcache(true, true);<a name="line.5818"></a>
-<span class="sourceLineNo">5819</span>      Put put2 = new Put(Bytes.toBytes("19997"));<a name="line.5819"></a>
-<span class="sourceLineNo">5820</span>      put2.addColumn(cf1, col, Bytes.toBytes("val"));<a name="line.5820"></a>
-<span class="sourceLineNo">5821</span>      region.put(put2);<a name="line.5821"></a>
-<span class="sourceLineNo">5822</span><a name="line.5822"></a>
-<span class="sourceLineNo">5823</span>      Scan scan = new Scan(Bytes.toBytes("19998"));<a name="line.5823"></a>
-<span class="sourceLineNo">5824</span>      scan.setReversed(true);<a name="line.5824"></a>
-<span class="sourceLineNo">5825</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5825"></a>
-<span class="sourceLineNo">5826</span><a name="line.5826"></a>
-<span class="sourceLineNo">5827</span>      // create one storefile contains many rows will be skipped<a name="line.5827"></a>
-<span class="sourceLineNo">5828</span>      // to check StoreFileScanner.seekToPreviousRow<a name="line.5828"></a>
-<span class="sourceLineNo">5829</span>      for (int i = 10000; i &lt; 20000; i++) {<a name="line.5829"></a>
-<span class="sourceLineNo">5830</span>        Put p = new Put(Bytes.toBytes(""+i));<a name="line.5830"></a>
-<span class="sourceLineNo">5831</span>        p.addColumn(cf1, col, Bytes.toBytes("" + i));<a name="line.5831"></a>
-<span class="sourceLineNo">5832</span>        region.put(p);<a name="line.5832"></a>
-<span class="sourceLineNo">5833</span>      }<a name="line.5833"></a>
-<span class="sourceLineNo">5834</span>      region.flushcache(true, true);<a name="line.5834"></a>
-<span class="sourceLineNo">5835</span><a name="line.5835"></a>
-<span class="sourceLineNo">5836</span>      // create one memstore contains many rows will be skipped<a name="line.5836"></a>
-<span class="sourceLineNo">5837</span>      // to check MemStoreScanner.seekToPreviousRow<a name="line.5837"></a>
-<span class="sourceLineNo">5838</span>      for (int i = 10000; i &lt; 20000; i++) {<a name="line.5838"></a>
-<span class="sourceLineNo">5839</span>        Put p = new Put(Bytes.toBytes(""+i));<a name="line.5839"></a>
-<span class="sourceLineNo">5840</span>        p.addColumn(cf1, col, Bytes.toBytes("" + i));<a name="line.5840"></a>
-<span class="sourceLineNo">5841</span>        region.put(p);<a name="line.5841"></a>
-<span class="sourceLineNo">5842</span>      }<a name="line.5842"></a>
-<span class="sourceLineNo">5843</span><a name="line.5843"></a>
-<span class="sourceLineNo">5844</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;&gt;();<a name="line.5844"></a>
-<span class="sourceLineNo">5845</span>      boolean hasNext;<a name="line.5845"></a>
-<span class="sourceLineNo">5846</span>      do {<a name="line.5846"></a>
-<span class="sourceLineNo">5847</span>        hasNext = scanner.next(currRow);<a name="line.5847"></a>
-<span class="sourceLineNo">5848</span>      } while (hasNext);<a name="line.5848"></a>
-<span class="sourceLineNo">5849</span>      assertEquals(2, currRow.size());<a name="line.5849"></a>
-<span class="sourceLineNo">5850</span>      assertEquals("19998", Bytes.toString(currRow.get(0).getRowArray(),<a name="line.5850"></a>
-<span class="sourceLineNo">5851</span>        currRow.get(0).getRowOffset(), currRow.get(0).getRowLength()));<a name="line.5851"></a>
-<span class="sourceLineNo">5852</span>      assertEquals("19997", Bytes.toString(currRow.get(1).getRowArray(),<a name="line.5852"></a>
-<span class="sourceLineNo">5853</span>        currRow.get(1).getRowOffset(), currRow.get(1).getRowLength()));<a name="line.5853"></a>
-<span class="sourceLineNo">5854</span>    } finally {<a name="line.5854"></a>
-<span class="sourceLineNo">5855</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5855"></a>
-<span class="sourceLineNo">5856</span>      this.region = null;<a name="line.5856"></a>
-<span class="sourceLineNo">5857</span>    }<a name="line.5857"></a>
-<span class="sourceLineNo">5858</span>  }<a name="line.5858"></a>
-<span class="sourceLineNo">5859</span><a name="line.5859"></a>
-<span class="sourceLineNo">5860</span>  @Test (timeout=60000)<a name="line.5860"></a>
-<span class="sourceLineNo">5861</span>  public void testSplitRegionWithReverseScan() throws IOException {<a name="line.5861"></a>
-<span class="sourceLineNo">5862</span>    TableName tableName = TableName.valueOf("testSplitRegionWithReverseScan");<a name="line.5862"></a>
-<span class="sourceLineNo">5863</span>    byte [] qualifier = Bytes.toBytes("qualifier");<a name="line.5863"></a>
-<span class="sourceLineNo">5864</span>    Configuration hc = initSplit();<a name="line.5864"></a>
-<span class="sourceLineNo">5865</span>    int numRows = 3;<a name="line.5865"></a>
-<span class="sourceLineNo">5866</span>    byte [][] families = {fam1};<a name="line.5866"></a>
-<span class="sourceLineNo">5867</span><a name="line.5867"></a>
-<span class="sourceLineNo">5868</span>    //Setting up region<a name="line.5868"></a>
-<span class="sourceLineNo">5869</span>    String method = this.getName();<a name="line.5869"></a>
-<span class="sourceLineNo">5870</span>    this.region = initHRegion(tableName, method, hc, families);<a name="line.5870"></a>
-<span class="sourceLineNo">5871</span><a name="line.5871"></a>
-<span class="sourceLineNo">5872</span>    //Put data in region<a name="line.5872"></a>
-<span class="sourceLineNo">5873</span>    int startRow = 100;<a name="line.5873"></a>
-<span class="sourceLineNo">5874</span>    putData(startRow, numRows, qualifier, families);<a name="line.5874"></a>
-<span class="sourceLineNo">5875</span>    int splitRow = startRow + numRows;<a name="line.5875"></a>
-<span class="sourceLineNo">5876</span>    putData(splitRow, numRows, qualifier, families);<a name="line.5876"></a>
-<span class="sourceLineNo">5877</span>    region.flush(true);<a name="line.5877"></a>
-<span class="sourceLineNo">5878</span><a name="line.5878"></a>
-<span class="sourceLineNo">5879</span>    HRegion [] regions = null;<a name="line.5879"></a>
-<span class="sourceLineNo">5880</span>    try {<a name="line.5880"></a>
-<span class="sourceLineNo">5881</span>      regions = splitRegion(region, Bytes.toBytes("" + splitRow));<a name="line.5881"></a>
-<span class="sourceLineNo">5882</span>      //Opening the regions returned.<a name="line.5882"></a>
-<span class="sourceLineNo">5883</span>      for (int i = 0; i &lt; regions.length; i++) {<a name="line.5883"></a>
-<span class="sourceLineNo">5884</span>        regions[i] = HRegion.openHRegion(regions[i], null);<a name="line.5884"></a>
-<span class="sourceLineNo">5885</span>      }<a name="line.5885"></a>
-<span class="sourceLineNo">5886</span>      //Verifying tha

<TRUNCATED>

[05/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
index f538aaa..99eccfd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestHRegion.Appender.html
@@ -5018,1055 +5018,1055 @@
 <span class="sourceLineNo">5010</span>        put.addColumn(family, qf, null);<a name="line.5010"></a>
 <span class="sourceLineNo">5011</span>      }<a name="line.5011"></a>
 <span class="sourceLineNo">5012</span>      region.put(put);<a name="line.5012"></a>
-<span class="sourceLineNo">5013</span>    }<a name="line.5013"></a>
-<span class="sourceLineNo">5014</span>  }<a name="line.5014"></a>
-<span class="sourceLineNo">5015</span><a name="line.5015"></a>
-<span class="sourceLineNo">5016</span>  static void verifyData(HRegion newReg, int startRow, int numRows, byte[] qf, byte[]... families)<a name="line.5016"></a>
-<span class="sourceLineNo">5017</span>      throws IOException {<a name="line.5017"></a>
-<span class="sourceLineNo">5018</span>    for (int i = startRow; i &lt; startRow + numRows; i++) {<a name="line.5018"></a>
-<span class="sourceLineNo">5019</span>      byte[] row = Bytes.toBytes("" + i);<a name="line.5019"></a>
-<span class="sourceLineNo">5020</span>      Get get = new Get(row);<a name="line.5020"></a>
-<span class="sourceLineNo">5021</span>      for (byte[] family : families) {<a name="line.5021"></a>
-<span class="sourceLineNo">5022</span>        get.addColumn(family, qf);<a name="line.5022"></a>
-<span class="sourceLineNo">5023</span>      }<a name="line.5023"></a>
-<span class="sourceLineNo">5024</span>      Result result = newReg.get(get);<a name="line.5024"></a>
-<span class="sourceLineNo">5025</span>      Cell[] raw = result.rawCells();<a name="line.5025"></a>
-<span class="sourceLineNo">5026</span>      assertEquals(families.length, result.size());<a name="line.5026"></a>
-<span class="sourceLineNo">5027</span>      for (int j = 0; j &lt; families.length; j++) {<a name="line.5027"></a>
-<span class="sourceLineNo">5028</span>        assertTrue(CellUtil.matchingRow(raw[j], row));<a name="line.5028"></a>
-<span class="sourceLineNo">5029</span>        assertTrue(CellUtil.matchingFamily(raw[j], families[j]));<a name="line.5029"></a>
-<span class="sourceLineNo">5030</span>        assertTrue(CellUtil.matchingQualifier(raw[j], qf));<a name="line.5030"></a>
-<span class="sourceLineNo">5031</span>      }<a name="line.5031"></a>
-<span class="sourceLineNo">5032</span>    }<a name="line.5032"></a>
-<span class="sourceLineNo">5033</span>  }<a name="line.5033"></a>
-<span class="sourceLineNo">5034</span><a name="line.5034"></a>
-<span class="sourceLineNo">5035</span>  static void assertGet(final HRegion r, final byte[] family, final byte[] k) throws IOException {<a name="line.5035"></a>
-<span class="sourceLineNo">5036</span>    // Now I have k, get values out and assert they are as expected.<a name="line.5036"></a>
-<span class="sourceLineNo">5037</span>    Get get = new Get(k).addFamily(family).setMaxVersions();<a name="line.5037"></a>
-<span class="sourceLineNo">5038</span>    Cell[] results = r.get(get).rawCells();<a name="line.5038"></a>
-<span class="sourceLineNo">5039</span>    for (int j = 0; j &lt; results.length; j++) {<a name="line.5039"></a>
-<span class="sourceLineNo">5040</span>      byte[] tmp = CellUtil.cloneValue(results[j]);<a name="line.5040"></a>
-<span class="sourceLineNo">5041</span>      // Row should be equal to value every time.<a name="line.5041"></a>
-<span class="sourceLineNo">5042</span>      assertTrue(Bytes.equals(k, tmp));<a name="line.5042"></a>
-<span class="sourceLineNo">5043</span>    }<a name="line.5043"></a>
-<span class="sourceLineNo">5044</span>  }<a name="line.5044"></a>
-<span class="sourceLineNo">5045</span><a name="line.5045"></a>
-<span class="sourceLineNo">5046</span>  /*<a name="line.5046"></a>
-<span class="sourceLineNo">5047</span>   * Assert first value in the passed region is &lt;code&gt;firstValue&lt;/code&gt;.<a name="line.5047"></a>
-<span class="sourceLineNo">5048</span>   *<a name="line.5048"></a>
-<span class="sourceLineNo">5049</span>   * @param r<a name="line.5049"></a>
-<span class="sourceLineNo">5050</span>   *<a name="line.5050"></a>
-<span class="sourceLineNo">5051</span>   * @param fs<a name="line.5051"></a>
-<span class="sourceLineNo">5052</span>   *<a name="line.5052"></a>
-<span class="sourceLineNo">5053</span>   * @param firstValue<a name="line.5053"></a>
-<span class="sourceLineNo">5054</span>   *<a name="line.5054"></a>
-<span class="sourceLineNo">5055</span>   * @throws IOException<a name="line.5055"></a>
-<span class="sourceLineNo">5056</span>   */<a name="line.5056"></a>
-<span class="sourceLineNo">5057</span>  private void assertScan(final HRegion r, final byte[] fs, final byte[] firstValue)<a name="line.5057"></a>
-<span class="sourceLineNo">5058</span>      throws IOException {<a name="line.5058"></a>
-<span class="sourceLineNo">5059</span>    byte[][] families = { fs };<a name="line.5059"></a>
-<span class="sourceLineNo">5060</span>    Scan scan = new Scan();<a name="line.5060"></a>
-<span class="sourceLineNo">5061</span>    for (int i = 0; i &lt; families.length; i++)<a name="line.5061"></a>
-<span class="sourceLineNo">5062</span>      scan.addFamily(families[i]);<a name="line.5062"></a>
-<span class="sourceLineNo">5063</span>    InternalScanner s = r.getScanner(scan);<a name="line.5063"></a>
-<span class="sourceLineNo">5064</span>    try {<a name="line.5064"></a>
-<span class="sourceLineNo">5065</span>      List&lt;Cell&gt; curVals = new ArrayList&lt;Cell&gt;();<a name="line.5065"></a>
-<span class="sourceLineNo">5066</span>      boolean first = true;<a name="line.5066"></a>
-<span class="sourceLineNo">5067</span>      OUTER_LOOP: while (s.next(curVals)) {<a name="line.5067"></a>
-<span class="sourceLineNo">5068</span>        for (Cell kv : curVals) {<a name="line.5068"></a>
-<span class="sourceLineNo">5069</span>          byte[] val = CellUtil.cloneValue(kv);<a name="line.5069"></a>
-<span class="sourceLineNo">5070</span>          byte[] curval = val;<a name="line.5070"></a>
-<span class="sourceLineNo">5071</span>          if (first) {<a name="line.5071"></a>
-<span class="sourceLineNo">5072</span>            first = false;<a name="line.5072"></a>
-<span class="sourceLineNo">5073</span>            assertTrue(Bytes.compareTo(curval, firstValue) == 0);<a name="line.5073"></a>
-<span class="sourceLineNo">5074</span>          } else {<a name="line.5074"></a>
-<span class="sourceLineNo">5075</span>            // Not asserting anything. Might as well break.<a name="line.5075"></a>
-<span class="sourceLineNo">5076</span>            break OUTER_LOOP;<a name="line.5076"></a>
-<span class="sourceLineNo">5077</span>          }<a name="line.5077"></a>
-<span class="sourceLineNo">5078</span>        }<a name="line.5078"></a>
-<span class="sourceLineNo">5079</span>      }<a name="line.5079"></a>
-<span class="sourceLineNo">5080</span>    } finally {<a name="line.5080"></a>
-<span class="sourceLineNo">5081</span>      s.close();<a name="line.5081"></a>
-<span class="sourceLineNo">5082</span>    }<a name="line.5082"></a>
-<span class="sourceLineNo">5083</span>  }<a name="line.5083"></a>
-<span class="sourceLineNo">5084</span><a name="line.5084"></a>
-<span class="sourceLineNo">5085</span>  /**<a name="line.5085"></a>
-<span class="sourceLineNo">5086</span>   * Test that we get the expected flush results back<a name="line.5086"></a>
-<span class="sourceLineNo">5087</span>   * @throws IOException<a name="line.5087"></a>
-<span class="sourceLineNo">5088</span>   */<a name="line.5088"></a>
-<span class="sourceLineNo">5089</span>  @Test<a name="line.5089"></a>
-<span class="sourceLineNo">5090</span>  public void testFlushResult() throws IOException {<a name="line.5090"></a>
-<span class="sourceLineNo">5091</span>    String method = name.getMethodName();<a name="line.5091"></a>
-<span class="sourceLineNo">5092</span>    TableName tableName = TableName.valueOf(method);<a name="line.5092"></a>
-<span class="sourceLineNo">5093</span>    byte[] family = Bytes.toBytes("family");<a name="line.5093"></a>
-<span class="sourceLineNo">5094</span><a name="line.5094"></a>
-<span class="sourceLineNo">5095</span>    this.region = initHRegion(tableName, method, family);<a name="line.5095"></a>
-<span class="sourceLineNo">5096</span><a name="line.5096"></a>
-<span class="sourceLineNo">5097</span>    // empty memstore, flush doesn't run<a name="line.5097"></a>
-<span class="sourceLineNo">5098</span>    HRegion.FlushResult fr = region.flush(true);<a name="line.5098"></a>
-<span class="sourceLineNo">5099</span>    assertFalse(fr.isFlushSucceeded());<a name="line.5099"></a>
-<span class="sourceLineNo">5100</span>    assertFalse(fr.isCompactionNeeded());<a name="line.5100"></a>
-<span class="sourceLineNo">5101</span><a name="line.5101"></a>
-<span class="sourceLineNo">5102</span>    // Flush enough files to get up to the threshold, doesn't need compactions<a name="line.5102"></a>
-<span class="sourceLineNo">5103</span>    for (int i = 0; i &lt; 2; i++) {<a name="line.5103"></a>
-<span class="sourceLineNo">5104</span>      Put put = new Put(tableName.toBytes()).addColumn(family, family, tableName.toBytes());<a name="line.5104"></a>
-<span class="sourceLineNo">5105</span>      region.put(put);<a name="line.5105"></a>
-<span class="sourceLineNo">5106</span>      fr = region.flush(true);<a name="line.5106"></a>
-<span class="sourceLineNo">5107</span>      assertTrue(fr.isFlushSucceeded());<a name="line.5107"></a>
-<span class="sourceLineNo">5108</span>      assertFalse(fr.isCompactionNeeded());<a name="line.5108"></a>
-<span class="sourceLineNo">5109</span>    }<a name="line.5109"></a>
-<span class="sourceLineNo">5110</span><a name="line.5110"></a>
-<span class="sourceLineNo">5111</span>    // Two flushes after the threshold, compactions are needed<a name="line.5111"></a>
-<span class="sourceLineNo">5112</span>    for (int i = 0; i &lt; 2; i++) {<a name="line.5112"></a>
-<span class="sourceLineNo">5113</span>      Put put = new Put(tableName.toBytes()).addColumn(family, family, tableName.toBytes());<a name="line.5113"></a>
-<span class="sourceLineNo">5114</span>      region.put(put);<a name="line.5114"></a>
-<span class="sourceLineNo">5115</span>      fr = region.flush(true);<a name="line.5115"></a>
-<span class="sourceLineNo">5116</span>      assertTrue(fr.isFlushSucceeded());<a name="line.5116"></a>
-<span class="sourceLineNo">5117</span>      assertTrue(fr.isCompactionNeeded());<a name="line.5117"></a>
-<span class="sourceLineNo">5118</span>    }<a name="line.5118"></a>
-<span class="sourceLineNo">5119</span>  }<a name="line.5119"></a>
-<span class="sourceLineNo">5120</span><a name="line.5120"></a>
-<span class="sourceLineNo">5121</span>  private Configuration initSplit() {<a name="line.5121"></a>
-<span class="sourceLineNo">5122</span>    // Always compact if there is more than one store file.<a name="line.5122"></a>
-<span class="sourceLineNo">5123</span>    CONF.setInt("hbase.hstore.compactionThreshold", 2);<a name="line.5123"></a>
-<span class="sourceLineNo">5124</span><a name="line.5124"></a>
-<span class="sourceLineNo">5125</span>    // Make lease timeout longer, lease checks less frequent<a name="line.5125"></a>
-<span class="sourceLineNo">5126</span>    CONF.setInt("hbase.master.lease.thread.wakefrequency", 5 * 1000);<a name="line.5126"></a>
-<span class="sourceLineNo">5127</span><a name="line.5127"></a>
-<span class="sourceLineNo">5128</span>    CONF.setInt(HConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIOD, 10 * 1000);<a name="line.5128"></a>
-<span class="sourceLineNo">5129</span><a name="line.5129"></a>
-<span class="sourceLineNo">5130</span>    // Increase the amount of time between client retries<a name="line.5130"></a>
-<span class="sourceLineNo">5131</span>    CONF.setLong("hbase.client.pause", 15 * 1000);<a name="line.5131"></a>
-<span class="sourceLineNo">5132</span><a name="line.5132"></a>
-<span class="sourceLineNo">5133</span>    // This size should make it so we always split using the addContent<a name="line.5133"></a>
-<span class="sourceLineNo">5134</span>    // below. After adding all data, the first region is 1.3M<a name="line.5134"></a>
-<span class="sourceLineNo">5135</span>    CONF.setLong(HConstants.HREGION_MAX_FILESIZE, 1024 * 128);<a name="line.5135"></a>
-<span class="sourceLineNo">5136</span>    return CONF;<a name="line.5136"></a>
-<span class="sourceLineNo">5137</span>  }<a name="line.5137"></a>
-<span class="sourceLineNo">5138</span><a name="line.5138"></a>
-<span class="sourceLineNo">5139</span>  /**<a name="line.5139"></a>
-<span class="sourceLineNo">5140</span>   * @param tableName<a name="line.5140"></a>
-<span class="sourceLineNo">5141</span>   * @param callingMethod<a name="line.5141"></a>
-<span class="sourceLineNo">5142</span>   * @param conf<a name="line.5142"></a>
-<span class="sourceLineNo">5143</span>   * @param families<a name="line.5143"></a>
-<span class="sourceLineNo">5144</span>   * @throws IOException<a name="line.5144"></a>
-<span class="sourceLineNo">5145</span>   * @return A region on which you must call<a name="line.5145"></a>
-<span class="sourceLineNo">5146</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5146"></a>
-<span class="sourceLineNo">5147</span>   */<a name="line.5147"></a>
-<span class="sourceLineNo">5148</span>  private static HRegion initHRegion(TableName tableName, String callingMethod, Configuration conf,<a name="line.5148"></a>
-<span class="sourceLineNo">5149</span>      byte[]... families) throws IOException {<a name="line.5149"></a>
-<span class="sourceLineNo">5150</span>    return initHRegion(tableName, null, null, callingMethod, conf, false, families);<a name="line.5150"></a>
-<span class="sourceLineNo">5151</span>  }<a name="line.5151"></a>
-<span class="sourceLineNo">5152</span><a name="line.5152"></a>
-<span class="sourceLineNo">5153</span>  /**<a name="line.5153"></a>
-<span class="sourceLineNo">5154</span>   * @param tableName<a name="line.5154"></a>
-<span class="sourceLineNo">5155</span>   * @param callingMethod<a name="line.5155"></a>
-<span class="sourceLineNo">5156</span>   * @param conf<a name="line.5156"></a>
-<span class="sourceLineNo">5157</span>   * @param isReadOnly<a name="line.5157"></a>
-<span class="sourceLineNo">5158</span>   * @param families<a name="line.5158"></a>
-<span class="sourceLineNo">5159</span>   * @throws IOException<a name="line.5159"></a>
-<span class="sourceLineNo">5160</span>   * @return A region on which you must call<a name="line.5160"></a>
-<span class="sourceLineNo">5161</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5161"></a>
-<span class="sourceLineNo">5162</span>   */<a name="line.5162"></a>
-<span class="sourceLineNo">5163</span>  private static HRegion initHRegion(TableName tableName, String callingMethod, Configuration conf,<a name="line.5163"></a>
-<span class="sourceLineNo">5164</span>      boolean isReadOnly, byte[]... families) throws IOException {<a name="line.5164"></a>
-<span class="sourceLineNo">5165</span>    return initHRegion(tableName, null, null, callingMethod, conf, isReadOnly, families);<a name="line.5165"></a>
-<span class="sourceLineNo">5166</span>  }<a name="line.5166"></a>
-<span class="sourceLineNo">5167</span><a name="line.5167"></a>
-<span class="sourceLineNo">5168</span>  public static HRegion initHRegion(TableName tableName, byte[] startKey, byte[] stopKey,<a name="line.5168"></a>
-<span class="sourceLineNo">5169</span>      String callingMethod, Configuration conf, boolean isReadOnly, byte[]... families)<a name="line.5169"></a>
-<span class="sourceLineNo">5170</span>      throws IOException {<a name="line.5170"></a>
-<span class="sourceLineNo">5171</span>    Path logDir = TEST_UTIL.getDataTestDirOnTestFS(callingMethod + ".log");<a name="line.5171"></a>
-<span class="sourceLineNo">5172</span>    HRegionInfo hri = new HRegionInfo(tableName, startKey, stopKey);<a name="line.5172"></a>
-<span class="sourceLineNo">5173</span>    final WAL wal = HBaseTestingUtility.createWal(conf, logDir, hri);<a name="line.5173"></a>
-<span class="sourceLineNo">5174</span>    return initHRegion(tableName, startKey, stopKey, callingMethod, conf, isReadOnly,<a name="line.5174"></a>
-<span class="sourceLineNo">5175</span>        Durability.SYNC_WAL, wal, families);<a name="line.5175"></a>
-<span class="sourceLineNo">5176</span>  }<a name="line.5176"></a>
-<span class="sourceLineNo">5177</span><a name="line.5177"></a>
-<span class="sourceLineNo">5178</span>  /**<a name="line.5178"></a>
-<span class="sourceLineNo">5179</span>   * @param tableName<a name="line.5179"></a>
-<span class="sourceLineNo">5180</span>   * @param startKey<a name="line.5180"></a>
-<span class="sourceLineNo">5181</span>   * @param stopKey<a name="line.5181"></a>
-<span class="sourceLineNo">5182</span>   * @param callingMethod<a name="line.5182"></a>
-<span class="sourceLineNo">5183</span>   * @param conf<a name="line.5183"></a>
-<span class="sourceLineNo">5184</span>   * @param isReadOnly<a name="line.5184"></a>
-<span class="sourceLineNo">5185</span>   * @param families<a name="line.5185"></a>
-<span class="sourceLineNo">5186</span>   * @throws IOException<a name="line.5186"></a>
-<span class="sourceLineNo">5187</span>   * @return A region on which you must call<a name="line.5187"></a>
-<span class="sourceLineNo">5188</span>   *         {@link HBaseTestingUtility#closeRegionAndWAL(HRegion)} when done.<a name="line.5188"></a>
-<span class="sourceLineNo">5189</span>   */<a name="line.5189"></a>
-<span class="sourceLineNo">5190</span>  public static HRegion initHRegion(TableName tableName, byte[] startKey, byte[] stopKey,<a name="line.5190"></a>
-<span class="sourceLineNo">5191</span>      String callingMethod, Configuration conf, boolean isReadOnly, Durability durability,<a name="line.5191"></a>
-<span class="sourceLineNo">5192</span>      WAL wal, byte[]... families) throws IOException {<a name="line.5192"></a>
-<span class="sourceLineNo">5193</span>    return TEST_UTIL.createLocalHRegion(tableName, startKey, stopKey,<a name="line.5193"></a>
-<span class="sourceLineNo">5194</span>        isReadOnly, durability, wal, families);<a name="line.5194"></a>
-<span class="sourceLineNo">5195</span>  }<a name="line.5195"></a>
-<span class="sourceLineNo">5196</span><a name="line.5196"></a>
-<span class="sourceLineNo">5197</span>  /**<a name="line.5197"></a>
-<span class="sourceLineNo">5198</span>   * Assert that the passed in Cell has expected contents for the specified row,<a name="line.5198"></a>
-<span class="sourceLineNo">5199</span>   * column &amp; timestamp.<a name="line.5199"></a>
-<span class="sourceLineNo">5200</span>   */<a name="line.5200"></a>
-<span class="sourceLineNo">5201</span>  private void checkOneCell(Cell kv, byte[] cf, int rowIdx, int colIdx, long ts) {<a name="line.5201"></a>
-<span class="sourceLineNo">5202</span>    String ctx = "rowIdx=" + rowIdx + "; colIdx=" + colIdx + "; ts=" + ts;<a name="line.5202"></a>
-<span class="sourceLineNo">5203</span>    assertEquals("Row mismatch which checking: " + ctx, "row:" + rowIdx,<a name="line.5203"></a>
-<span class="sourceLineNo">5204</span>        Bytes.toString(CellUtil.cloneRow(kv)));<a name="line.5204"></a>
-<span class="sourceLineNo">5205</span>    assertEquals("ColumnFamily mismatch while checking: " + ctx, Bytes.toString(cf),<a name="line.5205"></a>
-<span class="sourceLineNo">5206</span>        Bytes.toString(CellUtil.cloneFamily(kv)));<a name="line.5206"></a>
-<span class="sourceLineNo">5207</span>    assertEquals("Column qualifier mismatch while checking: " + ctx, "column:" + colIdx,<a name="line.5207"></a>
-<span class="sourceLineNo">5208</span>        Bytes.toString(CellUtil.cloneQualifier(kv)));<a name="line.5208"></a>
-<span class="sourceLineNo">5209</span>    assertEquals("Timestamp mismatch while checking: " + ctx, ts, kv.getTimestamp());<a name="line.5209"></a>
-<span class="sourceLineNo">5210</span>    assertEquals("Value mismatch while checking: " + ctx, "value-version-" + ts,<a name="line.5210"></a>
-<span class="sourceLineNo">5211</span>        Bytes.toString(CellUtil.cloneValue(kv)));<a name="line.5211"></a>
-<span class="sourceLineNo">5212</span>  }<a name="line.5212"></a>
-<span class="sourceLineNo">5213</span><a name="line.5213"></a>
-<span class="sourceLineNo">5214</span>  @Test (timeout=60000)<a name="line.5214"></a>
-<span class="sourceLineNo">5215</span>  public void testReverseScanner_FromMemStore_SingleCF_Normal()<a name="line.5215"></a>
-<span class="sourceLineNo">5216</span>      throws IOException {<a name="line.5216"></a>
-<span class="sourceLineNo">5217</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5217"></a>
-<span class="sourceLineNo">5218</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5218"></a>
-<span class="sourceLineNo">5219</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5219"></a>
-<span class="sourceLineNo">5220</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5220"></a>
-<span class="sourceLineNo">5221</span>    byte[][] families = { cf };<a name="line.5221"></a>
-<span class="sourceLineNo">5222</span>    byte[] col = Bytes.toBytes("C");<a name="line.5222"></a>
-<span class="sourceLineNo">5223</span>    long ts = 1;<a name="line.5223"></a>
-<span class="sourceLineNo">5224</span>    String method = this.getName();<a name="line.5224"></a>
-<span class="sourceLineNo">5225</span>    this.region = initHRegion(tableName, method, families);<a name="line.5225"></a>
-<span class="sourceLineNo">5226</span>    try {<a name="line.5226"></a>
-<span class="sourceLineNo">5227</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5227"></a>
-<span class="sourceLineNo">5228</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5228"></a>
-<span class="sourceLineNo">5229</span>          null);<a name="line.5229"></a>
-<span class="sourceLineNo">5230</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5230"></a>
-<span class="sourceLineNo">5231</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5231"></a>
-<span class="sourceLineNo">5232</span>      Put put = null;<a name="line.5232"></a>
-<span class="sourceLineNo">5233</span>      put = new Put(rowC);<a name="line.5233"></a>
-<span class="sourceLineNo">5234</span>      put.add(kv1);<a name="line.5234"></a>
-<span class="sourceLineNo">5235</span>      put.add(kv11);<a name="line.5235"></a>
-<span class="sourceLineNo">5236</span>      region.put(put);<a name="line.5236"></a>
-<span class="sourceLineNo">5237</span>      put = new Put(rowA);<a name="line.5237"></a>
-<span class="sourceLineNo">5238</span>      put.add(kv2);<a name="line.5238"></a>
-<span class="sourceLineNo">5239</span>      region.put(put);<a name="line.5239"></a>
-<span class="sourceLineNo">5240</span>      put = new Put(rowB);<a name="line.5240"></a>
-<span class="sourceLineNo">5241</span>      put.add(kv3);<a name="line.5241"></a>
-<span class="sourceLineNo">5242</span>      region.put(put);<a name="line.5242"></a>
-<span class="sourceLineNo">5243</span><a name="line.5243"></a>
-<span class="sourceLineNo">5244</span>      Scan scan = new Scan(rowC);<a name="line.5244"></a>
-<span class="sourceLineNo">5245</span>      scan.setMaxVersions(5);<a name="line.5245"></a>
-<span class="sourceLineNo">5246</span>      scan.setReversed(true);<a name="line.5246"></a>
-<span class="sourceLineNo">5247</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5247"></a>
-<span class="sourceLineNo">5248</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5248"></a>
-<span class="sourceLineNo">5249</span>      boolean hasNext = scanner.next(currRow);<a name="line.5249"></a>
-<span class="sourceLineNo">5250</span>      assertEquals(2, currRow.size());<a name="line.5250"></a>
-<span class="sourceLineNo">5251</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5251"></a>
-<span class="sourceLineNo">5252</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5252"></a>
-<span class="sourceLineNo">5253</span>      assertTrue(hasNext);<a name="line.5253"></a>
-<span class="sourceLineNo">5254</span>      currRow.clear();<a name="line.5254"></a>
-<span class="sourceLineNo">5255</span>      hasNext = scanner.next(currRow);<a name="line.5255"></a>
-<span class="sourceLineNo">5256</span>      assertEquals(1, currRow.size());<a name="line.5256"></a>
-<span class="sourceLineNo">5257</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5257"></a>
-<span class="sourceLineNo">5258</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5258"></a>
-<span class="sourceLineNo">5259</span>      assertTrue(hasNext);<a name="line.5259"></a>
-<span class="sourceLineNo">5260</span>      currRow.clear();<a name="line.5260"></a>
-<span class="sourceLineNo">5261</span>      hasNext = scanner.next(currRow);<a name="line.5261"></a>
-<span class="sourceLineNo">5262</span>      assertEquals(1, currRow.size());<a name="line.5262"></a>
-<span class="sourceLineNo">5263</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5263"></a>
-<span class="sourceLineNo">5264</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5264"></a>
-<span class="sourceLineNo">5265</span>      assertFalse(hasNext);<a name="line.5265"></a>
-<span class="sourceLineNo">5266</span>      scanner.close();<a name="line.5266"></a>
-<span class="sourceLineNo">5267</span>    } finally {<a name="line.5267"></a>
-<span class="sourceLineNo">5268</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5268"></a>
-<span class="sourceLineNo">5269</span>      this.region = null;<a name="line.5269"></a>
-<span class="sourceLineNo">5270</span>    }<a name="line.5270"></a>
-<span class="sourceLineNo">5271</span>  }<a name="line.5271"></a>
-<span class="sourceLineNo">5272</span><a name="line.5272"></a>
-<span class="sourceLineNo">5273</span>  @Test (timeout=60000)<a name="line.5273"></a>
-<span class="sourceLineNo">5274</span>  public void testReverseScanner_FromMemStore_SingleCF_LargerKey()<a name="line.5274"></a>
-<span class="sourceLineNo">5275</span>      throws IOException {<a name="line.5275"></a>
-<span class="sourceLineNo">5276</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5276"></a>
-<span class="sourceLineNo">5277</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5277"></a>
-<span class="sourceLineNo">5278</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5278"></a>
-<span class="sourceLineNo">5279</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5279"></a>
-<span class="sourceLineNo">5280</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5280"></a>
-<span class="sourceLineNo">5281</span>    byte[][] families = { cf };<a name="line.5281"></a>
-<span class="sourceLineNo">5282</span>    byte[] col = Bytes.toBytes("C");<a name="line.5282"></a>
-<span class="sourceLineNo">5283</span>    long ts = 1;<a name="line.5283"></a>
-<span class="sourceLineNo">5284</span>    String method = this.getName();<a name="line.5284"></a>
-<span class="sourceLineNo">5285</span>    this.region = initHRegion(tableName, method, families);<a name="line.5285"></a>
-<span class="sourceLineNo">5286</span>    try {<a name="line.5286"></a>
-<span class="sourceLineNo">5287</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5287"></a>
-<span class="sourceLineNo">5288</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5288"></a>
-<span class="sourceLineNo">5289</span>          null);<a name="line.5289"></a>
-<span class="sourceLineNo">5290</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5290"></a>
-<span class="sourceLineNo">5291</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5291"></a>
-<span class="sourceLineNo">5292</span>      Put put = null;<a name="line.5292"></a>
-<span class="sourceLineNo">5293</span>      put = new Put(rowC);<a name="line.5293"></a>
-<span class="sourceLineNo">5294</span>      put.add(kv1);<a name="line.5294"></a>
-<span class="sourceLineNo">5295</span>      put.add(kv11);<a name="line.5295"></a>
-<span class="sourceLineNo">5296</span>      region.put(put);<a name="line.5296"></a>
-<span class="sourceLineNo">5297</span>      put = new Put(rowA);<a name="line.5297"></a>
-<span class="sourceLineNo">5298</span>      put.add(kv2);<a name="line.5298"></a>
-<span class="sourceLineNo">5299</span>      region.put(put);<a name="line.5299"></a>
-<span class="sourceLineNo">5300</span>      put = new Put(rowB);<a name="line.5300"></a>
-<span class="sourceLineNo">5301</span>      put.add(kv3);<a name="line.5301"></a>
-<span class="sourceLineNo">5302</span>      region.put(put);<a name="line.5302"></a>
-<span class="sourceLineNo">5303</span><a name="line.5303"></a>
-<span class="sourceLineNo">5304</span>      Scan scan = new Scan(rowD);<a name="line.5304"></a>
-<span class="sourceLineNo">5305</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5305"></a>
-<span class="sourceLineNo">5306</span>      scan.setReversed(true);<a name="line.5306"></a>
-<span class="sourceLineNo">5307</span>      scan.setMaxVersions(5);<a name="line.5307"></a>
-<span class="sourceLineNo">5308</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5308"></a>
-<span class="sourceLineNo">5309</span>      boolean hasNext = scanner.next(currRow);<a name="line.5309"></a>
-<span class="sourceLineNo">5310</span>      assertEquals(2, currRow.size());<a name="line.5310"></a>
-<span class="sourceLineNo">5311</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5311"></a>
-<span class="sourceLineNo">5312</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5312"></a>
-<span class="sourceLineNo">5313</span>      assertTrue(hasNext);<a name="line.5313"></a>
-<span class="sourceLineNo">5314</span>      currRow.clear();<a name="line.5314"></a>
-<span class="sourceLineNo">5315</span>      hasNext = scanner.next(currRow);<a name="line.5315"></a>
-<span class="sourceLineNo">5316</span>      assertEquals(1, currRow.size());<a name="line.5316"></a>
-<span class="sourceLineNo">5317</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5317"></a>
-<span class="sourceLineNo">5318</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5318"></a>
-<span class="sourceLineNo">5319</span>      assertTrue(hasNext);<a name="line.5319"></a>
-<span class="sourceLineNo">5320</span>      currRow.clear();<a name="line.5320"></a>
-<span class="sourceLineNo">5321</span>      hasNext = scanner.next(currRow);<a name="line.5321"></a>
-<span class="sourceLineNo">5322</span>      assertEquals(1, currRow.size());<a name="line.5322"></a>
-<span class="sourceLineNo">5323</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5323"></a>
-<span class="sourceLineNo">5324</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5324"></a>
-<span class="sourceLineNo">5325</span>      assertFalse(hasNext);<a name="line.5325"></a>
-<span class="sourceLineNo">5326</span>      scanner.close();<a name="line.5326"></a>
-<span class="sourceLineNo">5327</span>    } finally {<a name="line.5327"></a>
-<span class="sourceLineNo">5328</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5328"></a>
-<span class="sourceLineNo">5329</span>      this.region = null;<a name="line.5329"></a>
-<span class="sourceLineNo">5330</span>    }<a name="line.5330"></a>
-<span class="sourceLineNo">5331</span>  }<a name="line.5331"></a>
-<span class="sourceLineNo">5332</span><a name="line.5332"></a>
-<span class="sourceLineNo">5333</span>  @Test (timeout=60000)<a name="line.5333"></a>
-<span class="sourceLineNo">5334</span>  public void testReverseScanner_FromMemStore_SingleCF_FullScan()<a name="line.5334"></a>
-<span class="sourceLineNo">5335</span>      throws IOException {<a name="line.5335"></a>
-<span class="sourceLineNo">5336</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5336"></a>
-<span class="sourceLineNo">5337</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5337"></a>
-<span class="sourceLineNo">5338</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5338"></a>
-<span class="sourceLineNo">5339</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5339"></a>
-<span class="sourceLineNo">5340</span>    byte[][] families = { cf };<a name="line.5340"></a>
-<span class="sourceLineNo">5341</span>    byte[] col = Bytes.toBytes("C");<a name="line.5341"></a>
-<span class="sourceLineNo">5342</span>    long ts = 1;<a name="line.5342"></a>
-<span class="sourceLineNo">5343</span>    String method = this.getName();<a name="line.5343"></a>
-<span class="sourceLineNo">5344</span>    this.region = initHRegion(tableName, method, families);<a name="line.5344"></a>
-<span class="sourceLineNo">5345</span>    try {<a name="line.5345"></a>
-<span class="sourceLineNo">5346</span>      KeyValue kv1 = new KeyValue(rowC, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5346"></a>
-<span class="sourceLineNo">5347</span>      KeyValue kv11 = new KeyValue(rowC, cf, col, ts + 1, KeyValue.Type.Put,<a name="line.5347"></a>
-<span class="sourceLineNo">5348</span>          null);<a name="line.5348"></a>
-<span class="sourceLineNo">5349</span>      KeyValue kv2 = new KeyValue(rowA, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5349"></a>
-<span class="sourceLineNo">5350</span>      KeyValue kv3 = new KeyValue(rowB, cf, col, ts, KeyValue.Type.Put, null);<a name="line.5350"></a>
-<span class="sourceLineNo">5351</span>      Put put = null;<a name="line.5351"></a>
-<span class="sourceLineNo">5352</span>      put = new Put(rowC);<a name="line.5352"></a>
-<span class="sourceLineNo">5353</span>      put.add(kv1);<a name="line.5353"></a>
-<span class="sourceLineNo">5354</span>      put.add(kv11);<a name="line.5354"></a>
-<span class="sourceLineNo">5355</span>      region.put(put);<a name="line.5355"></a>
-<span class="sourceLineNo">5356</span>      put = new Put(rowA);<a name="line.5356"></a>
-<span class="sourceLineNo">5357</span>      put.add(kv2);<a name="line.5357"></a>
-<span class="sourceLineNo">5358</span>      region.put(put);<a name="line.5358"></a>
-<span class="sourceLineNo">5359</span>      put = new Put(rowB);<a name="line.5359"></a>
-<span class="sourceLineNo">5360</span>      put.add(kv3);<a name="line.5360"></a>
-<span class="sourceLineNo">5361</span>      region.put(put);<a name="line.5361"></a>
-<span class="sourceLineNo">5362</span>      Scan scan = new Scan();<a name="line.5362"></a>
-<span class="sourceLineNo">5363</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5363"></a>
-<span class="sourceLineNo">5364</span>      scan.setReversed(true);<a name="line.5364"></a>
-<span class="sourceLineNo">5365</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5365"></a>
-<span class="sourceLineNo">5366</span>      boolean hasNext = scanner.next(currRow);<a name="line.5366"></a>
-<span class="sourceLineNo">5367</span>      assertEquals(1, currRow.size());<a name="line.5367"></a>
-<span class="sourceLineNo">5368</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5368"></a>
-<span class="sourceLineNo">5369</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5369"></a>
-<span class="sourceLineNo">5370</span>      assertTrue(hasNext);<a name="line.5370"></a>
-<span class="sourceLineNo">5371</span>      currRow.clear();<a name="line.5371"></a>
-<span class="sourceLineNo">5372</span>      hasNext = scanner.next(currRow);<a name="line.5372"></a>
-<span class="sourceLineNo">5373</span>      assertEquals(1, currRow.size());<a name="line.5373"></a>
-<span class="sourceLineNo">5374</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5374"></a>
-<span class="sourceLineNo">5375</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5375"></a>
-<span class="sourceLineNo">5376</span>      assertTrue(hasNext);<a name="line.5376"></a>
-<span class="sourceLineNo">5377</span>      currRow.clear();<a name="line.5377"></a>
-<span class="sourceLineNo">5378</span>      hasNext = scanner.next(currRow);<a name="line.5378"></a>
-<span class="sourceLineNo">5379</span>      assertEquals(1, currRow.size());<a name="line.5379"></a>
-<span class="sourceLineNo">5380</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5380"></a>
-<span class="sourceLineNo">5381</span>          .get(0).getRowLength(), rowA, 0, rowA.length));<a name="line.5381"></a>
-<span class="sourceLineNo">5382</span>      assertFalse(hasNext);<a name="line.5382"></a>
-<span class="sourceLineNo">5383</span>      scanner.close();<a name="line.5383"></a>
-<span class="sourceLineNo">5384</span>    } finally {<a name="line.5384"></a>
-<span class="sourceLineNo">5385</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5385"></a>
-<span class="sourceLineNo">5386</span>      this.region = null;<a name="line.5386"></a>
-<span class="sourceLineNo">5387</span>    }<a name="line.5387"></a>
-<span class="sourceLineNo">5388</span>  }<a name="line.5388"></a>
-<span class="sourceLineNo">5389</span><a name="line.5389"></a>
-<span class="sourceLineNo">5390</span>  @Test (timeout=60000)<a name="line.5390"></a>
-<span class="sourceLineNo">5391</span>  public void testReverseScanner_moreRowsMayExistAfter() throws IOException {<a name="line.5391"></a>
-<span class="sourceLineNo">5392</span>    // case for "INCLUDE_AND_SEEK_NEXT_ROW &amp; SEEK_NEXT_ROW" endless loop<a name="line.5392"></a>
-<span class="sourceLineNo">5393</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5393"></a>
-<span class="sourceLineNo">5394</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5394"></a>
-<span class="sourceLineNo">5395</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5395"></a>
-<span class="sourceLineNo">5396</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5396"></a>
-<span class="sourceLineNo">5397</span>    byte[] rowE = Bytes.toBytes("rowE");<a name="line.5397"></a>
-<span class="sourceLineNo">5398</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5398"></a>
-<span class="sourceLineNo">5399</span>    byte[][] families = { cf };<a name="line.5399"></a>
-<span class="sourceLineNo">5400</span>    byte[] col1 = Bytes.toBytes("col1");<a name="line.5400"></a>
-<span class="sourceLineNo">5401</span>    byte[] col2 = Bytes.toBytes("col2");<a name="line.5401"></a>
-<span class="sourceLineNo">5402</span>    long ts = 1;<a name="line.5402"></a>
-<span class="sourceLineNo">5403</span>    String method = this.getName();<a name="line.5403"></a>
-<span class="sourceLineNo">5404</span>    this.region = initHRegion(tableName, method, families);<a name="line.5404"></a>
-<span class="sourceLineNo">5405</span>    try {<a name="line.5405"></a>
-<span class="sourceLineNo">5406</span>      KeyValue kv1 = new KeyValue(rowA, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5406"></a>
-<span class="sourceLineNo">5407</span>      KeyValue kv2 = new KeyValue(rowB, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5407"></a>
-<span class="sourceLineNo">5408</span>      KeyValue kv3 = new KeyValue(rowC, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5408"></a>
-<span class="sourceLineNo">5409</span>      KeyValue kv4_1 = new KeyValue(rowD, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5409"></a>
-<span class="sourceLineNo">5410</span>      KeyValue kv4_2 = new KeyValue(rowD, cf, col2, ts, KeyValue.Type.Put, null);<a name="line.5410"></a>
-<span class="sourceLineNo">5411</span>      KeyValue kv5 = new KeyValue(rowE, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5411"></a>
-<span class="sourceLineNo">5412</span>      Put put = null;<a name="line.5412"></a>
-<span class="sourceLineNo">5413</span>      put = new Put(rowA);<a name="line.5413"></a>
-<span class="sourceLineNo">5414</span>      put.add(kv1);<a name="line.5414"></a>
-<span class="sourceLineNo">5415</span>      region.put(put);<a name="line.5415"></a>
-<span class="sourceLineNo">5416</span>      put = new Put(rowB);<a name="line.5416"></a>
-<span class="sourceLineNo">5417</span>      put.add(kv2);<a name="line.5417"></a>
-<span class="sourceLineNo">5418</span>      region.put(put);<a name="line.5418"></a>
-<span class="sourceLineNo">5419</span>      put = new Put(rowC);<a name="line.5419"></a>
-<span class="sourceLineNo">5420</span>      put.add(kv3);<a name="line.5420"></a>
-<span class="sourceLineNo">5421</span>      region.put(put);<a name="line.5421"></a>
-<span class="sourceLineNo">5422</span>      put = new Put(rowD);<a name="line.5422"></a>
-<span class="sourceLineNo">5423</span>      put.add(kv4_1);<a name="line.5423"></a>
-<span class="sourceLineNo">5424</span>      region.put(put);<a name="line.5424"></a>
-<span class="sourceLineNo">5425</span>      put = new Put(rowD);<a name="line.5425"></a>
-<span class="sourceLineNo">5426</span>      put.add(kv4_2);<a name="line.5426"></a>
-<span class="sourceLineNo">5427</span>      region.put(put);<a name="line.5427"></a>
-<span class="sourceLineNo">5428</span>      put = new Put(rowE);<a name="line.5428"></a>
-<span class="sourceLineNo">5429</span>      put.add(kv5);<a name="line.5429"></a>
-<span class="sourceLineNo">5430</span>      region.put(put);<a name="line.5430"></a>
-<span class="sourceLineNo">5431</span>      region.flush(true);<a name="line.5431"></a>
-<span class="sourceLineNo">5432</span>      Scan scan = new Scan(rowD, rowA);<a name="line.5432"></a>
-<span class="sourceLineNo">5433</span>      scan.addColumn(families[0], col1);<a name="line.5433"></a>
-<span class="sourceLineNo">5434</span>      scan.setReversed(true);<a name="line.5434"></a>
-<span class="sourceLineNo">5435</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5435"></a>
-<span class="sourceLineNo">5436</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5436"></a>
-<span class="sourceLineNo">5437</span>      boolean hasNext = scanner.next(currRow);<a name="line.5437"></a>
-<span class="sourceLineNo">5438</span>      assertEquals(1, currRow.size());<a name="line.5438"></a>
-<span class="sourceLineNo">5439</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5439"></a>
-<span class="sourceLineNo">5440</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5440"></a>
-<span class="sourceLineNo">5441</span>      assertTrue(hasNext);<a name="line.5441"></a>
-<span class="sourceLineNo">5442</span>      currRow.clear();<a name="line.5442"></a>
-<span class="sourceLineNo">5443</span>      hasNext = scanner.next(currRow);<a name="line.5443"></a>
-<span class="sourceLineNo">5444</span>      assertEquals(1, currRow.size());<a name="line.5444"></a>
-<span class="sourceLineNo">5445</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5445"></a>
-<span class="sourceLineNo">5446</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5446"></a>
-<span class="sourceLineNo">5447</span>      assertTrue(hasNext);<a name="line.5447"></a>
-<span class="sourceLineNo">5448</span>      currRow.clear();<a name="line.5448"></a>
-<span class="sourceLineNo">5449</span>      hasNext = scanner.next(currRow);<a name="line.5449"></a>
-<span class="sourceLineNo">5450</span>      assertEquals(1, currRow.size());<a name="line.5450"></a>
-<span class="sourceLineNo">5451</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5451"></a>
-<span class="sourceLineNo">5452</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5452"></a>
-<span class="sourceLineNo">5453</span>      assertFalse(hasNext);<a name="line.5453"></a>
-<span class="sourceLineNo">5454</span>      scanner.close();<a name="line.5454"></a>
-<span class="sourceLineNo">5455</span><a name="line.5455"></a>
-<span class="sourceLineNo">5456</span>      scan = new Scan(rowD, rowA);<a name="line.5456"></a>
-<span class="sourceLineNo">5457</span>      scan.addColumn(families[0], col2);<a name="line.5457"></a>
-<span class="sourceLineNo">5458</span>      scan.setReversed(true);<a name="line.5458"></a>
-<span class="sourceLineNo">5459</span>      currRow.clear();<a name="line.5459"></a>
-<span class="sourceLineNo">5460</span>      scanner = region.getScanner(scan);<a name="line.5460"></a>
-<span class="sourceLineNo">5461</span>      hasNext = scanner.next(currRow);<a name="line.5461"></a>
-<span class="sourceLineNo">5462</span>      assertEquals(1, currRow.size());<a name="line.5462"></a>
-<span class="sourceLineNo">5463</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5463"></a>
-<span class="sourceLineNo">5464</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5464"></a>
-<span class="sourceLineNo">5465</span>      scanner.close();<a name="line.5465"></a>
-<span class="sourceLineNo">5466</span>    } finally {<a name="line.5466"></a>
-<span class="sourceLineNo">5467</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5467"></a>
-<span class="sourceLineNo">5468</span>      this.region = null;<a name="line.5468"></a>
-<span class="sourceLineNo">5469</span>    }<a name="line.5469"></a>
-<span class="sourceLineNo">5470</span>  }<a name="line.5470"></a>
-<span class="sourceLineNo">5471</span><a name="line.5471"></a>
-<span class="sourceLineNo">5472</span>  @Test (timeout=60000)<a name="line.5472"></a>
-<span class="sourceLineNo">5473</span>  public void testReverseScanner_smaller_blocksize() throws IOException {<a name="line.5473"></a>
-<span class="sourceLineNo">5474</span>    // case to ensure no conflict with HFile index optimization<a name="line.5474"></a>
-<span class="sourceLineNo">5475</span>    byte[] rowA = Bytes.toBytes("rowA");<a name="line.5475"></a>
-<span class="sourceLineNo">5476</span>    byte[] rowB = Bytes.toBytes("rowB");<a name="line.5476"></a>
-<span class="sourceLineNo">5477</span>    byte[] rowC = Bytes.toBytes("rowC");<a name="line.5477"></a>
-<span class="sourceLineNo">5478</span>    byte[] rowD = Bytes.toBytes("rowD");<a name="line.5478"></a>
-<span class="sourceLineNo">5479</span>    byte[] rowE = Bytes.toBytes("rowE");<a name="line.5479"></a>
-<span class="sourceLineNo">5480</span>    byte[] cf = Bytes.toBytes("CF");<a name="line.5480"></a>
-<span class="sourceLineNo">5481</span>    byte[][] families = { cf };<a name="line.5481"></a>
-<span class="sourceLineNo">5482</span>    byte[] col1 = Bytes.toBytes("col1");<a name="line.5482"></a>
-<span class="sourceLineNo">5483</span>    byte[] col2 = Bytes.toBytes("col2");<a name="line.5483"></a>
-<span class="sourceLineNo">5484</span>    long ts = 1;<a name="line.5484"></a>
-<span class="sourceLineNo">5485</span>    String method = this.getName();<a name="line.5485"></a>
-<span class="sourceLineNo">5486</span>    HBaseConfiguration config = new HBaseConfiguration();<a name="line.5486"></a>
-<span class="sourceLineNo">5487</span>    config.setInt("test.block.size", 1);<a name="line.5487"></a>
-<span class="sourceLineNo">5488</span>    this.region = initHRegion(tableName, method, config, families);<a name="line.5488"></a>
-<span class="sourceLineNo">5489</span>    try {<a name="line.5489"></a>
-<span class="sourceLineNo">5490</span>      KeyValue kv1 = new KeyValue(rowA, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5490"></a>
-<span class="sourceLineNo">5491</span>      KeyValue kv2 = new KeyValue(rowB, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5491"></a>
-<span class="sourceLineNo">5492</span>      KeyValue kv3 = new KeyValue(rowC, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5492"></a>
-<span class="sourceLineNo">5493</span>      KeyValue kv4_1 = new KeyValue(rowD, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5493"></a>
-<span class="sourceLineNo">5494</span>      KeyValue kv4_2 = new KeyValue(rowD, cf, col2, ts, KeyValue.Type.Put, null);<a name="line.5494"></a>
-<span class="sourceLineNo">5495</span>      KeyValue kv5 = new KeyValue(rowE, cf, col1, ts, KeyValue.Type.Put, null);<a name="line.5495"></a>
-<span class="sourceLineNo">5496</span>      Put put = null;<a name="line.5496"></a>
-<span class="sourceLineNo">5497</span>      put = new Put(rowA);<a name="line.5497"></a>
-<span class="sourceLineNo">5498</span>      put.add(kv1);<a name="line.5498"></a>
-<span class="sourceLineNo">5499</span>      region.put(put);<a name="line.5499"></a>
-<span class="sourceLineNo">5500</span>      put = new Put(rowB);<a name="line.5500"></a>
-<span class="sourceLineNo">5501</span>      put.add(kv2);<a name="line.5501"></a>
-<span class="sourceLineNo">5502</span>      region.put(put);<a name="line.5502"></a>
-<span class="sourceLineNo">5503</span>      put = new Put(rowC);<a name="line.5503"></a>
-<span class="sourceLineNo">5504</span>      put.add(kv3);<a name="line.5504"></a>
-<span class="sourceLineNo">5505</span>      region.put(put);<a name="line.5505"></a>
-<span class="sourceLineNo">5506</span>      put = new Put(rowD);<a name="line.5506"></a>
-<span class="sourceLineNo">5507</span>      put.add(kv4_1);<a name="line.5507"></a>
-<span class="sourceLineNo">5508</span>      region.put(put);<a name="line.5508"></a>
-<span class="sourceLineNo">5509</span>      put = new Put(rowD);<a name="line.5509"></a>
-<span class="sourceLineNo">5510</span>      put.add(kv4_2);<a name="line.5510"></a>
-<span class="sourceLineNo">5511</span>      region.put(put);<a name="line.5511"></a>
-<span class="sourceLineNo">5512</span>      put = new Put(rowE);<a name="line.5512"></a>
-<span class="sourceLineNo">5513</span>      put.add(kv5);<a name="line.5513"></a>
-<span class="sourceLineNo">5514</span>      region.put(put);<a name="line.5514"></a>
-<span class="sourceLineNo">5515</span>      region.flush(true);<a name="line.5515"></a>
-<span class="sourceLineNo">5516</span>      Scan scan = new Scan(rowD, rowA);<a name="line.5516"></a>
-<span class="sourceLineNo">5517</span>      scan.addColumn(families[0], col1);<a name="line.5517"></a>
-<span class="sourceLineNo">5518</span>      scan.setReversed(true);<a name="line.5518"></a>
-<span class="sourceLineNo">5519</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5519"></a>
-<span class="sourceLineNo">5520</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5520"></a>
-<span class="sourceLineNo">5521</span>      boolean hasNext = scanner.next(currRow);<a name="line.5521"></a>
-<span class="sourceLineNo">5522</span>      assertEquals(1, currRow.size());<a name="line.5522"></a>
-<span class="sourceLineNo">5523</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5523"></a>
-<span class="sourceLineNo">5524</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5524"></a>
-<span class="sourceLineNo">5525</span>      assertTrue(hasNext);<a name="line.5525"></a>
-<span class="sourceLineNo">5526</span>      currRow.clear();<a name="line.5526"></a>
-<span class="sourceLineNo">5527</span>      hasNext = scanner.next(currRow);<a name="line.5527"></a>
-<span class="sourceLineNo">5528</span>      assertEquals(1, currRow.size());<a name="line.5528"></a>
-<span class="sourceLineNo">5529</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5529"></a>
-<span class="sourceLineNo">5530</span>          .get(0).getRowLength(), rowC, 0, rowC.length));<a name="line.5530"></a>
-<span class="sourceLineNo">5531</span>      assertTrue(hasNext);<a name="line.5531"></a>
-<span class="sourceLineNo">5532</span>      currRow.clear();<a name="line.5532"></a>
-<span class="sourceLineNo">5533</span>      hasNext = scanner.next(currRow);<a name="line.5533"></a>
-<span class="sourceLineNo">5534</span>      assertEquals(1, currRow.size());<a name="line.5534"></a>
-<span class="sourceLineNo">5535</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5535"></a>
-<span class="sourceLineNo">5536</span>          .get(0).getRowLength(), rowB, 0, rowB.length));<a name="line.5536"></a>
-<span class="sourceLineNo">5537</span>      assertFalse(hasNext);<a name="line.5537"></a>
-<span class="sourceLineNo">5538</span>      scanner.close();<a name="line.5538"></a>
-<span class="sourceLineNo">5539</span><a name="line.5539"></a>
-<span class="sourceLineNo">5540</span>      scan = new Scan(rowD, rowA);<a name="line.5540"></a>
-<span class="sourceLineNo">5541</span>      scan.addColumn(families[0], col2);<a name="line.5541"></a>
-<span class="sourceLineNo">5542</span>      scan.setReversed(true);<a name="line.5542"></a>
-<span class="sourceLineNo">5543</span>      currRow.clear();<a name="line.5543"></a>
-<span class="sourceLineNo">5544</span>      scanner = region.getScanner(scan);<a name="line.5544"></a>
-<span class="sourceLineNo">5545</span>      hasNext = scanner.next(currRow);<a name="line.5545"></a>
-<span class="sourceLineNo">5546</span>      assertEquals(1, currRow.size());<a name="line.5546"></a>
-<span class="sourceLineNo">5547</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5547"></a>
-<span class="sourceLineNo">5548</span>          .get(0).getRowLength(), rowD, 0, rowD.length));<a name="line.5548"></a>
-<span class="sourceLineNo">5549</span>      scanner.close();<a name="line.5549"></a>
-<span class="sourceLineNo">5550</span>    } finally {<a name="line.5550"></a>
-<span class="sourceLineNo">5551</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5551"></a>
-<span class="sourceLineNo">5552</span>      this.region = null;<a name="line.5552"></a>
-<span class="sourceLineNo">5553</span>    }<a name="line.5553"></a>
-<span class="sourceLineNo">5554</span>  }<a name="line.5554"></a>
-<span class="sourceLineNo">5555</span><a name="line.5555"></a>
-<span class="sourceLineNo">5556</span>  @Test (timeout=60000)<a name="line.5556"></a>
-<span class="sourceLineNo">5557</span>  public void testReverseScanner_FromMemStoreAndHFiles_MultiCFs1()<a name="line.5557"></a>
-<span class="sourceLineNo">5558</span>      throws IOException {<a name="line.5558"></a>
-<span class="sourceLineNo">5559</span>    byte[] row0 = Bytes.toBytes("row0"); // 1 kv<a name="line.5559"></a>
-<span class="sourceLineNo">5560</span>    byte[] row1 = Bytes.toBytes("row1"); // 2 kv<a name="line.5560"></a>
-<span class="sourceLineNo">5561</span>    byte[] row2 = Bytes.toBytes("row2"); // 4 kv<a name="line.5561"></a>
-<span class="sourceLineNo">5562</span>    byte[] row3 = Bytes.toBytes("row3"); // 2 kv<a name="line.5562"></a>
-<span class="sourceLineNo">5563</span>    byte[] row4 = Bytes.toBytes("row4"); // 5 kv<a name="line.5563"></a>
-<span class="sourceLineNo">5564</span>    byte[] row5 = Bytes.toBytes("row5"); // 2 kv<a name="line.5564"></a>
-<span class="sourceLineNo">5565</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5565"></a>
-<span class="sourceLineNo">5566</span>    byte[] cf2 = Bytes.toBytes("CF2");<a name="line.5566"></a>
-<span class="sourceLineNo">5567</span>    byte[] cf3 = Bytes.toBytes("CF3");<a name="line.5567"></a>
-<span class="sourceLineNo">5568</span>    byte[][] families = { cf1, cf2, cf3 };<a name="line.5568"></a>
-<span class="sourceLineNo">5569</span>    byte[] col = Bytes.toBytes("C");<a name="line.5569"></a>
-<span class="sourceLineNo">5570</span>    long ts = 1;<a name="line.5570"></a>
-<span class="sourceLineNo">5571</span>    String method = this.getName();<a name="line.5571"></a>
-<span class="sourceLineNo">5572</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5572"></a>
-<span class="sourceLineNo">5573</span>    // disable compactions in this test.<a name="line.5573"></a>
-<span class="sourceLineNo">5574</span>    conf.setInt("hbase.hstore.compactionThreshold", 10000);<a name="line.5574"></a>
-<span class="sourceLineNo">5575</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5575"></a>
-<span class="sourceLineNo">5576</span>    try {<a name="line.5576"></a>
-<span class="sourceLineNo">5577</span>      // kv naming style: kv(row number) totalKvCountInThisRow seq no<a name="line.5577"></a>
-<span class="sourceLineNo">5578</span>      KeyValue kv0_1_1 = new KeyValue(row0, cf1, col, ts, KeyValue.Type.Put,<a name="line.5578"></a>
-<span class="sourceLineNo">5579</span>          null);<a name="line.5579"></a>
-<span class="sourceLineNo">5580</span>      KeyValue kv1_2_1 = new KeyValue(row1, cf2, col, ts, KeyValue.Type.Put,<a name="line.5580"></a>
-<span class="sourceLineNo">5581</span>          null);<a name="line.5581"></a>
-<span class="sourceLineNo">5582</span>      KeyValue kv1_2_2 = new KeyValue(row1, cf1, col, ts + 1,<a name="line.5582"></a>
-<span class="sourceLineNo">5583</span>          KeyValue.Type.Put, null);<a name="line.5583"></a>
-<span class="sourceLineNo">5584</span>      KeyValue kv2_4_1 = new KeyValue(row2, cf2, col, ts, KeyValue.Type.Put,<a name="line.5584"></a>
-<span class="sourceLineNo">5585</span>          null);<a name="line.5585"></a>
-<span class="sourceLineNo">5586</span>      KeyValue kv2_4_2 = new KeyValue(row2, cf1, col, ts, KeyValue.Type.Put,<a name="line.5586"></a>
-<span class="sourceLineNo">5587</span>          null);<a name="line.5587"></a>
-<span class="sourceLineNo">5588</span>      KeyValue kv2_4_3 = new KeyValue(row2, cf3, col, ts, KeyValue.Type.Put,<a name="line.5588"></a>
-<span class="sourceLineNo">5589</span>          null);<a name="line.5589"></a>
-<span class="sourceLineNo">5590</span>      KeyValue kv2_4_4 = new KeyValue(row2, cf1, col, ts + 4,<a name="line.5590"></a>
-<span class="sourceLineNo">5591</span>          KeyValue.Type.Put, null);<a name="line.5591"></a>
-<span class="sourceLineNo">5592</span>      KeyValue kv3_2_1 = new KeyValue(row3, cf2, col, ts, KeyValue.Type.Put,<a name="line.5592"></a>
-<span class="sourceLineNo">5593</span>          null);<a name="line.5593"></a>
-<span class="sourceLineNo">5594</span>      KeyValue kv3_2_2 = new KeyValue(row3, cf1, col, ts + 4,<a name="line.5594"></a>
-<span class="sourceLineNo">5595</span>          KeyValue.Type.Put, null);<a name="line.5595"></a>
-<span class="sourceLineNo">5596</span>      KeyValue kv4_5_1 = new KeyValue(row4, cf1, col, ts, KeyValue.Type.Put,<a name="line.5596"></a>
-<span class="sourceLineNo">5597</span>          null);<a name="line.5597"></a>
-<span class="sourceLineNo">5598</span>      KeyValue kv4_5_2 = new KeyValue(row4, cf3, col, ts, KeyValue.Type.Put,<a name="line.5598"></a>
-<span class="sourceLineNo">5599</span>          null);<a name="line.5599"></a>
-<span class="sourceLineNo">5600</span>      KeyValue kv4_5_3 = new KeyValue(row4, cf3, col, ts + 5,<a name="line.5600"></a>
-<span class="sourceLineNo">5601</span>          KeyValue.Type.Put, null);<a name="line.5601"></a>
-<span class="sourceLineNo">5602</span>      KeyValue kv4_5_4 = new KeyValue(row4, cf2, col, ts, KeyValue.Type.Put,<a name="line.5602"></a>
-<span class="sourceLineNo">5603</span>          null);<a name="line.5603"></a>
-<span class="sourceLineNo">5604</span>      KeyValue kv4_5_5 = new KeyValue(row4, cf1, col, ts + 3,<a name="line.5604"></a>
-<span class="sourceLineNo">5605</span>          KeyValue.Type.Put, null);<a name="line.5605"></a>
-<span class="sourceLineNo">5606</span>      KeyValue kv5_2_1 = new KeyValue(row5, cf2, col, ts, KeyValue.Type.Put,<a name="line.5606"></a>
-<span class="sourceLineNo">5607</span>          null);<a name="line.5607"></a>
-<span class="sourceLineNo">5608</span>      KeyValue kv5_2_2 = new KeyValue(row5, cf3, col, ts, KeyValue.Type.Put,<a name="line.5608"></a>
-<span class="sourceLineNo">5609</span>          null);<a name="line.5609"></a>
-<span class="sourceLineNo">5610</span>      // hfiles(cf1/cf2) :"row1"(1 kv) / "row2"(1 kv) / "row4"(2 kv)<a name="line.5610"></a>
-<span class="sourceLineNo">5611</span>      Put put = null;<a name="line.5611"></a>
-<span class="sourceLineNo">5612</span>      put = new Put(row1);<a name="line.5612"></a>
-<span class="sourceLineNo">5613</span>      put.add(kv1_2_1);<a name="line.5613"></a>
-<span class="sourceLineNo">5614</span>      region.put(put);<a name="line.5614"></a>
-<span class="sourceLineNo">5615</span>      put = new Put(row2);<a name="line.5615"></a>
-<span class="sourceLineNo">5616</span>      put.add(kv2_4_1);<a name="line.5616"></a>
-<span class="sourceLineNo">5617</span>      region.put(put);<a name="line.5617"></a>
-<span class="sourceLineNo">5618</span>      put = new Put(row4);<a name="line.5618"></a>
-<span class="sourceLineNo">5619</span>      put.add(kv4_5_4);<a name="line.5619"></a>
-<span class="sourceLineNo">5620</span>      put.add(kv4_5_5);<a name="line.5620"></a>
-<span class="sourceLineNo">5621</span>      region.put(put);<a name="line.5621"></a>
-<span class="sourceLineNo">5622</span>      region.flush(true);<a name="line.5622"></a>
-<span class="sourceLineNo">5623</span>      // hfiles(cf1/cf3) : "row1" (1 kvs) / "row2" (1 kv) / "row4" (2 kv)<a name="line.5623"></a>
-<span class="sourceLineNo">5624</span>      put = new Put(row4);<a name="line.5624"></a>
-<span class="sourceLineNo">5625</span>      put.add(kv4_5_1);<a name="line.5625"></a>
-<span class="sourceLineNo">5626</span>      put.add(kv4_5_3);<a name="line.5626"></a>
-<span class="sourceLineNo">5627</span>      region.put(put);<a name="line.5627"></a>
-<span class="sourceLineNo">5628</span>      put = new Put(row1);<a name="line.5628"></a>
-<span class="sourceLineNo">5629</span>      put.add(kv1_2_2);<a name="line.5629"></a>
-<span class="sourceLineNo">5630</span>      region.put(put);<a name="line.5630"></a>
-<span class="sourceLineNo">5631</span>      put = new Put(row2);<a name="line.5631"></a>
-<span class="sourceLineNo">5632</span>      put.add(kv2_4_4);<a name="line.5632"></a>
-<span class="sourceLineNo">5633</span>      region.put(put);<a name="line.5633"></a>
-<span class="sourceLineNo">5634</span>      region.flush(true);<a name="line.5634"></a>
-<span class="sourceLineNo">5635</span>      // hfiles(cf1/cf3) : "row2"(2 kv) / "row3"(1 kvs) / "row4" (1 kv)<a name="line.5635"></a>
-<span class="sourceLineNo">5636</span>      put = new Put(row4);<a name="line.5636"></a>
-<span class="sourceLineNo">5637</span>      put.add(kv4_5_2);<a name="line.5637"></a>
-<span class="sourceLineNo">5638</span>      region.put(put);<a name="line.5638"></a>
-<span class="sourceLineNo">5639</span>      put = new Put(row2);<a name="line.5639"></a>
-<span class="sourceLineNo">5640</span>      put.add(kv2_4_2);<a name="line.5640"></a>
-<span class="sourceLineNo">5641</span>      put.add(kv2_4_3);<a name="line.5641"></a>
-<span class="sourceLineNo">5642</span>      region.put(put);<a name="line.5642"></a>
-<span class="sourceLineNo">5643</span>      put = new Put(row3);<a name="line.5643"></a>
-<span class="sourceLineNo">5644</span>      put.add(kv3_2_2);<a name="line.5644"></a>
-<span class="sourceLineNo">5645</span>      region.put(put);<a name="line.5645"></a>
-<span class="sourceLineNo">5646</span>      region.flush(true);<a name="line.5646"></a>
-<span class="sourceLineNo">5647</span>      // memstore(cf1/cf2/cf3) : "row0" (1 kvs) / "row3" ( 1 kv) / "row5" (max)<a name="line.5647"></a>
-<span class="sourceLineNo">5648</span>      // ( 2 kv)<a name="line.5648"></a>
-<span class="sourceLineNo">5649</span>      put = new Put(row0);<a name="line.5649"></a>
-<span class="sourceLineNo">5650</span>      put.add(kv0_1_1);<a name="line.5650"></a>
-<span class="sourceLineNo">5651</span>      region.put(put);<a name="line.5651"></a>
-<span class="sourceLineNo">5652</span>      put = new Put(row3);<a name="line.5652"></a>
-<span class="sourceLineNo">5653</span>      put.add(kv3_2_1);<a name="line.5653"></a>
-<span class="sourceLineNo">5654</span>      region.put(put);<a name="line.5654"></a>
-<span class="sourceLineNo">5655</span>      put = new Put(row5);<a name="line.5655"></a>
-<span class="sourceLineNo">5656</span>      put.add(kv5_2_1);<a name="line.5656"></a>
-<span class="sourceLineNo">5657</span>      put.add(kv5_2_2);<a name="line.5657"></a>
-<span class="sourceLineNo">5658</span>      region.put(put);<a name="line.5658"></a>
-<span class="sourceLineNo">5659</span>      // scan range = ["row4", min), skip the max "row5"<a name="line.5659"></a>
-<span class="sourceLineNo">5660</span>      Scan scan = new Scan(row4);<a name="line.5660"></a>
-<span class="sourceLineNo">5661</span>      scan.setMaxVersions(5);<a name="line.5661"></a>
-<span class="sourceLineNo">5662</span>      scan.setBatch(3);<a name="line.5662"></a>
-<span class="sourceLineNo">5663</span>      scan.setReversed(true);<a name="line.5663"></a>
-<span class="sourceLineNo">5664</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5664"></a>
-<span class="sourceLineNo">5665</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5665"></a>
-<span class="sourceLineNo">5666</span>      boolean hasNext = false;<a name="line.5666"></a>
-<span class="sourceLineNo">5667</span>      // 1. scan out "row4" (5 kvs), "row5" can't be scanned out since not<a name="line.5667"></a>
-<span class="sourceLineNo">5668</span>      // included in scan range<a name="line.5668"></a>
-<span class="sourceLineNo">5669</span>      // "row4" takes 2 next() calls since batch=3<a name="line.5669"></a>
-<span class="sourceLineNo">5670</span>      hasNext = scanner.next(currRow);<a name="line.5670"></a>
-<span class="sourceLineNo">5671</span>      assertEquals(3, currRow.size());<a name="line.5671"></a>
-<span class="sourceLineNo">5672</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5672"></a>
-<span class="sourceLineNo">5673</span>          .get(0).getRowLength(), row4, 0, row4.length));<a name="line.5673"></a>
-<span class="sourceLineNo">5674</span>      assertTrue(hasNext);<a name="line.5674"></a>
-<span class="sourceLineNo">5675</span>      currRow.clear();<a name="line.5675"></a>
-<span class="sourceLineNo">5676</span>      hasNext = scanner.next(currRow);<a name="line.5676"></a>
-<span class="sourceLineNo">5677</span>      assertEquals(2, currRow.size());<a name="line.5677"></a>
-<span class="sourceLineNo">5678</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow.get(0).getRowLength(), row4, 0,<a name="line.5678"></a>
-<span class="sourceLineNo">5679</span>        row4.length));<a name="line.5679"></a>
-<span class="sourceLineNo">5680</span>      assertTrue(hasNext);<a name="line.5680"></a>
-<span class="sourceLineNo">5681</span>      // 2. scan out "row3" (2 kv)<a name="line.5681"></a>
-<span class="sourceLineNo">5682</span>      currRow.clear();<a name="line.5682"></a>
-<span class="sourceLineNo">5683</span>      hasNext = scanner.next(currRow);<a name="line.5683"></a>
-<span class="sourceLineNo">5684</span>      assertEquals(2, currRow.size());<a name="line.5684"></a>
-<span class="sourceLineNo">5685</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5685"></a>
-<span class="sourceLineNo">5686</span>          .get(0).getRowLength(), row3, 0, row3.length));<a name="line.5686"></a>
-<span class="sourceLineNo">5687</span>      assertTrue(hasNext);<a name="line.5687"></a>
-<span class="sourceLineNo">5688</span>      // 3. scan out "row2" (4 kvs)<a name="line.5688"></a>
-<span class="sourceLineNo">5689</span>      // "row2" takes 2 next() calls since batch=3<a name="line.5689"></a>
-<span class="sourceLineNo">5690</span>      currRow.clear();<a name="line.5690"></a>
-<span class="sourceLineNo">5691</span>      hasNext = scanner.next(currRow);<a name="line.5691"></a>
-<span class="sourceLineNo">5692</span>      assertEquals(3, currRow.size());<a name="line.5692"></a>
-<span class="sourceLineNo">5693</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5693"></a>
-<span class="sourceLineNo">5694</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5694"></a>
-<span class="sourceLineNo">5695</span>      assertTrue(hasNext);<a name="line.5695"></a>
-<span class="sourceLineNo">5696</span>      currRow.clear();<a name="line.5696"></a>
-<span class="sourceLineNo">5697</span>      hasNext = scanner.next(currRow);<a name="line.5697"></a>
-<span class="sourceLineNo">5698</span>      assertEquals(1, currRow.size());<a name="line.5698"></a>
-<span class="sourceLineNo">5699</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5699"></a>
-<span class="sourceLineNo">5700</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5700"></a>
-<span class="sourceLineNo">5701</span>      assertTrue(hasNext);<a name="line.5701"></a>
-<span class="sourceLineNo">5702</span>      // 4. scan out "row1" (2 kv)<a name="line.5702"></a>
-<span class="sourceLineNo">5703</span>      currRow.clear();<a name="line.5703"></a>
-<span class="sourceLineNo">5704</span>      hasNext = scanner.next(currRow);<a name="line.5704"></a>
-<span class="sourceLineNo">5705</span>      assertEquals(2, currRow.size());<a name="line.5705"></a>
-<span class="sourceLineNo">5706</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5706"></a>
-<span class="sourceLineNo">5707</span>          .get(0).getRowLength(), row1, 0, row1.length));<a name="line.5707"></a>
-<span class="sourceLineNo">5708</span>      assertTrue(hasNext);<a name="line.5708"></a>
-<span class="sourceLineNo">5709</span>      // 5. scan out "row0" (1 kv)<a name="line.5709"></a>
-<span class="sourceLineNo">5710</span>      currRow.clear();<a name="line.5710"></a>
-<span class="sourceLineNo">5711</span>      hasNext = scanner.next(currRow);<a name="line.5711"></a>
-<span class="sourceLineNo">5712</span>      assertEquals(1, currRow.size());<a name="line.5712"></a>
-<span class="sourceLineNo">5713</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5713"></a>
-<span class="sourceLineNo">5714</span>          .get(0).getRowLength(), row0, 0, row0.length));<a name="line.5714"></a>
-<span class="sourceLineNo">5715</span>      assertFalse(hasNext);<a name="line.5715"></a>
-<span class="sourceLineNo">5716</span><a name="line.5716"></a>
-<span class="sourceLineNo">5717</span>      scanner.close();<a name="line.5717"></a>
-<span class="sourceLineNo">5718</span>    } finally {<a name="line.5718"></a>
-<span class="sourceLineNo">5719</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5719"></a>
-<span class="sourceLineNo">5720</span>      this.region = null;<a name="line.5720"></a>
-<span class="sourceLineNo">5721</span>    }<a name="line.5721"></a>
-<span class="sourceLineNo">5722</span>  }<a name="line.5722"></a>
-<span class="sourceLineNo">5723</span><a name="line.5723"></a>
-<span class="sourceLineNo">5724</span>  @Test (timeout=60000)<a name="line.5724"></a>
-<span class="sourceLineNo">5725</span>  public void testReverseScanner_FromMemStoreAndHFiles_MultiCFs2()<a name="line.5725"></a>
-<span class="sourceLineNo">5726</span>      throws IOException {<a name="line.5726"></a>
-<span class="sourceLineNo">5727</span>    byte[] row1 = Bytes.toBytes("row1");<a name="line.5727"></a>
-<span class="sourceLineNo">5728</span>    byte[] row2 = Bytes.toBytes("row2");<a name="line.5728"></a>
-<span class="sourceLineNo">5729</span>    byte[] row3 = Bytes.toBytes("row3");<a name="line.5729"></a>
-<span class="sourceLineNo">5730</span>    byte[] row4 = Bytes.toBytes("row4");<a name="line.5730"></a>
-<span class="sourceLineNo">5731</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5731"></a>
-<span class="sourceLineNo">5732</span>    byte[] cf2 = Bytes.toBytes("CF2");<a name="line.5732"></a>
-<span class="sourceLineNo">5733</span>    byte[] cf3 = Bytes.toBytes("CF3");<a name="line.5733"></a>
-<span class="sourceLineNo">5734</span>    byte[] cf4 = Bytes.toBytes("CF4");<a name="line.5734"></a>
-<span class="sourceLineNo">5735</span>    byte[][] families = { cf1, cf2, cf3, cf4 };<a name="line.5735"></a>
-<span class="sourceLineNo">5736</span>    byte[] col = Bytes.toBytes("C");<a name="line.5736"></a>
-<span class="sourceLineNo">5737</span>    long ts = 1;<a name="line.5737"></a>
-<span class="sourceLineNo">5738</span>    String method = this.getName();<a name="line.5738"></a>
-<span class="sourceLineNo">5739</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5739"></a>
-<span class="sourceLineNo">5740</span>    // disable compactions in this test.<a name="line.5740"></a>
-<span class="sourceLineNo">5741</span>    conf.setInt("hbase.hstore.compactionThreshold", 10000);<a name="line.5741"></a>
-<span class="sourceLineNo">5742</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5742"></a>
-<span class="sourceLineNo">5743</span>    try {<a name="line.5743"></a>
-<span class="sourceLineNo">5744</span>      KeyValue kv1 = new KeyValue(row1, cf1, col, ts, KeyValue.Type.Put, null);<a name="line.5744"></a>
-<span class="sourceLineNo">5745</span>      KeyValue kv2 = new KeyValue(row2, cf2, col, ts, KeyValue.Type.Put, null);<a name="line.5745"></a>
-<span class="sourceLineNo">5746</span>      KeyValue kv3 = new KeyValue(row3, cf3, col, ts, KeyValue.Type.Put, null);<a name="line.5746"></a>
-<span class="sourceLineNo">5747</span>      KeyValue kv4 = new KeyValue(row4, cf4, col, ts, KeyValue.Type.Put, null);<a name="line.5747"></a>
-<span class="sourceLineNo">5748</span>      // storefile1<a name="line.5748"></a>
-<span class="sourceLineNo">5749</span>      Put put = new Put(row1);<a name="line.5749"></a>
-<span class="sourceLineNo">5750</span>      put.add(kv1);<a name="line.5750"></a>
-<span class="sourceLineNo">5751</span>      region.put(put);<a name="line.5751"></a>
-<span class="sourceLineNo">5752</span>      region.flush(true);<a name="line.5752"></a>
-<span class="sourceLineNo">5753</span>      // storefile2<a name="line.5753"></a>
-<span class="sourceLineNo">5754</span>      put = new Put(row2);<a name="line.5754"></a>
-<span class="sourceLineNo">5755</span>      put.add(kv2);<a name="line.5755"></a>
-<span class="sourceLineNo">5756</span>      region.put(put);<a name="line.5756"></a>
-<span class="sourceLineNo">5757</span>      region.flush(true);<a name="line.5757"></a>
-<span class="sourceLineNo">5758</span>      // storefile3<a name="line.5758"></a>
-<span class="sourceLineNo">5759</span>      put = new Put(row3);<a name="line.5759"></a>
-<span class="sourceLineNo">5760</span>      put.add(kv3);<a name="line.5760"></a>
-<span class="sourceLineNo">5761</span>      region.put(put);<a name="line.5761"></a>
-<span class="sourceLineNo">5762</span>      region.flush(true);<a name="line.5762"></a>
-<span class="sourceLineNo">5763</span>      // memstore<a name="line.5763"></a>
-<span class="sourceLineNo">5764</span>      put = new Put(row4);<a name="line.5764"></a>
-<span class="sourceLineNo">5765</span>      put.add(kv4);<a name="line.5765"></a>
-<span class="sourceLineNo">5766</span>      region.put(put);<a name="line.5766"></a>
-<span class="sourceLineNo">5767</span>      // scan range = ["row4", min)<a name="line.5767"></a>
-<span class="sourceLineNo">5768</span>      Scan scan = new Scan(row4);<a name="line.5768"></a>
-<span class="sourceLineNo">5769</span>      scan.setReversed(true);<a name="line.5769"></a>
-<span class="sourceLineNo">5770</span>      scan.setBatch(10);<a name="line.5770"></a>
-<span class="sourceLineNo">5771</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5771"></a>
-<span class="sourceLineNo">5772</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;Cell&gt;();<a name="line.5772"></a>
-<span class="sourceLineNo">5773</span>      boolean hasNext = scanner.next(currRow);<a name="line.5773"></a>
-<span class="sourceLineNo">5774</span>      assertEquals(1, currRow.size());<a name="line.5774"></a>
-<span class="sourceLineNo">5775</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5775"></a>
-<span class="sourceLineNo">5776</span>          .get(0).getRowLength(), row4, 0, row4.length));<a name="line.5776"></a>
-<span class="sourceLineNo">5777</span>      assertTrue(hasNext);<a name="line.5777"></a>
-<span class="sourceLineNo">5778</span>      currRow.clear();<a name="line.5778"></a>
-<span class="sourceLineNo">5779</span>      hasNext = scanner.next(currRow);<a name="line.5779"></a>
-<span class="sourceLineNo">5780</span>      assertEquals(1, currRow.size());<a name="line.5780"></a>
-<span class="sourceLineNo">5781</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5781"></a>
-<span class="sourceLineNo">5782</span>          .get(0).getRowLength(), row3, 0, row3.length));<a name="line.5782"></a>
-<span class="sourceLineNo">5783</span>      assertTrue(hasNext);<a name="line.5783"></a>
-<span class="sourceLineNo">5784</span>      currRow.clear();<a name="line.5784"></a>
-<span class="sourceLineNo">5785</span>      hasNext = scanner.next(currRow);<a name="line.5785"></a>
-<span class="sourceLineNo">5786</span>      assertEquals(1, currRow.size());<a name="line.5786"></a>
-<span class="sourceLineNo">5787</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5787"></a>
-<span class="sourceLineNo">5788</span>          .get(0).getRowLength(), row2, 0, row2.length));<a name="line.5788"></a>
-<span class="sourceLineNo">5789</span>      assertTrue(hasNext);<a name="line.5789"></a>
-<span class="sourceLineNo">5790</span>      currRow.clear();<a name="line.5790"></a>
-<span class="sourceLineNo">5791</span>      hasNext = scanner.next(currRow);<a name="line.5791"></a>
-<span class="sourceLineNo">5792</span>      assertEquals(1, currRow.size());<a name="line.5792"></a>
-<span class="sourceLineNo">5793</span>      assertTrue(Bytes.equals(currRow.get(0).getRowArray(), currRow.get(0).getRowOffset(), currRow<a name="line.5793"></a>
-<span class="sourceLineNo">5794</span>          .get(0).getRowLength(), row1, 0, row1.length));<a name="line.5794"></a>
-<span class="sourceLineNo">5795</span>      assertFalse(hasNext);<a name="line.5795"></a>
-<span class="sourceLineNo">5796</span>    } finally {<a name="line.5796"></a>
-<span class="sourceLineNo">5797</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5797"></a>
-<span class="sourceLineNo">5798</span>      this.region = null;<a name="line.5798"></a>
-<span class="sourceLineNo">5799</span>    }<a name="line.5799"></a>
-<span class="sourceLineNo">5800</span>  }<a name="line.5800"></a>
-<span class="sourceLineNo">5801</span><a name="line.5801"></a>
-<span class="sourceLineNo">5802</span>  /**<a name="line.5802"></a>
-<span class="sourceLineNo">5803</span>   * Test for HBASE-14497: Reverse Scan threw StackOverflow caused by readPt checking<a name="line.5803"></a>
-<span class="sourceLineNo">5804</span>   */<a name="line.5804"></a>
-<span class="sourceLineNo">5805</span>  @Test (timeout = 60000)<a name="line.5805"></a>
-<span class="sourceLineNo">5806</span>  public void testReverseScanner_StackOverflow() throws IOException {<a name="line.5806"></a>
-<span class="sourceLineNo">5807</span>    byte[] cf1 = Bytes.toBytes("CF1");<a name="line.5807"></a>
-<span class="sourceLineNo">5808</span>    byte[][] families = {cf1};<a name="line.5808"></a>
-<span class="sourceLineNo">5809</span>    byte[] col = Bytes.toBytes("C");<a name="line.5809"></a>
-<span class="sourceLineNo">5810</span>    String method = this.getName();<a name="line.5810"></a>
-<span class="sourceLineNo">5811</span>    HBaseConfiguration conf = new HBaseConfiguration();<a name="line.5811"></a>
-<span class="sourceLineNo">5812</span>    this.region = initHRegion(tableName, method, conf, families);<a name="line.5812"></a>
-<span class="sourceLineNo">5813</span>    try {<a name="line.5813"></a>
-<span class="sourceLineNo">5814</span>      // setup with one storefile and one memstore, to create scanner and get an earlier readPt<a name="line.5814"></a>
-<span class="sourceLineNo">5815</span>      Put put = new Put(Bytes.toBytes("19998"));<a name="line.5815"></a>
-<span class="sourceLineNo">5816</span>      put.addColumn(cf1, col, Bytes.toBytes("val"));<a name="line.5816"></a>
-<span class="sourceLineNo">5817</span>      region.put(put);<a name="line.5817"></a>
-<span class="sourceLineNo">5818</span>      region.flushcache(true, true);<a name="line.5818"></a>
-<span class="sourceLineNo">5819</span>      Put put2 = new Put(Bytes.toBytes("19997"));<a name="line.5819"></a>
-<span class="sourceLineNo">5820</span>      put2.addColumn(cf1, col, Bytes.toBytes("val"));<a name="line.5820"></a>
-<span class="sourceLineNo">5821</span>      region.put(put2);<a name="line.5821"></a>
-<span class="sourceLineNo">5822</span><a name="line.5822"></a>
-<span class="sourceLineNo">5823</span>      Scan scan = new Scan(Bytes.toBytes("19998"));<a name="line.5823"></a>
-<span class="sourceLineNo">5824</span>      scan.setReversed(true);<a name="line.5824"></a>
-<span class="sourceLineNo">5825</span>      InternalScanner scanner = region.getScanner(scan);<a name="line.5825"></a>
-<span class="sourceLineNo">5826</span><a name="line.5826"></a>
-<span class="sourceLineNo">5827</span>      // create one storefile contains many rows will be skipped<a name="line.5827"></a>
-<span class="sourceLineNo">5828</span>      // to check StoreFileScanner.seekToPreviousRow<a name="line.5828"></a>
-<span class="sourceLineNo">5829</span>      for (int i = 10000; i &lt; 20000; i++) {<a name="line.5829"></a>
-<span class="sourceLineNo">5830</span>        Put p = new Put(Bytes.toBytes(""+i));<a name="line.5830"></a>
-<span class="sourceLineNo">5831</span>        p.addColumn(cf1, col, Bytes.toBytes("" + i));<a name="line.5831"></a>
-<span class="sourceLineNo">5832</span>        region.put(p);<a name="line.5832"></a>
-<span class="sourceLineNo">5833</span>      }<a name="line.5833"></a>
-<span class="sourceLineNo">5834</span>      region.flushcache(true, true);<a name="line.5834"></a>
-<span class="sourceLineNo">5835</span><a name="line.5835"></a>
-<span class="sourceLineNo">5836</span>      // create one memstore contains many rows will be skipped<a name="line.5836"></a>
-<span class="sourceLineNo">5837</span>      // to check MemStoreScanner.seekToPreviousRow<a name="line.5837"></a>
-<span class="sourceLineNo">5838</span>      for (int i = 10000; i &lt; 20000; i++) {<a name="line.5838"></a>
-<span class="sourceLineNo">5839</span>        Put p = new Put(Bytes.toBytes(""+i));<a name="line.5839"></a>
-<span class="sourceLineNo">5840</span>        p.addColumn(cf1, col, Bytes.toBytes("" + i));<a name="line.5840"></a>
-<span class="sourceLineNo">5841</span>        region.put(p);<a name="line.5841"></a>
-<span class="sourceLineNo">5842</span>      }<a name="line.5842"></a>
-<span class="sourceLineNo">5843</span><a name="line.5843"></a>
-<span class="sourceLineNo">5844</span>      List&lt;Cell&gt; currRow = new ArrayList&lt;&gt;();<a name="line.5844"></a>
-<span class="sourceLineNo">5845</span>      boolean hasNext;<a name="line.5845"></a>
-<span class="sourceLineNo">5846</span>      do {<a name="line.5846"></a>
-<span class="sourceLineNo">5847</span>        hasNext = scanner.next(currRow);<a name="line.5847"></a>
-<span class="sourceLineNo">5848</span>      } while (hasNext);<a name="line.5848"></a>
-<span class="sourceLineNo">5849</span>      assertEquals(2, currRow.size());<a name="line.5849"></a>
-<span class="sourceLineNo">5850</span>      assertEquals("19998", Bytes.toString(currRow.get(0).getRowArray(),<a name="line.5850"></a>
-<span class="sourceLineNo">5851</span>        currRow.get(0).getRowOffset(), currRow.get(0).getRowLength()));<a name="line.5851"></a>
-<span class="sourceLineNo">5852</span>      assertEquals("19997", Bytes.toString(currRow.get(1).getRowArray(),<a name="line.5852"></a>
-<span class="sourceLineNo">5853</span>        currRow.get(1).getRowOffset(), currRow.get(1).getRowLength()));<a name="line.5853"></a>
-<span class="sourceLineNo">5854</span>    } finally {<a name="line.5854"></a>
-<span class="sourceLineNo">5855</span>      HBaseTestingUtility.closeRegionAndWAL(this.region);<a name="line.5855"></a>
-<span class="sourceLineNo">5856</span>      this.region = null;<a name="line.5856"></a>
-<span class="sourceLineNo">5857</span>    }<a name="line.5857"></a>
-<span class="sourceLineNo">5858</span>  }<a name="line.5858"></a>
-<span class="sourceLineNo">5859</span><a name="line.5859"></a>
-<span class="sourceLineNo">5860</span>  @Test (timeout=60000)<a name="line.5860"></a>
-<span class="sourceLineNo">5861</span>  public void testSplitRegionWithReverseScan() throws IOException {<a name="line.5861"></a>
-<span class="sourceLineNo">5862</span>    TableName tableName = TableName.valueOf("testSplitRegionWithReverseScan");<a name="line.5862"></a>
-<span class="sourceLineNo">5863</span>    byte [] qualifier = Bytes.toBytes("qualifier");<a name="line.5863"></a>
-<span class="sourceLineNo">5864</span>    Configuration hc = initSplit();<a name="line.5864"></a>
-<span class="sourceLineNo">5865</span>    int numRows = 3;<a name="line.5865"></a>
-<span class="sourceLineNo">5866</span>    byte [][] families = {fam1};<a name="line.5866"></a>
-<span class="sourceLineNo">5867</span><a name="line.5867"></a>
-<span class="sourceLineNo">5868</span>    //Setting up region<a name="line.5868"></a>
-<span class="sourceLineNo">5869</span>    String method = this.getName();<a name="line.5869"></a>
-<span class="sourceLineNo">5870</span>    this.region = initHRegion(tableName, method, hc, families);<a name="line.5870"></a>
-<span class="sourceLineNo">5871</span><a name="line.5871"></a>
-<span class="sourceLineNo">5872</span>    //Put data in region<a name="line.5872"></a>
-<span class="sourceLineNo">5873</span>    int startRow = 100;<a name="line.5873"></a>
-<span class="sourceLineNo">5874</span>    putData(startRow, numRows, qualifier, families);<a name="line.5874"></a>
-<span class="sourceLineNo">5875</span>    int splitRow = startRow + numRows;<a name="line.5875"></a>
-<span class="sourceLineNo">5876</span>    putData(splitRow, numRows, qualifier, families);<a name="line.5876"></a>
-<span class="sourceLineNo">5877</span>    region.flush(true);<a name="line.5877"></a>
-<span class="sourceLineNo">5878</span><a name="line.5878"></a>
-<span class="sourceLineNo">5879</span>    HRegion [] regions = null;<a name="line.5879"></a>
-<span class="sourceLineNo">5880</span>    try {<a name="line.5880"></a>
-<span class="sourceLineNo">5881</span>      regions = splitRegion(region, Bytes.toBytes("" + splitRow));<a name="line.5881"></a>
-<span class="sourceLineNo">5882</span>      //Opening the regions returned.<a name="line.5882"></a>
-<span class="sourceLineNo">5883</span>      for (int i = 0; i &lt; regions.length; i++) {<a name="line.5883"></a>
-<span class="sourceLineNo">5884</span>        regions[i] = HRegion.openHRegion(regions[i], null);<a name="line.5884"></a>
-<span class="sourceLineNo">5885</span>      }<a name="line.5885"></a>
-<span class="sourceLineNo">5886</span>      //Verifying that the region ha

<TRUNCATED>

[43/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html
index f736bc1..fd0f704 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html
@@ -110,7 +110,7 @@
 <hr>
 <br>
 <pre><a href="../../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html#line.33">ReplayHLogKey</a>
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html#line.32">ReplayHLogKey</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/HLogKey.html" title="class in org.apache.hadoop.hbase.regionserver.wal">HLogKey</a></pre>
 <div class="block">An HLogKey specific to WalEdits coming from replay.</div>
 </li>
@@ -242,7 +242,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/HLog
 <ul class="blockList">
 <li class="blockList">
 <h4>ReplayHLogKey</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html#line.35">ReplayHLogKey</a>(byte[]&nbsp;encodedRegionName,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html#line.34">ReplayHLogKey</a>(byte[]&nbsp;encodedRegionName,
              <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tablename,
              long&nbsp;now,
              <a href="http://docs.oracle.com/javase/7/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/7/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&gt;&nbsp;clusterIds,
@@ -257,7 +257,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/HLog
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplayHLogKey</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html#line.41">ReplayHLogKey</a>(byte[]&nbsp;encodedRegionName,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html#line.40">ReplayHLogKey</a>(byte[]&nbsp;encodedRegionName,
              <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tablename,
              long&nbsp;logSeqNum,
              long&nbsp;now,
@@ -281,17 +281,14 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/HLog
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getSequenceId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html#line.52">getSequenceId</a>()
-                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/ReplayHLogKey.html#line.51">getSequenceId</a>()</pre>
 <div class="block">Returns the original sequence id</div>
 <dl>
 <dt><strong>Specified by:</strong></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SequenceId.html#getSequenceId()">getSequenceId</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/SequenceId.html" title="interface in org.apache.hadoop.hbase.regionserver">SequenceId</a></code></dd>
 <dt><strong>Overrides:</strong></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html#getSequenceId()">getSequenceId</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a></code></dd>
-<dt><span class="strong">Returns:</span></dt><dd>long the new assigned sequence number</dd>
-<dt><span class="strong">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd></dl>
+<dt><span class="strong">Returns:</span></dt><dd>long the new assigned sequence number</dd></dl>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-use.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-use.html
index dba6cce..b4c10bd 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-use.html
@@ -170,7 +170,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/class-use/HLogKey.html#org.apache.hadoop.hbase.coprocessor">HLogKey</a>
 <div class="block"><strong>Deprecated.</strong>&nbsp;
-<div class="block"><i>use WALKey.  as of 2.0.  Remove in 3.0</i></div>
+<div class="block"><i>use WALKey. Deprecated as of 1.0 (HBASE-12522). Remove in 2.0</i></div>
 </div>
 </td>
 </tr>
@@ -196,7 +196,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/class-use/HLogKey.html#org.apache.hadoop.hbase.mapreduce">HLogKey</a>
 <div class="block"><strong>Deprecated.</strong>&nbsp;
-<div class="block"><i>use WALKey.  as of 2.0.  Remove in 3.0</i></div>
+<div class="block"><i>use WALKey. Deprecated as of 1.0 (HBASE-12522). Remove in 2.0</i></div>
 </div>
 </td>
 </tr>
@@ -222,7 +222,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/class-use/HLogKey.html#org.apache.hadoop.hbase.regionserver">HLogKey</a>
 <div class="block"><strong>Deprecated.</strong>&nbsp;
-<div class="block"><i>use WALKey.  as of 2.0.  Remove in 3.0</i></div>
+<div class="block"><i>use WALKey. Deprecated as of 1.0 (HBASE-12522). Remove in 2.0</i></div>
 </div>
 </td>
 </tr>
@@ -295,7 +295,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <tr class="rowColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/class-use/HLogKey.html#org.apache.hadoop.hbase.regionserver.wal">HLogKey</a>
 <div class="block"><strong>Deprecated.</strong>&nbsp;
-<div class="block"><i>use WALKey.  as of 2.0.  Remove in 3.0</i></div>
+<div class="block"><i>use WALKey. Deprecated as of 1.0 (HBASE-12522). Remove in 2.0</i></div>
 </div>
 </td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/devapidocs/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html b/devapidocs/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html
index a22e355..2df0406 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html
@@ -96,7 +96,7 @@
 <hr>
 <br>
 <pre><a href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html" title="annotation in org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html#line.27">SecureBulkLoadUtil</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html#line.28">SecureBulkLoadUtil</a>
 extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -192,7 +192,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BULKLOAD_STAGING_DIR</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html#line.28">BULKLOAD_STAGING_DIR</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html#line.29">BULKLOAD_STAGING_DIR</a></pre>
 <dl><dt><span class="strong">See Also:</span></dt><dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.security.SecureBulkLoadUtil.BULKLOAD_STAGING_DIR">Constant Field Values</a></dd></dl>
 </li>
 </ul>
@@ -210,7 +210,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SecureBulkLoadUtil</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html#line.27">SecureBulkLoadUtil</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html#line.28">SecureBulkLoadUtil</a>()</pre>
 </li>
 </ul>
 </li>
@@ -227,7 +227,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getStagingPath</h4>
-<pre>public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html#line.34">getStagingPath</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html#line.35">getStagingPath</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                        <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;bulkToken,
                                        byte[]&nbsp;family)</pre>
 <div class="block">This returns the staging path for a given column family.
@@ -240,7 +240,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getBaseStagingDir</h4>
-<pre>public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html#line.39">getBaseStagingDir</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/SecureBulkLoadUtil.html#line.40">getBaseStagingDir</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 </li>

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

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

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

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

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


[26/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html
new file mode 100644
index 0000000..08972b2
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html
@@ -0,0 +1,291 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestIncrementFromClientSideWithCoprocessor (Apache HBase 2.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="TestIncrementFromClientSideWithCoprocessor (Apache HBase 2.0.0-SNAPSHOT Test API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestIncrementFromClientSideWithCoprocessor.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" target="_top">Frames</a></li>
+<li><a href="TestIncrementFromClientSideWithCoprocessor.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#fields_inherited_from_class_org.apache.hadoop.hbase.client.TestIncrementsFromClientSide">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_detail">Method</a></li>
+</ul>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.client</div>
+<h2 title="Class TestIncrementFromClientSideWithCoprocessor" class="title">Class TestIncrementFromClientSideWithCoprocessor</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">org.apache.hadoop.hbase.client.TestIncrementsFromClientSide</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.client.TestIncrementFromClientSideWithCoprocessor</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html#line.36">TestIncrementFromClientSideWithCoprocessor</a>
+extends <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></pre>
+<div class="block">Test all <code>Increment</code> client operations with a coprocessor that
+ just implements the default flush/compact/scan policy.
+
+ This test takes a long time. The test it derives from is parameterized so we run through both
+ options of the test.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field_summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields_inherited_from_class_org.apache.hadoop.hbase.client.TestIncrementsFromClientSide">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#LOG">LOG</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#name">name</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#SLAVES">SLAVES</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#TEST_UTIL">TEST_UTIL</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html#TestIncrementFromClientSideWithCoprocessor()">TestIncrementFromClientSideWithCoprocessor</a></strong>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html#before()">before</a></strong>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods_inherited_from_class_org.apache.hadoop.hbase.client.TestIncrementsFromClientSide">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#afterClass()">afterClass</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#assertIncrementKey(org.apache.hadoop.hbase.Cell,%20byte[],%20byte[],%20byte[],%20long)">assertIncrementKey</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#beforeClass()">beforeClass</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#filterStringSoTableNameSafe(java.lang.String)">filterStringSoTableNameSafe</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrement()">testIncrement</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementingInvalidValue()">testIncrementingInvalidValue</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncremen
 tInvalidArguments()">testIncrementInvalidArguments</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementOnSameColumn()">testIncrementOnSameColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementOutOfOrder()">testIncrementOutOfOrder</a>, <a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementWithDeletes()">testIncrementWithDeletes</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang
 /Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestIncrementFromClientSideWithCoprocessor()">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestIncrementFromClientSideWithCoprocessor</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html#line.36">TestIncrementFromClientSideWithCoprocessor</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="before()">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>before</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html#line.38">before</a>()
+            throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestIncrementFromClientSideWithCoprocessor.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" target="_top">Frames</a></li>
+<li><a href="TestIncrementFromClientSideWithCoprocessor.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#fields_inherited_from_class_org.apache.hadoop.hbase.client.TestIncrementsFromClientSide">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_detail">Method</a></li>
+</ul>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html
new file mode 100644
index 0000000..74110ea
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html
@@ -0,0 +1,523 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestIncrementsFromClientSide (Apache HBase 2.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="TestIncrementsFromClientSide (Apache HBase 2.0.0-SNAPSHOT Test API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestIncrementsFromClientSide.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" target="_top">Frames</a></li>
+<li><a href="TestIncrementsFromClientSide.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_detail">Method</a></li>
+</ul>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.client</div>
+<h2 title="Class TestIncrementsFromClientSide" class="title">Class TestIncrementsFromClientSide</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.client.TestIncrementsFromClientSide</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>Direct Known Subclasses:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestIncrementFromClientSideWithCoprocessor</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.54">TestIncrementsFromClientSide</a>
+extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+<div class="block">Run Increment tests that use the HBase clients; <code>HTable</code>.
+
+ Test is parameterized to run the slow and fast increment code paths. If fast, in the @before, we
+ do a rolling restart of the single regionserver so that it can pick up the go fast configuration.
+ Doing it this way should be faster than starting/stopping a cluster per test.
+
+ Test takes a long time because spin up a cluster between each run -- ugh.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field_summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#FAMILY">FAMILY</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) org.apache.commons.logging.Log</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#LOG">LOG</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>org.junit.rules.TestName</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#name">name</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#ROW">ROW</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected static int</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#SLAVES">SLAVES</a></strong></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#TEST_UTIL">TEST_UTIL</a></strong></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#TestIncrementsFromClientSide()">TestIncrementsFromClientSide</a></strong>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#afterClass()">afterClass</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) static void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#assertIncrementKey(org.apache.hadoop.hbase.Cell,%20byte[],%20byte[],%20byte[],%20long)">assertIncrementKey</a></strong>(org.apache.hadoop.hbase.Cell&nbsp;key,
+                                    byte[]&nbsp;row,
+                                    byte[]&nbsp;family,
+                                    byte[]&nbsp;qualifier,
+                                    long&nbsp;value)</code>
+<div class="block">Call over to the adjacent class's method of same name.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#beforeClass()">beforeClass</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#filterStringSoTableNameSafe(java.lang.String)">filterStringSoTableNameSafe</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;str)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrement()">testIncrement</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementingInvalidValue()">testIncrementingInvalidValue</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementInvalidArguments()">testIncrementInvalidArguments</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementOnSameColumn()">testIncrementOnSameColumn</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementOutOfOrder()">testIncrementOutOfOrder</a></strong>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><strong><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#testIncrementWithDeletes()">testIncrementWithDeletes</a></strong>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang
 /Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long,%20int)" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field_detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="LOG">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LOG</h4>
+<pre>final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.55">LOG</a></pre>
+</li>
+</ul>
+<a name="TEST_UTIL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TEST_UTIL</h4>
+<pre>protected static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.56">TEST_UTIL</a></pre>
+</li>
+</ul>
+<a name="ROW">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ROW</h4>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.57">ROW</a></pre>
+</li>
+</ul>
+<a name="FAMILY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>FAMILY</h4>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.58">FAMILY</a></pre>
+</li>
+</ul>
+<a name="SLAVES">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>SLAVES</h4>
+<pre>protected static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.61">SLAVES</a></pre>
+</li>
+</ul>
+<a name="name">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>name</h4>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.62">name</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor_detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestIncrementsFromClientSide()">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestIncrementsFromClientSide</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.54">TestIncrementsFromClientSide</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method_detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="beforeClass()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>beforeClass</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.65">beforeClass</a>()
+                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+<a name="afterClass()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>afterClass</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.78">afterClass</a>()
+                       throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+<a name="testIncrementWithDeletes()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testIncrementWithDeletes</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.83">testIncrementWithDeletes</a>()
+                              throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+<a name="testIncrementingInvalidValue()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testIncrementingInvalidValue</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.105">testIncrementingInvalidValue</a>()
+                                  throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+<a name="testIncrementInvalidArguments()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testIncrementInvalidArguments</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.132">testIncrementInvalidArguments</a>()
+                                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+<a name="testIncrementOutOfOrder()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testIncrementOutOfOrder</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.188">testIncrementOutOfOrder</a>()
+                             throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+<a name="testIncrementOnSameColumn()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testIncrementOnSameColumn</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.230">testIncrementOnSameColumn</a>()
+                               throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+<a name="testIncrement()">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testIncrement</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.274">testIncrement</a>()
+                   throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+<a name="assertIncrementKey(org.apache.hadoop.hbase.Cell, byte[], byte[], byte[], long)">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>assertIncrementKey</h4>
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.365">assertIncrementKey</a>(org.apache.hadoop.hbase.Cell&nbsp;key,
+                      byte[]&nbsp;row,
+                      byte[]&nbsp;family,
+                      byte[]&nbsp;qualifier,
+                      long&nbsp;value)
+                        throws <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<div class="block">Call over to the adjacent class's method of same name.</div>
+<dl><dt><span class="strong">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd></dl>
+</li>
+</ul>
+<a name="filterStringSoTableNameSafe(java.lang.String)">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>filterStringSoTableNameSafe</h4>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#line.370">filterStringSoTableNameSafe</a>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;str)</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestIncrementsFromClientSide.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Next Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" target="_top">Frames</a></li>
+<li><a href="TestIncrementsFromClientSide.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field_summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field_detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method_detail">Method</a></li>
+</ul>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/TestIntraRowPagination.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestIntraRowPagination.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestIntraRowPagination.html
index 01fe1ae..8354349 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestIntraRowPagination.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestIntraRowPagination.html
@@ -35,7 +35,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Prev Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -253,7 +253,7 @@ extends <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Prev Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Prev Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">Next Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestFromClientSide.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestFromClientSide.html b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestFromClientSide.html
index b88b381..b9a333f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestFromClientSide.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestFromClientSide.html
@@ -98,7 +98,7 @@
 <td class="colFirst"><code>class&nbsp;</code></td>
 <td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideWithCoprocessor</a></strong></code>
 <div class="block">Test all client operations with a coprocessor that
- just implements the default flush/compact/scan policy</div>
+ just implements the default flush/compact/scan policy.</div>
 </td>
 </tr>
 </tbody>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestIncrementsFromClientSide.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestIncrementsFromClientSide.html b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestIncrementsFromClientSide.html
new file mode 100644
index 0000000..cbd0d3d
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestIncrementsFromClientSide.html
@@ -0,0 +1,158 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.client.TestIncrementsFromClientSide (Apache HBase 2.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<script type="text/javascript"><!--
+    if (location.href.indexOf('is-external=true') == -1) {
+        parent.document.title="Uses of Class org.apache.hadoop.hbase.client.TestIncrementsFromClientSide (Apache HBase 2.0.0-SNAPSHOT Test API)";
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar_top">
+<!--   -->
+</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/client/class-use/TestIncrementsFromClientSide.html" target="_top">Frames</a></li>
+<li><a href="TestIncrementsFromClientSide.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.client.TestIncrementsFromClientSide" class="title">Uses of Class<br>org.apache.hadoop.hbase.client.TestIncrementsFromClientSide</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.client">org.apache.hadoop.hbase.client</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.client">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a> in <a href="../../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></h3>
+<table border="0" cellpadding="3" cellspacing="0" summary="Use table, listing subclasses, and an explanation">
+<caption><span>Subclasses of <a href="../../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a> in <a href="../../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><strong><a href="../../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestIncrementFromClientSideWithCoprocessor</a></strong></code>
+<div class="block">Test all <code>Increment</code> client operations with a coprocessor that
+ just implements the default flush/compact/scan policy.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar_bottom">
+<!--   -->
+</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/client/class-use/TestIncrementsFromClientSide.html" target="_top">Frames</a></li>
+<li><a href="TestIncrementsFromClientSide.html" target="_top">No Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip-navbar_bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2016 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
index e334501..0b99697 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
@@ -81,6 +81,8 @@
 <li><a href="TestHTableMultiplexer.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestHTableMultiplexer</a></li>
 <li><a href="TestHTableMultiplexerFlushCache.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestHTableMultiplexerFlushCache</a></li>
 <li><a href="TestIncrement.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestIncrement</a></li>
+<li><a href="TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestIncrementFromClientSideWithCoprocessor</a></li>
+<li><a href="TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestIncrementsFromClientSide</a></li>
 <li><a href="TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestIntraRowPagination</a></li>
 <li><a href="TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestLeaseRenewal</a></li>
 <li><a href="TestMetaWithReplicas.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMetaWithReplicas</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
index 32531db..853f41f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
@@ -366,7 +366,7 @@
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideWithCoprocessor</a></td>
 <td class="colLast">
 <div class="block">Test all client operations with a coprocessor that
- just implements the default flush/compact/scan policy</div>
+ just implements the default flush/compact/scan policy.</div>
 </td>
 </tr>
 <tr class="altColor">
@@ -406,6 +406,19 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestIncrementFromClientSideWithCoprocessor</a></td>
+<td class="colLast">
+<div class="block">Test all <code>Increment</code> client operations with a coprocessor that
+ just implements the default flush/compact/scan policy.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></td>
+<td class="colLast">
+<div class="block">Run Increment tests that use the HBase clients; <code>HTable</code>.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client">TestIntraRowPagination</a></td>
 <td class="colLast">
 <div class="block">Test scan/get offset and limit settings within one row through HRegion API.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
index eaac454..896d26c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -244,6 +244,11 @@
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestHTableMultiplexer.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestHTableMultiplexer</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestHTableMultiplexerFlushCache</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestIncrement.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestIncrement</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestIncrementsFromClientSide</span></a>
+<ul>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestIncrementFromClientSideWithCoprocessor</span></a></li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestIntraRowPagination</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestLeaseRenewal</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestMetaWithReplicas.html" title="class in org.apache.hadoop.hbase.client"><span class="strong">TestMetaWithReplicas</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/client/package-use.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-use.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-use.html
index bcc30c6..572cff7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-use.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-use.html
@@ -138,11 +138,16 @@
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/client/class-use/TestHBaseAdminNoCluster.MethodCaller.html#org.apache.hadoop.hbase.client">TestHBaseAdminNoCluster.MethodCaller</a>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/client/class-use/TestIncrementsFromClientSide.html#org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a>
+<div class="block">Run Increment tests that use the HBase clients; <code>HTable</code>.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/client/class-use/TestRestoreSnapshotFromClient.html#org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClient</a>
 <div class="block">Test restore snapshots from the client</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/client/class-use/TestSnapshotFromClient.html#org.apache.hadoop.hbase.client">TestSnapshotFromClient</a>
 <div class="block">Test create/using/deleting snapshots from the client</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index 149878b..aeec2af 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -156,9 +156,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="strong">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/7/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">TagUsage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestHFileBlockCompatibility.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">TestHFileBlockCompatibility.Writer.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">TestCacheOnWrite.CacheOnWriteType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TagUsage.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="strong">TagUsage</span></a></li>
 </ul>
 </li>
 </ul>


[06/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html
index 9cddc0a..1240e3e 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestAtomicOperation.html
@@ -27,8 +27,8 @@
 <span class="sourceLineNo">019</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam1;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HBaseTestingUtility.fam2;<a name="line.20"></a>
 <span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertTrue;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertNull;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertTrue;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import static org.junit.Assert.fail;<a name="line.24"></a>
 <span class="sourceLineNo">025</span><a name="line.25"></a>
 <span class="sourceLineNo">026</span>import java.io.IOException;<a name="line.26"></a>
@@ -61,19 +61,19 @@
 <span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.client.Durability;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.Get;<a name="line.54"></a>
 <span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Increment;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Put;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Result;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.68"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.IsolationLevel;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Mutation;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.client.Put;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.client.Result;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.client.RowMutations;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.io.hfile.BlockCache;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.testclassification.VerySlowRegionServerTests;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.68"></a>
 <span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.wal.WAL;<a name="line.69"></a>
 <span class="sourceLineNo">070</span>import org.junit.After;<a name="line.70"></a>
 <span class="sourceLineNo">071</span>import org.junit.Before;<a name="line.71"></a>
@@ -191,535 +191,539 @@
 <span class="sourceLineNo">183</span>   */<a name="line.183"></a>
 <span class="sourceLineNo">184</span>  @Test<a name="line.184"></a>
 <span class="sourceLineNo">185</span>  public void testIncrementMultiThreads() throws IOException {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // run a with mixed column families (1 and 3 versions)<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    // create 25 threads, each will increment by its own quantity<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    int numThreads = 25;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    int incrementsPerThread = 1000;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    int expectedTotal = 0;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // create all threads<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      expectedTotal += (i * incrementsPerThread);<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>    // run all threads<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      try {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>        all[i].join();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      } catch (InterruptedException e) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    assertICV(row, fam1, qual2, expectedTotal*2);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    assertICV(row, fam2, qual3, expectedTotal*3);<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private void assertICV(byte [] row,<a name="line.221"></a>
-<span class="sourceLineNo">222</span>                         byte [] familiy,<a name="line.222"></a>
-<span class="sourceLineNo">223</span>                         byte[] qualifier,<a name="line.223"></a>
-<span class="sourceLineNo">224</span>                         long amount) throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // run a get and see?<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    Get get = new Get(row);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    get.addColumn(familiy, qualifier);<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    Result result = region.get(get);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    assertEquals(1, result.size());<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>    Cell kv = result.rawCells()[0];<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    assertEquals(amount, r);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      byte[] ... families)<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    throws IOException {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    byte[] ... families)<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  throws IOException {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    int i=0;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    for(byte [] family : families) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      htd.addFamily(hcd);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>  /**<a name="line.256"></a>
-<span class="sourceLineNo">257</span>   * A thread that makes a few increment calls<a name="line.257"></a>
-<span class="sourceLineNo">258</span>   */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static class Incrementer extends Thread {<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final Region region;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private final int numIncrements;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    private final int amount;<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">186</span>    boolean fast = true;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    LOG.info("Starting test testIncrementMultiThreads");<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // run a with mixed column families (1 and 3 versions)<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // Create 100 threads, each will increment by its own quantity. All 100 threads update the<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    // same row over two column families.<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    int numThreads = 100;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    int incrementsPerThread = 1000;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    Incrementer[] all = new Incrementer[numThreads];<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    int expectedTotal = 0;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // create all threads<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      all[i] = new Incrementer(region, i, i, incrementsPerThread);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      expectedTotal += (i * incrementsPerThread);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    // run all threads<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      try {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        all[i].join();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      } catch (InterruptedException e) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        LOG.info("Ignored", e);<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>    assertICV(row, fam1, qual1, expectedTotal, fast);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    assertICV(row, fam1, qual2, expectedTotal*2, fast);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    assertICV(row, fam2, qual3, expectedTotal*3, fast);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    LOG.info("testIncrementMultiThreads successfully verified that total is " + expectedTotal);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>  private void assertICV(byte [] row,<a name="line.223"></a>
+<span class="sourceLineNo">224</span>                         byte [] familiy,<a name="line.224"></a>
+<span class="sourceLineNo">225</span>                         byte[] qualifier,<a name="line.225"></a>
+<span class="sourceLineNo">226</span>                         long amount,<a name="line.226"></a>
+<span class="sourceLineNo">227</span>                         boolean fast) throws IOException {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    // run a get and see?<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    Get get = new Get(row);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    if (fast) get.setIsolationLevel(IsolationLevel.READ_UNCOMMITTED);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    get.addColumn(familiy, qualifier);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Result result = region.get(get);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    assertEquals(1, result.size());<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    Cell kv = result.rawCells()[0];<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    long r = Bytes.toLong(CellUtil.cloneValue(kv));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    assertEquals(amount, r);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>  private void initHRegion (byte [] tableName, String callingMethod,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      byte[] ... families)<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    throws IOException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    initHRegion(tableName, callingMethod, null, families);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  }<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>  private void initHRegion (byte [] tableName, String callingMethod, int [] maxVersions,<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    byte[] ... families)<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  throws IOException {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    int i=0;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    for(byte [] family : families) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      hcd.setMaxVersions(maxVersions != null ? maxVersions[i++] : 1);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      htd.addFamily(hcd);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    HRegionInfo info = new HRegionInfo(htd.getTableName(), null, null, false);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    region = TEST_UTIL.createLocalHRegion(info, htd);<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 thread that makes increment calls always on the same row, this.row against two column<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   * families on this row.<a name="line.262"></a>
+<span class="sourceLineNo">263</span>   */<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public static class Incrementer extends Thread {<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>    public Incrementer(Region region,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        int threadNumber, int amount, int numIncrements) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      super("incrementer." + threadNumber);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.region = region;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      this.numIncrements = numIncrements;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      this.amount = amount;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      setDaemon(true);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span><a name="line.274"></a>
-<span class="sourceLineNo">275</span>    @Override<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    public void run() {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        try {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          Increment inc = new Increment(row);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>          inc.addColumn(fam1, qual1, amount);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>          // verify: Make sure we only see completed increments<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          Get g = new Get(row);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>          Result result = region.get(g);<a name="line.288"></a>
+<span class="sourceLineNo">266</span>    private final Region region;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    private final int numIncrements;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private final int amount;<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>    public Incrementer(Region region, int threadNumber, int amount, int numIncrements) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      super("Incrementer." + threadNumber);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      this.region = region;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      this.numIncrements = numIncrements;<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      this.amount = amount;<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      setDaemon(true);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public void run() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      for (int i = 0; i &lt; numIncrements; i++) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        try {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          Increment inc = new Increment(row);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>          inc.addColumn(fam1, qual1, amount);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          inc.addColumn(fam1, qual2, amount*2);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          inc.addColumn(fam2, qual3, amount*3);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          inc.setDurability(Durability.ASYNC_WAL);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          Result result = region.increment(inc, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.288"></a>
 <span class="sourceLineNo">289</span>          if (result != null) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            assertTrue(result.getValue(fam1, qual1) != null);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            assertTrue(result.getValue(fam1, qual2) != null);<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.292"></a>
-<span class="sourceLineNo">293</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.293"></a>
-<span class="sourceLineNo">294</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.295"></a>
-<span class="sourceLineNo">296</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        } catch (IOException e) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          e.printStackTrace();<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>    }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  }<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>  @Test<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  public void testAppendMultiThreads() throws IOException {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    // run a with mixed column families (1 and 3 versions)<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    int numThreads = 100;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    int opsPerThread = 100;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    final byte[] val = new byte[]{1};<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    // create all threads<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        @Override<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        public void run() {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            try {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>              Append a = new Append(row);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>              a.add(fam1, qual1, val);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              a.add(fam1, qual2, val);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>              a.add(fam2, qual3, val);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>              Get g = new Get(row);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>              Result result = region.get(g);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.333"></a>
-<span class="sourceLineNo">334</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.334"></a>
-<span class="sourceLineNo">335</span>            } catch (IOException e) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>              e.printStackTrace();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              failures.incrementAndGet();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>              fail();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>            }<a name="line.339"></a>
-<span class="sourceLineNo">340</span>          }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>        }<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      };<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // run all threads<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      try {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        all[i].join();<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    Get g = new Get(row);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    Result result = region.get(g);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // create 10 threads, each will alternate between adding and<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // removing a column<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    int numThreads = 10;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    int opsPerThread = 250;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    // create all threads<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        @Override<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        public void run() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>          boolean op = true;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            try {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>              // throw in some flushes<a name="line.388"></a>
-<span class="sourceLineNo">389</span>              if (i%10==0) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>                synchronized(region) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>                  LOG.debug("flushing");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>                  region.flush(true);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>                  if (i%100==0) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>                    region.compact(false);<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>              }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>              long ts = timeStamps.incrementAndGet();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>              RowMutations rm = new RowMutations(row);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>              if (op) {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>                Put p = new Put(row, ts);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>                p.addColumn(fam1, qual1, value1);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>                rm.add(p);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>                Delete d = new Delete(row);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>                d.addColumns(fam1, qual2, ts);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>                rm.add(d);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              } else {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>                Delete d = new Delete(row);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>                d.addColumns(fam1, qual1, ts);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>                rm.add(d);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>                Put p = new Put(row, ts);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>                p.addColumn(fam1, qual2, value2);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>                rm.add(p);<a name="line.417"></a>
-<span class="sourceLineNo">418</span>              }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>              region.mutateRow(rm);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>              op ^= true;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>              // check: should always see exactly one column<a name="line.421"></a>
-<span class="sourceLineNo">422</span>              Get g = new Get(row);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>              Result r = region.get(g);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>              if (r.size() != 1) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>                LOG.debug(r);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>                failures.incrementAndGet();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>                fail();<a name="line.427"></a>
-<span class="sourceLineNo">428</span>              }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>            } catch (IOException e) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>              e.printStackTrace();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>              failures.incrementAndGet();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>              fail();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>            }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        }<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      };<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    }<a name="line.437"></a>
-<span class="sourceLineNo">438</span><a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // run all threads<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      all[i].start();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
-<span class="sourceLineNo">443</span><a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // wait for all threads to finish<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      try {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        all[i].join();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span><a name="line.454"></a>
-<span class="sourceLineNo">455</span>  /**<a name="line.455"></a>
-<span class="sourceLineNo">456</span>   * Test multi-threaded region mutations.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  @Test<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    // create 10 threads, each will alternate between adding and<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    // removing a column<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    int numThreads = 10;<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    int opsPerThread = 250;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // create all threads<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        @Override<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        public void run() {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>          boolean op = true;<a name="line.478"></a>
-<span class="sourceLineNo">479</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>            try {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>              // throw in some flushes<a name="line.481"></a>
-<span class="sourceLineNo">482</span>              if (i%10==0) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>                synchronized(region) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>                  LOG.debug("flushing");<a name="line.484"></a>
-<span class="sourceLineNo">485</span>                  region.flush(true);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>                  if (i%100==0) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>                    region.compact(false);<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>              long ts = timeStamps.incrementAndGet();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>              if (op) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>                Put p = new Put(row2, ts);<a name="line.494"></a>
-<span class="sourceLineNo">495</span>                p.addColumn(fam1, qual1, value1);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>                mrm.add(p);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>                Delete d = new Delete(row);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>                d.addColumns(fam1, qual1, ts);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>                mrm.add(d);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>              } else {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>                Delete d = new Delete(row2);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>                d.addColumns(fam1, qual1, ts);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>                mrm.add(d);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>                Put p = new Put(row, ts);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>                p.addColumn(fam1, qual1, value2);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>                mrm.add(p);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>              }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>              op ^= true;<a name="line.513"></a>
-<span class="sourceLineNo">514</span>              // check: should always see exactly one column<a name="line.514"></a>
-<span class="sourceLineNo">515</span>              Scan s = new Scan(row);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>              RegionScanner rs = region.getScanner(s);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.517"></a>
-<span class="sourceLineNo">518</span>              while (rs.next(r))<a name="line.518"></a>
-<span class="sourceLineNo">519</span>                ;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              rs.close();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              if (r.size() != 1) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>                LOG.debug(r);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>                failures.incrementAndGet();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>                fail();<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>            } catch (IOException e) {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>              e.printStackTrace();<a name="line.527"></a>
-<span class="sourceLineNo">528</span>              failures.incrementAndGet();<a name="line.528"></a>
-<span class="sourceLineNo">529</span>              fail();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>            }<a name="line.530"></a>
-<span class="sourceLineNo">531</span>          }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        }<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      };<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // run all threads<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      all[i].start();<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>    // wait for all threads to finish<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      try {<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        all[i].join();<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public static class AtomicOperation extends Thread {<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    protected final Region region;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    protected final int numOps;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    protected final AtomicLong timeStamps;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    protected final AtomicInteger failures;<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    protected final Random r = new Random();<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        AtomicInteger failures) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      this.region = region;<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.numOps = numOps;<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      this.timeStamps = timeStamps;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      this.failures = failures;<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  }<a name="line.565"></a>
-<span class="sourceLineNo">566</span>  <a name="line.566"></a>
-<span class="sourceLineNo">567</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  private enum TestStep {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    PUT_COMPLETED,         // put complete (released RowLock, but may not have advanced MVCC).<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    CHECKANDPUT_STARTED,   // began checkAndPut: if 10 -&gt; 11<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    CHECKANDPUT_COMPLETED  // completed checkAndPut<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    // NOTE: at the end of these steps, the value of the cell should be 50, not 11!<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  private static volatile TestStep testStep = TestStep.INIT;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>  private final String family = "f1";<a name="line.577"></a>
-<span class="sourceLineNo">578</span>     <a name="line.578"></a>
-<span class="sourceLineNo">579</span>  /**<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Test written as a verifier for HBASE-7051, CheckAndPut should properly read<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   * MVCC. <a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * <a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * Moved into TestAtomicOperation from its original location, TestHBase7051<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testPutAndCheckAndPutInParallel() throws Exception {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    final String tableName = "testPutAndCheckAndPut";<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    conf.setClass(HConstants.REGION_IMPL, MockHRegion.class, HeapSize.class);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(tableName))<a name="line.590"></a>
-<span class="sourceLineNo">591</span>        .addFamily(new HColumnDescriptor(family));<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    this.region = TEST_UTIL.createLocalHRegion(htd, null, null);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Put[] puts = new Put[1];<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    Put put = new Put(Bytes.toBytes("r1"));<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("10"));<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    puts[0] = put;<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    <a name="line.597"></a>
-<span class="sourceLineNo">598</span>    region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    MultithreadedTestUtil.TestContext ctx =<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      new MultithreadedTestUtil.TestContext(conf);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    ctx.addThread(new PutThread(ctx, region));<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    ctx.addThread(new CheckAndPutThread(ctx, region));<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    ctx.startThreads();<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    while (testStep != TestStep.CHECKANDPUT_COMPLETED) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      Thread.sleep(100);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    ctx.stop();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    Scan s = new Scan();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    RegionScanner scanner = region.getScanner(s);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    List&lt;Cell&gt; results = new ArrayList&lt;Cell&gt;();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    ScannerContext scannerContext = ScannerContext.newBuilder().setBatchLimit(2).build();<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    scanner.next(results, scannerContext);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    for (Cell keyValue : results) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      assertEquals("50",Bytes.toString(CellUtil.cloneValue(keyValue)));<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>  }<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>  private class PutThread extends TestThread {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    private Region region;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    PutThread(TestContext ctx, Region region) {<a name="line.620"></a>
-<span class="sourceLineNo">621</span>      super(ctx);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>      this.region = region;<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    }<a name="line.623"></a>
-<span class="sourceLineNo">624</span><a name="line.624"></a>
-<span class="sourceLineNo">625</span>    public void doWork() throws Exception {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      Put[] puts = new Put[1];<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("50"));<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      puts[0] = put;<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      testStep = TestStep.PUT_STARTED;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      region.batchMutate(puts, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    }<a name="line.632"></a>
-<span class="sourceLineNo">633</span>  }<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>  private class CheckAndPutThread extends TestThread {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    private Region region;<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    CheckAndPutThread(TestContext ctx, Region region) {<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      super(ctx);<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      this.region = region;<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   }<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>    public void doWork() throws Exception {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      Put[] puts = new Put[1];<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      Put put = new Put(Bytes.toBytes("r1"));<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      put.addColumn(Bytes.toBytes(family), Bytes.toBytes("q1"), Bytes.toBytes("11"));<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      puts[0] = put;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      while (testStep != TestStep.PUT_COMPLETED) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        Thread.sleep(100);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      testStep = TestStep.CHECKANDPUT_STARTED;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      region.checkAndMutate(Bytes.toBytes("r1"), Bytes.toBytes(family), Bytes.toBytes("q1"),<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        CompareOp.EQUAL, new BinaryComparator(Bytes.toBytes("10")), put, true);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      testStep = TestStep.CHECKANDPUT_COMPLETED;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>  public static class MockHRegion extends HRegion {<a name="line.657"></a>
-<span class="sourceLineNo">658</span><a name="line.658"></a>
-<span class="sourceLineNo">659</span>    public MockHRegion(Path tableDir, WAL log, FileSystem fs, Configuration conf,<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        final HRegionInfo regionInfo, final HTableDescriptor htd, RegionServerServices rsServices) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      super(tableDir, log, fs, conf, regionInfo, htd, rsServices);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>    }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>    @Override<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    public RowLock getRowLock(final byte[] row, boolean readLock) throws IOException {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>      if (testStep == TestStep.CHECKANDPUT_STARTED) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        latch.countDown();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      return new WrappedRowLock(super.getRowLock(row, readLock));<a name="line.669"></a>
-<span class="sourceLineNo">670</span>    }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    <a name="line.671"></a>
-<span class="sourceLineNo">672</span>    public class WrappedRowLock implements RowLock {<a name="line.672"></a>
-<span class="sourceLineNo">673</span><a name="line.673"></a>
-<span class="sourceLineNo">674</span>      private final RowLock rowLock;<a name="line.674"></a>
-<span class="sourceLineNo">675</span><a name="line.675"></a>
-<span class="sourceLineNo">676</span>      private WrappedRowLock(RowLock rowLock) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>        this.rowLock = rowLock;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      }<a name="line.678"></a>
+<span class="sourceLineNo">290</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              Bytes.toLong(result.getValue(fam1, qual2))); <a name="line.291"></a>
+<span class="sourceLineNo">292</span>            assertTrue(result.getValue(fam2, qual3) != null);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*3,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>              Bytes.toLong(result.getValue(fam2, qual3)));<a name="line.294"></a>
+<span class="sourceLineNo">295</span>            assertEquals(Bytes.toLong(result.getValue(fam1, qual1))*2,<a name="line.295"></a>
+<span class="sourceLineNo">296</span>               Bytes.toLong(result.getValue(fam1, qual2)));<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            long fam1Increment = Bytes.toLong(result.getValue(fam1, qual1))*3;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>            long fam2Increment = Bytes.toLong(result.getValue(fam2, qual3));<a name="line.298"></a>
+<span class="sourceLineNo">299</span>            assertEquals("fam1=" + fam1Increment + ", fam2=" + fam2Increment,<a name="line.299"></a>
+<span class="sourceLineNo">300</span>              fam1Increment, fam2Increment);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        } catch (IOException e) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>          e.printStackTrace();<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>    }<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>  @Test<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  public void testAppendMultiThreads() throws IOException {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    LOG.info("Starting test testAppendMultiThreads");<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    // run a with mixed column families (1 and 3 versions)<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    initHRegion(tableName, name.getMethodName(), new int[] {1,3}, fam1, fam2);<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    int numThreads = 100;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    int opsPerThread = 100;<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    final byte[] val = new byte[]{1};<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    // create all threads<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      all[i] = new AtomicOperation(region, opsPerThread, null, failures) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>        @Override<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        public void run() {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>            try {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>              Append a = new Append(row);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>              a.add(fam1, qual1, val);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>              a.add(fam1, qual2, val);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>              a.add(fam2, qual3, val);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>              a.setDurability(Durability.ASYNC_WAL);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              region.append(a, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.333"></a>
+<span class="sourceLineNo">334</span><a name="line.334"></a>
+<span class="sourceLineNo">335</span>              Get g = new Get(row);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>              Result result = region.get(g);<a name="line.336"></a>
+<span class="sourceLineNo">337</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam1, qual2).length); <a name="line.337"></a>
+<span class="sourceLineNo">338</span>              assertEquals(result.getValue(fam1, qual1).length, result.getValue(fam2, qual3).length); <a name="line.338"></a>
+<span class="sourceLineNo">339</span>            } catch (IOException e) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>              e.printStackTrace();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              failures.incrementAndGet();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>              fail();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>            }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>          }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>        }<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      };<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    // run all threads<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      all[i].start();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>    // wait for all threads to finish<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      try {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        all[i].join();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      } catch (InterruptedException e) {<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>    assertEquals(0, failures.get());<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    Get g = new Get(row);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    Result result = region.get(g);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    assertEquals(result.getValue(fam1, qual1).length, 10000);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    assertEquals(result.getValue(fam1, qual2).length, 10000);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    assertEquals(result.getValue(fam2, qual3).length, 10000);<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>   * Test multi-threaded row mutations.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  @Test<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  public void testRowMutationMultiThreads() throws IOException {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    LOG.info("Starting test testRowMutationMultiThreads");<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    // create 10 threads, each will alternate between adding and<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // removing a column<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    int numThreads = 10;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    int opsPerThread = 250;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // create all threads<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        @Override<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        public void run() {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          boolean op = true;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>            try {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              // throw in some flushes<a name="line.392"></a>
+<span class="sourceLineNo">393</span>              if (i%10==0) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>                synchronized(region) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>                  LOG.debug("flushing");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>                  region.flush(true);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>                  if (i%100==0) {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>                    region.compact(false);<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>              }<a name="line.401"></a>
+<span class="sourceLineNo">402</span>              long ts = timeStamps.incrementAndGet();<a name="line.402"></a>
+<span class="sourceLineNo">403</span>              RowMutations rm = new RowMutations(row);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              if (op) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>                Put p = new Put(row, ts);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>                p.addColumn(fam1, qual1, value1);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>                rm.add(p);<a name="line.408"></a>
+<span class="sourceLineNo">409</span>                Delete d = new Delete(row);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>                d.addColumns(fam1, qual2, ts);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>                rm.add(d);<a name="line.412"></a>
+<span class="sourceLineNo">413</span>              } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>                Delete d = new Delete(row);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>                d.addColumns(fam1, qual1, ts);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>                rm.add(d);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>                Put p = new Put(row, ts);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>                p.addColumn(fam1, qual2, value2);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>                rm.add(p);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>              }<a name="line.422"></a>
+<span class="sourceLineNo">423</span>              region.mutateRow(rm);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>              op ^= true;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>              // check: should always see exactly one column<a name="line.425"></a>
+<span class="sourceLineNo">426</span>              Get g = new Get(row);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>              Result r = region.get(g);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>              if (r.size() != 1) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>                LOG.debug(r);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>                failures.incrementAndGet();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>                fail();<a name="line.431"></a>
+<span class="sourceLineNo">432</span>              }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>            } catch (IOException e) {<a name="line.433"></a>
+<span class="sourceLineNo">434</span>              e.printStackTrace();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>              failures.incrementAndGet();<a name="line.435"></a>
+<span class="sourceLineNo">436</span>              fail();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>            }<a name="line.437"></a>
+<span class="sourceLineNo">438</span>          }<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      };<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // run all threads<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      all[i].start();<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>    // wait for all threads to finish<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      try {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        all[i].join();<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } catch (InterruptedException e) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      }<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    assertEquals(0, failures.get());<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><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  /**<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * Test multi-threaded region mutations.<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  @Test<a name="line.462"></a>
+<span class="sourceLineNo">463</span>  public void testMultiRowMutationMultiThreads() throws IOException {<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>    LOG.info("Starting test testMultiRowMutationMultiThreads");<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    initHRegion(tableName, name.getMethodName(), fam1);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>    // create 10 threads, each will alternate between adding and<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    // removing a column<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    int numThreads = 10;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    int opsPerThread = 250;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    AtomicOperation[] all = new AtomicOperation[numThreads];<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>    AtomicLong timeStamps = new AtomicLong(0);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    AtomicInteger failures = new AtomicInteger(0);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    final List&lt;byte[]&gt; rowsToLock = Arrays.asList(row, row2);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    // create all threads<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      all[i] = new AtomicOperation(region, opsPerThread, timeStamps, failures) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        @Override<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        public void run() {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          boolean op = true;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          for (int i=0; i&lt;numOps; i++) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>            try {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>              // throw in some flushes<a name="line.485"></a>
+<span class="sourceLineNo">486</span>              if (i%10==0) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>                synchronized(region) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>                  LOG.debug("flushing");<a name="line.488"></a>
+<span class="sourceLineNo">489</span>                  region.flush(true);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>                  if (i%100==0) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>                    region.compact(false);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>                  }<a name="line.492"></a>
+<span class="sourceLineNo">493</span>                }<a name="line.493"></a>
+<span class="sourceLineNo">494</span>              }<a name="line.494"></a>
+<span class="sourceLineNo">495</span>              long ts = timeStamps.incrementAndGet();<a name="line.495"></a>
+<span class="sourceLineNo">496</span>              List&lt;Mutation&gt; mrm = new ArrayList&lt;Mutation&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>              if (op) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>                Put p = new Put(row2, ts);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>                p.addColumn(fam1, qual1, value1);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>                mrm.add(p);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>                Delete d = new Delete(row);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>                d.addColumns(fam1, qual1, ts);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>                mrm.add(d);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>              } else {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>                Delete d = new Delete(row2);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>                d.addColumns(fam1, qual1, ts);<a name="line.508"></a>
+<span class="sourceLineNo">509</span>                d.setDurability(Durability.ASYNC_WAL);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>                mrm.add(d);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>                Put p = new Put(row, ts);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>                p.setDurability(Durability.ASYNC_WAL);<a name="line.512"></a>
+<span class="sourceLineNo">513</span>                p.addColumn(fam1, qual1, value2);<a name="line.513"></a>
+<span class="sourceLineNo">514</span>                mrm.add(p);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>              }<a name="line.515"></a>
+<span class="sourceLineNo">516</span>              region.mutateRowsWithLocks(mrm, rowsToLock, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>              op ^= true;<a name="line.517"></a>
+<span class="sourceLineNo">518</span>              // check: should always see exactly one column<a name="line.518"></a>
+<span class="sourceLineNo">519</span>              Scan s = new Scan(row);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>              RegionScanner rs = region.getScanner(s);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>              List&lt;Cell&gt; r = new ArrayList&lt;Cell&gt;();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>              while (rs.next(r))<a name="line.522"></a>
+<span class="sourceLineNo">523</span>                ;<a name="line.523"></a>
+<span class="sourceLineNo">524</span>              rs.close();<a name="line.524"></a>
+<span class="sourceLineNo">525</span>              if (r.size() != 1) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>                LOG.debug(r);<a name="line.526"></a>
+<span class="sourceLineNo">527</span>                failures.incrementAndGet();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>                fail();<a name="line.528"></a>
+<span class="sourceLineNo">529</span>              }<a name="line.529"></a>
+<span class="sourceLineNo">530</span>            } catch (IOException e) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>              e.printStackTrace();<a name="line.531"></a>
+<span class="sourceLineNo">532</span>              failures.incrementAndGet();<a name="line.532"></a>
+<span class="sourceLineNo">533</span>              fail();<a name="line.533"></a>
+<span class="sourceLineNo">534</span>            }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>          }<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        }<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      };<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
+<span class="sourceLineNo">539</span><a name="line.539"></a>
+<span class="sourceLineNo">540</span>    // run all threads<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      all[i].start();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>    // wait for all threads to finish<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    for (int i = 0; i &lt; numThreads; i++) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      try {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>        all[i].join();<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      } catch (InterruptedException e) {<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      }<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    assertEquals(0, failures.get());<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  }<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  public static class AtomicOperation extends Thread {<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    protected final Region region;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    protected final int numOps;<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    protected final AtomicLong timeStamps;<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    protected final AtomicInteger failures;<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    protected final Random r = new Random();<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>    public AtomicOperation(Region region, int numOps, AtomicLong timeStamps,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>        AtomicInteger failures) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      this.region = region;<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      this.numOps = numOps;<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.timeStamps = timeStamps;<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      this.failures = failures;<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>  <a name="line.570"></a>
+<span class="sourceLineNo">571</span>  private static CountDownLatch latch = new CountDownLatch(1);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  private enum TestStep {<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    INIT,                  // initial put of 10 to set value of the cell<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    PUT_STARTED,           // began doing a put of 50 to cell<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    PUT_COMPLETED,         // put complete (released RowLock, but may not have advanced MVCC).<a name="line.575"></a>
+<span clas

<TRUNCATED>

[17/51] [partial] hbase-site git commit: Published site at 2f5767376f42c0416e025df412e3d5944a1b2a67.

Posted by mi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/6a13df3e/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html
index 232ae6b..c69be43 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html
@@ -30,461 +30,460 @@
 <span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import static org.junit.Assert.assertNull;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import static org.junit.Assert.assertTrue;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.junit.Assert.assertFalse;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.junit.Assert.fail;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.ArrayList;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.Arrays;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.List;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.Random;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.commons.logging.Log;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.commons.logging.LogFactory;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.TableName;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.protobuf.generated.AdminProtos;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.junit.After;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.junit.AfterClass;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.junit.Before;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.junit.BeforeClass;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.junit.Test;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.junit.experimental.categories.Category;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>@Category({LargeTests.class, ClientTests.class})<a name="line.53"></a>
-<span class="sourceLineNo">054</span>public class TestFromClientSide3 {<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  private static final Log LOG = LogFactory.getLog(TestFromClientSide3.class);<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private final static HBaseTestingUtility TEST_UTIL<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    = new HBaseTestingUtility();<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private static byte[] FAMILY = Bytes.toBytes("testFamily");<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static Random random = new Random();<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private static int SLAVES = 3;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static byte [] ROW = Bytes.toBytes("testRow");<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final byte[] ANOTHERROW = Bytes.toBytes("anotherrow");<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static byte [] QUALIFIER = Bytes.toBytes("testQualifier");<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static byte [] VALUE = Bytes.toBytes("testValue");<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private final static byte[] COL_QUAL = Bytes.toBytes("f1");<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private final static byte[] VAL_BYTES = Bytes.toBytes("v1");<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final static byte[] ROW_BYTES = Bytes.toBytes("r1");<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  /**<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   * @throws java.lang.Exception<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   */<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  @BeforeClass<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  public static void setUpBeforeClass() throws Exception {<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    TEST_UTIL.getConfiguration().setBoolean(<a name="line.74"></a>
-<span class="sourceLineNo">075</span>        "hbase.online.schema.update.enable", true);<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    TEST_UTIL.startMiniCluster(SLAVES);<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>  /**<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   * @throws java.lang.Exception<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   */<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  @AfterClass<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  public static void tearDownAfterClass() throws Exception {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  }<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  /**<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   * @throws java.lang.Exception<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  @Before<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public void setUp() throws Exception {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    // Nothing to do.<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>  /**<a name="line.95"></a>
-<span class="sourceLineNo">096</span>   * @throws java.lang.Exception<a name="line.96"></a>
-<span class="sourceLineNo">097</span>   */<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  @After<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public void tearDown() throws Exception {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    for (HTableDescriptor htd: TEST_UTIL.getHBaseAdmin().listTables()) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      LOG.info("Tear down, remove table=" + htd.getTableName());<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      TEST_UTIL.deleteTable(htd.getTableName());<a name="line.102"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.fail;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.ArrayList;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.Arrays;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.List;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.Random;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.commons.logging.Log;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.commons.logging.LogFactory;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.TableName;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.protobuf.generated.AdminProtos;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.testclassification.LargeTests;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.junit.After;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.junit.AfterClass;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.junit.Before;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.junit.BeforeClass;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.junit.Test;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.junit.experimental.categories.Category;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>@Category({LargeTests.class, ClientTests.class})<a name="line.52"></a>
+<span class="sourceLineNo">053</span>public class TestFromClientSide3 {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static final Log LOG = LogFactory.getLog(TestFromClientSide3.class);<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private final static HBaseTestingUtility TEST_UTIL<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    = new HBaseTestingUtility();<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private static byte[] FAMILY = Bytes.toBytes("testFamily");<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private static Random random = new Random();<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static int SLAVES = 3;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  private static byte [] ROW = Bytes.toBytes("testRow");<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private static final byte[] ANOTHERROW = Bytes.toBytes("anotherrow");<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private static byte [] QUALIFIER = Bytes.toBytes("testQualifier");<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static byte [] VALUE = Bytes.toBytes("testValue");<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private final static byte[] COL_QUAL = Bytes.toBytes("f1");<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private final static byte[] VAL_BYTES = Bytes.toBytes("v1");<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private final static byte[] ROW_BYTES = Bytes.toBytes("r1");<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>  /**<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   * @throws java.lang.Exception<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   */<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  @BeforeClass<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  public static void setUpBeforeClass() throws Exception {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    TEST_UTIL.getConfiguration().setBoolean(<a name="line.73"></a>
+<span class="sourceLineNo">074</span>        "hbase.online.schema.update.enable", true);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    TEST_UTIL.startMiniCluster(SLAVES);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  }<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  /**<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * @throws java.lang.Exception<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  @AfterClass<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  public static void tearDownAfterClass() throws Exception {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    TEST_UTIL.shutdownMiniCluster();<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>  /**<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   * @throws java.lang.Exception<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   */<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  @Before<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  public void setUp() throws Exception {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    // Nothing to do.<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>   * @throws java.lang.Exception<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   */<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  @After<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  public void tearDown() throws Exception {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    for (HTableDescriptor htd: TEST_UTIL.getHBaseAdmin().listTables()) {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      LOG.info("Tear down, remove table=" + htd.getTableName());<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      TEST_UTIL.deleteTable(htd.getTableName());<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
 <span class="sourceLineNo">103</span>  }<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>  private void randomCFPuts(Table table, byte[] row, byte[] family, int nPuts)<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      throws Exception {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    Put put = new Put(row);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    for (int i = 0; i &lt; nPuts; i++) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      byte[] qualifier = Bytes.toBytes(random.nextInt());<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      byte[] value = Bytes.toBytes(random.nextInt());<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      put.addColumn(family, qualifier, value);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    }<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    table.put(put);<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>  private void performMultiplePutAndFlush(HBaseAdmin admin, Table table,<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      byte[] row, byte[] family, int nFlushes, int nPuts)<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  throws Exception {<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>    try (RegionLocator locator = TEST_UTIL.getConnection().getRegionLocator(table.getName())) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      // connection needed for poll-wait<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      HRegionLocation loc = locator.getRegionLocation(row, true);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      AdminProtos.AdminService.BlockingInterface server =<a name="line.124"></a>
-<span class="sourceLineNo">125</span>          admin.getConnection().getAdmin(loc.getServerName());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      byte[] regName = loc.getRegionInfo().getRegionName();<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>      for (int i = 0; i &lt; nFlushes; i++) {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        randomCFPuts(table, row, family, nPuts);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        List&lt;String&gt; sf = ProtobufUtil.getStoreFiles(server, regName, FAMILY);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        int sfCount = sf.size();<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>        admin.flush(table.getName());<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  // override the config settings at the CF level and ensure priority<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  @Test(timeout = 60000)<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  public void testAdvancedConfigOverride() throws Exception {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    /*<a name="line.141"></a>
-<span class="sourceLineNo">142</span>     * Overall idea: (1) create 3 store files and issue a compaction. config's<a name="line.142"></a>
-<span class="sourceLineNo">143</span>     * compaction.min == 3, so should work. (2) Increase the compaction.min<a name="line.143"></a>
-<span class="sourceLineNo">144</span>     * toggle in the HTD to 5 and modify table. If we use the HTD value instead<a name="line.144"></a>
-<span class="sourceLineNo">145</span>     * of the default config value, adding 3 files and issuing a compaction<a name="line.145"></a>
-<span class="sourceLineNo">146</span>     * SHOULD NOT work (3) Decrease the compaction.min toggle in the HCD to 2<a name="line.146"></a>
-<span class="sourceLineNo">147</span>     * and modify table. The CF schema should override the Table schema and now<a name="line.147"></a>
-<span class="sourceLineNo">148</span>     * cause a minor compaction.<a name="line.148"></a>
-<span class="sourceLineNo">149</span>     */<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    TEST_UTIL.getConfiguration().setInt("hbase.hstore.compaction.min", 3);<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>    TableName tableName = TableName.valueOf("testAdvancedConfigOverride");<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    Table hTable = TEST_UTIL.createTable(tableName, FAMILY, 10);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    Admin admin = TEST_UTIL.getHBaseAdmin();<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    ClusterConnection connection = (ClusterConnection) TEST_UTIL.getConnection();<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>    // Create 3 store files.<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    byte[] row = Bytes.toBytes(random.nextInt());<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    performMultiplePutAndFlush((HBaseAdmin) admin, hTable, row, FAMILY, 3, 100);<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>    try (RegionLocator locator = TEST_UTIL.getConnection().getRegionLocator(tableName)) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      // Verify we have multiple store files.<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      HRegionLocation loc = locator.getRegionLocation(row, true);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      byte[] regionName = loc.getRegionInfo().getRegionName();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>      AdminProtos.AdminService.BlockingInterface server = connection.getAdmin(loc.getServerName());<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      assertTrue(ProtobufUtil.getStoreFiles(server, regionName, FAMILY).size() &gt; 1);<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>      // Issue a compaction request<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      admin.compact(tableName);<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>      // poll wait for the compactions to happen<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      for (int i = 0; i &lt; 10 * 1000 / 40; ++i) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>        // The number of store files after compaction should be lesser.<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        loc = locator.getRegionLocation(row, true);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        if (!loc.getRegionInfo().isOffline()) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>          regionName = loc.getRegionInfo().getRegionName();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          server = connection.getAdmin(loc.getServerName());<a name="line.177"></a>
-<span class="sourceLineNo">178</span>          if (ProtobufUtil.getStoreFiles(server, regionName, FAMILY).size() &lt;= 1) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>            break;<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>        Thread.sleep(40);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      // verify the compactions took place and that we didn't just time out<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      assertTrue(ProtobufUtil.getStoreFiles(server, regionName, FAMILY).size() &lt;= 1);<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>      // change the compaction.min config option for this table to 5<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      LOG.info("hbase.hstore.compaction.min should now be 5");<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      HTableDescriptor htd = new HTableDescriptor(hTable.getTableDescriptor());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      htd.setValue("hbase.hstore.compaction.min", String.valueOf(5));<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      admin.modifyTable(tableName, htd);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      Pair&lt;Integer, Integer&gt; st;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      while (null != (st = admin.getAlterStatus(tableName)) &amp;&amp; st.getFirst() &gt; 0) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        LOG.debug(st.getFirst() + " regions left to update");<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        Thread.sleep(40);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      LOG.info("alter status finished");<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>      // Create 3 more store files.<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      performMultiplePutAndFlush((HBaseAdmin) admin, hTable, row, FAMILY, 3, 10);<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>      // Issue a compaction request<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      admin.compact(tableName);<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>      // This time, the compaction request should not happen<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      Thread.sleep(10 * 1000);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      loc = locator.getRegionLocation(row, true);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      regionName = loc.getRegionInfo().getRegionName();<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      server = connection.getAdmin(loc.getServerName());<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      int sfCount = ProtobufUtil.getStoreFiles(server, regionName, FAMILY).size();<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      assertTrue(sfCount &gt; 1);<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>      // change an individual CF's config option to 2 &amp; online schema update<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      LOG.info("hbase.hstore.compaction.min should now be 2");<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      HColumnDescriptor hcd = new HColumnDescriptor(htd.getFamily(FAMILY));<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      hcd.setValue("hbase.hstore.compaction.min", String.valueOf(2));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      htd.modifyFamily(hcd);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      admin.modifyTable(tableName, htd);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      while (null != (st = admin.getAlterStatus(tableName)) &amp;&amp; st.getFirst() &gt; 0) {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        LOG.debug(st.getFirst() + " regions left to update");<a name="line.220"></a>
-<span class="sourceLineNo">221</span>        Thread.sleep(40);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      }<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      LOG.info("alter status finished");<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>      // Issue a compaction request<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      admin.compact(tableName);<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // poll wait for the compactions to happen<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      for (int i = 0; i &lt; 10 * 1000 / 40; ++i) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        loc = locator.getRegionLocation(row, true);<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        regionName = loc.getRegionInfo().getRegionName();<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        try {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          server = connection.getAdmin(loc.getServerName());<a name="line.233"></a>
-<span class="sourceLineNo">234</span>          if (ProtobufUtil.getStoreFiles(server, regionName, FAMILY).size() &lt; sfCount) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>            break;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>          }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        } catch (Exception e) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          LOG.debug("Waiting for region to come online: " + regionName);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        }<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        Thread.sleep(40);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      }<a name="line.241"></a>
-<span class="sourceLineNo">242</span><a name="line.242"></a>
-<span class="sourceLineNo">243</span>      // verify the compaction took place and that we didn't just time out<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      assertTrue(ProtobufUtil.getStoreFiles(<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        server, regionName, FAMILY).size() &lt; sfCount);<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>      // Finally, ensure that we can remove a custom config value after we made it<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      LOG.info("Removing CF config value");<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      LOG.info("hbase.hstore.compaction.min should now be 5");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      hcd = new HColumnDescriptor(htd.getFamily(FAMILY));<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      hcd.setValue("hbase.hstore.compaction.min", null);<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      htd.modifyFamily(hcd);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      admin.modifyTable(tableName, htd);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      while (null != (st = admin.getAlterStatus(tableName)) &amp;&amp; st.getFirst() &gt; 0) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        LOG.debug(st.getFirst() + " regions left to update");<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        Thread.sleep(40);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      LOG.info("alter status finished");<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      assertNull(hTable.getTableDescriptor().getFamily(FAMILY).getValue(<a name="line.259"></a>
-<span class="sourceLineNo">260</span>          "hbase.hstore.compaction.min"));<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><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  @Test<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public void testHTableBatchWithEmptyPut ()throws Exception {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      Table table = TEST_UTIL.createTable(TableName.valueOf("testHTableBatchWithEmptyPut"),<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          new byte[][] { FAMILY });<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    try {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      List actions = (List) new ArrayList();<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      Object[] results = new Object[2];<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      // create an empty Put<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      Put put1 = new Put(ROW);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      actions.add(put1);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      <a name="line.274"></a>
-<span class="sourceLineNo">275</span>      Put put2 = new Put(ANOTHERROW);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      put2.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      actions.add(put2);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      <a name="line.278"></a>
-<span class="sourceLineNo">279</span>      table.batch(actions, results);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      fail("Empty Put should have failed the batch call");<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    } catch (IllegalArgumentException iae) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      <a name="line.282"></a>
-<span class="sourceLineNo">283</span>    } finally {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      table.close();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  <a name="line.287"></a>
-<span class="sourceLineNo">288</span>  @Test<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public void testHTableExistsMethodSingleRegionSingleGet() throws Exception {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      // Test with a single region table.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      Table table = TEST_UTIL.createTable(<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          TableName.valueOf("testHTableExistsMethodSingleRegionSingleGet"),<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          new byte[][] { FAMILY });<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    Put put = new Put(ROW);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    Get get = new Get(ROW);<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>    boolean exist = table.exists(get);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    assertEquals(exist, false);<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>    table.put(put);<a name="line.303"></a>
-<span class="sourceLineNo">304</span><a name="line.304"></a>
-<span class="sourceLineNo">305</span>    exist = table.exists(get);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    assertEquals(exist, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  public void testHTableExistsMethodSingleRegionMultipleGets() throws Exception {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    Table table = TEST_UTIL.createTable(TableName.valueOf(<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        "testHTableExistsMethodSingleRegionMultipleGets"), new byte[][] { FAMILY });<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>    Put put = new Put(ROW);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    table.put(put);<a name="line.315"></a>
-<span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>    List&lt;Get&gt; gets = new ArrayList&lt;Get&gt;();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    gets.add(new Get(ROW));<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    gets.add(null);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    gets.add(new Get(ANOTHERROW));<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    boolean[] results = table.existsAll(gets);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    assertEquals(results[0], true);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    assertEquals(results[1], false);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    assertEquals(results[2], false);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  }<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  @Test<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public void testHTableExistsBeforeGet() throws Exception {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    Table table = TEST_UTIL.createTable(TableName.valueOf("testHTableExistsBeforeGet"),<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        new byte[][] { FAMILY });<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    try {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      Put put = new Put(ROW);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      table.put(put);<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>      Get get = new Get(ROW);<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>      boolean exist = table.exists(get);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      assertEquals(true, exist);<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span>      Result result = table.get(get);<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      assertEquals(false, result.isEmpty());<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      assertTrue(Bytes.equals(VALUE, result.getValue(FAMILY, QUALIFIER)));<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    } finally {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      table.close();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  @Test<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  public void testHTableExistsAllBeforeGet() throws Exception {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    final byte[] ROW2 = Bytes.add(ROW, Bytes.toBytes("2"));<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    Table table = TEST_UTIL.createTable(<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        TableName.valueOf("testHTableExistsAllBeforeGet"), new byte[][] { FAMILY });<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    try {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      Put put = new Put(ROW);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      table.put(put);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      put = new Put(ROW2);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      table.put(put);<a name="line.361"></a>
-<span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>      Get get = new Get(ROW);<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      Get get2 = new Get(ROW2);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      ArrayList&lt;Get&gt; getList = new ArrayList(2);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      getList.add(get);<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      getList.add(get2);<a name="line.367"></a>
-<span class="sourceLineNo">368</span><a name="line.368"></a>
-<span class="sourceLineNo">369</span>      boolean[] exists = table.existsAll(getList);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      assertEquals(true, exists[0]);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      assertEquals(true, exists[1]);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      Result[] result = table.get(getList);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      assertEquals(false, result[0].isEmpty());<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      assertTrue(Bytes.equals(VALUE, result[0].getValue(FAMILY, QUALIFIER)));<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      assertEquals(false, result[1].isEmpty());<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      assertTrue(Bytes.equals(VALUE, result[1].getValue(FAMILY, QUALIFIER)));<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    } finally {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      table.close();<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><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  @Test<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  public void testHTableExistsMethodMultipleRegionsSingleGet() throws Exception {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    Table table = TEST_UTIL.createTable(<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      TableName.valueOf("testHTableExistsMethodMultipleRegionsSingleGet"), new byte[][] { FAMILY },<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      1, new byte[] { 0x00 }, new byte[] { (byte) 0xff }, 255);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    Put put = new Put(ROW);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    Get get = new Get(ROW);<a name="line.391"></a>
-<span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>    boolean exist = table.exists(get);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    assertEquals(exist, false);<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>    table.put(put);<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>    exist = table.exists(get);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    assertEquals(exist, true);<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>  @Test<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  public void testHTableExistsMethodMultipleRegionsMultipleGets() throws Exception {<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    Table table = TEST_UTIL.createTable(<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      TableName.valueOf("testHTableExistsMethodMultipleRegionsMultipleGets"), <a name="line.405"></a>
-<span class="sourceLineNo">406</span>      new byte[][] { FAMILY }, 1, new byte[] { 0x00 }, new byte[] { (byte) 0xff }, 255);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    Put put = new Put(ROW);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    table.put (put);<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>    List&lt;Get&gt; gets = new ArrayList&lt;Get&gt;();<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    gets.add(new Get(ANOTHERROW));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    gets.add(new Get(Bytes.add(ROW, new byte[] { 0x00 })));<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    gets.add(new Get(ROW));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    gets.add(new Get(Bytes.add(ANOTHERROW, new byte[] { 0x00 })));<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>    LOG.info("Calling exists");<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    boolean[] results = table.existsAll(gets);<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    assertEquals(results[0], false);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    assertEquals(results[1], false);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    assertEquals(results[2], true);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    assertEquals(results[3], false);<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>    // Test with the first region.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    put = new Put(new byte[] { 0x00 });<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    table.put(put);<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>    gets = new ArrayList&lt;Get&gt;();<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    gets.add(new Get(new byte[] { 0x00 }));<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    gets.add(new Get(new byte[] { 0x00, 0x00 }));<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    results = table.existsAll(gets);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    assertEquals(results[0], true);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    assertEquals(results[1], false);<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>    // Test with the last region<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    put = new Put(new byte[] { (byte) 0xff, (byte) 0xff });<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    table.put(put);<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>    gets = new ArrayList&lt;Get&gt;();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    gets.add(new Get(new byte[] { (byte) 0xff }));<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    gets.add(new Get(new byte[] { (byte) 0xff, (byte) 0xff }));<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    gets.add(new Get(new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff }));<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    results = table.existsAll(gets);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    assertEquals(results[0], false);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    assertEquals(results[1], true);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    assertEquals(results[2], false);<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>  @Test<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public void testGetEmptyRow() throws Exception {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    //Create a table and put in 1 row<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    Admin admin = TEST_UTIL.getHBaseAdmin();<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(Bytes.toBytes("test")));<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    desc.addFamily(new HColumnDescriptor(FAMILY));<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    admin.createTable(desc);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    Table table = TEST_UTIL.getConnection().getTable(desc.getTableName());<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>    Put put = new Put(ROW_BYTES);<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    put.addColumn(FAMILY, COL_QUAL, VAL_BYTES);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    table.put(put);<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    //Try getting the row with an empty row key<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    Result res = null;<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    try {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>      res = table.get(new Get(new byte[0]));<a name="line.467"></a>
-<span class="sourceLineNo">468</span>      fail();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    } catch (IllegalArgumentException e) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      // Expected.<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    assertTrue(res == null);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    res = table.get(new Get(Bytes.toBytes("r1-not-exist")));<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    assertTrue(res.isEmpty() == true);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    res = table.get(new Get(ROW_BYTES));<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    assertTrue(Arrays.equals(res.getValue(FAMILY, COL_QUAL), VAL_BYTES));<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    table.close();<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  }<a name="line.478"></a>
-<span class="sourceLineNo">479</span>}<a name="line.479"></a>
+<span class="sourceLineNo">104</span><a name="line.104"></a>
+<span class="sourceLineNo">105</span>  private void randomCFPuts(Table table, byte[] row, byte[] family, int nPuts)<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      throws Exception {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    Put put = new Put(row);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    for (int i = 0; i &lt; nPuts; i++) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      byte[] qualifier = Bytes.toBytes(random.nextInt());<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      byte[] value = Bytes.toBytes(random.nextInt());<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      put.addColumn(family, qualifier, value);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    table.put(put);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  }<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>  private void performMultiplePutAndFlush(HBaseAdmin admin, Table table,<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      byte[] row, byte[] family, int nFlushes, int nPuts)<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  throws Exception {<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>    try (RegionLocator locator = TEST_UTIL.getConnection().getRegionLocator(table.getName())) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      // connection needed for poll-wait<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      HRegionLocation loc = locator.getRegionLocation(row, true);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      AdminProtos.AdminService.BlockingInterface server =<a name="line.123"></a>
+<span class="sourceLineNo">124</span>          admin.getConnection().getAdmin(loc.getServerName());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      byte[] regName = loc.getRegionInfo().getRegionName();<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>      for (int i = 0; i &lt; nFlushes; i++) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        randomCFPuts(table, row, family, nPuts);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>        List&lt;String&gt; sf = ProtobufUtil.getStoreFiles(server, regName, FAMILY);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        int sfCount = sf.size();<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>        admin.flush(table.getName());<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>  // override the config settings at the CF level and ensure priority<a name="line.137"></a>
+<span class="sourceLineNo">138</span>  @Test(timeout = 60000)<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  public void testAdvancedConfigOverride() throws Exception {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    /*<a name="line.140"></a>
+<span class="sourceLineNo">141</span>     * Overall idea: (1) create 3 store files and issue a compaction. config's<a name="line.141"></a>
+<span class="sourceLineNo">142</span>     * compaction.min == 3, so should work. (2) Increase the compaction.min<a name="line.142"></a>
+<span class="sourceLineNo">143</span>     * toggle in the HTD to 5 and modify table. If we use the HTD value instead<a name="line.143"></a>
+<span class="sourceLineNo">144</span>     * of the default config value, adding 3 files and issuing a compaction<a name="line.144"></a>
+<span class="sourceLineNo">145</span>     * SHOULD NOT work (3) Decrease the compaction.min toggle in the HCD to 2<a name="line.145"></a>
+<span class="sourceLineNo">146</span>     * and modify table. The CF schema should override the Table schema and now<a name="line.146"></a>
+<span class="sourceLineNo">147</span>     * cause a minor compaction.<a name="line.147"></a>
+<span class="sourceLineNo">148</span>     */<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    TEST_UTIL.getConfiguration().setInt("hbase.hstore.compaction.min", 3);<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>    TableName tableName = TableName.valueOf("testAdvancedConfigOverride");<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    Table hTable = TEST_UTIL.createTable(tableName, FAMILY, 10);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    Admin admin = TEST_UTIL.getHBaseAdmin();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    ClusterConnection connection = (ClusterConnection) TEST_UTIL.getConnection();<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>    // Create 3 store files.<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    byte[] row = Bytes.toBytes(random.nextInt());<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    performMultiplePutAndFlush((HBaseAdmin) admin, hTable, row, FAMILY, 3, 100);<a name="line.158"></a>
+<span class="sourceLineNo">159</span><a name="line.159"></a>
+<span class="sourceLineNo">160</span>    try (RegionLocator locator = TEST_UTIL.getConnection().getRegionLocator(tableName)) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      // Verify we have multiple store files.<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      HRegionLocation loc = locator.getRegionLocation(row, true);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      byte[] regionName = loc.getRegionInfo().getRegionName();<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      AdminProtos.AdminService.BlockingInterface server = connection.getAdmin(loc.getServerName());<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      assertTrue(ProtobufUtil.getStoreFiles(server, regionName, FAMILY).size() &gt; 1);<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>      // Issue a compaction request<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      admin.compact(tableName);<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>      // poll wait for the compactions to happen<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      for (int i = 0; i &lt; 10 * 1000 / 40; ++i) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        // The number of store files after compaction should be lesser.<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        loc = locator.getRegionLocation(row, true);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        if (!loc.getRegionInfo().isOffline()) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>          regionName = loc.getRegionInfo().getRegionName();<a name="line.175"></a>
+<span class="sourceLineNo">176</span>          server = connection.getAdmin(loc.getServerName());<a name="line.176"></a>
+<span class="sourceLineNo">177</span>          if (ProtobufUtil.getStoreFiles(server, regionName, FAMILY).size() &lt;= 1) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>            break;<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>        Thread.sleep(40);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      }<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      // verify the compactions took place and that we didn't just time out<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      assertTrue(ProtobufUtil.getStoreFiles(server, regionName, FAMILY).size() &lt;= 1);<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>      // change the compaction.min config option for this table to 5<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      LOG.info("hbase.hstore.compaction.min should now be 5");<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      HTableDescriptor htd = new HTableDescriptor(hTable.getTableDescriptor());<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      htd.setValue("hbase.hstore.compaction.min", String.valueOf(5));<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      admin.modifyTable(tableName, htd);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      Pair&lt;Integer, Integer&gt; st;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      while (null != (st = admin.getAlterStatus(tableName)) &amp;&amp; st.getFirst() &gt; 0) {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        LOG.debug(st.getFirst() + " regions left to update");<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        Thread.sleep(40);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.info("alter status finished");<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>      // Create 3 more store files.<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      performMultiplePutAndFlush((HBaseAdmin) admin, hTable, row, FAMILY, 3, 10);<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>      // Issue a compaction request<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      admin.compact(tableName);<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>      // This time, the compaction request should not happen<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      Thread.sleep(10 * 1000);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      loc = locator.getRegionLocation(row, true);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      regionName = loc.getRegionInfo().getRegionName();<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      server = connection.getAdmin(loc.getServerName());<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      int sfCount = ProtobufUtil.getStoreFiles(server, regionName, FAMILY).size();<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      assertTrue(sfCount &gt; 1);<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>      // change an individual CF's config option to 2 &amp; online schema update<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      LOG.info("hbase.hstore.compaction.min should now be 2");<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      HColumnDescriptor hcd = new HColumnDescriptor(htd.getFamily(FAMILY));<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      hcd.setValue("hbase.hstore.compaction.min", String.valueOf(2));<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      htd.modifyFamily(hcd);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      admin.modifyTable(tableName, htd);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      while (null != (st = admin.getAlterStatus(tableName)) &amp;&amp; st.getFirst() &gt; 0) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        LOG.debug(st.getFirst() + " regions left to update");<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        Thread.sleep(40);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      LOG.info("alter status finished");<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>      // Issue a compaction request<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      admin.compact(tableName);<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>      // poll wait for the compactions to happen<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      for (int i = 0; i &lt; 10 * 1000 / 40; ++i) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        loc = locator.getRegionLocation(row, true);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        regionName = loc.getRegionInfo().getRegionName();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        try {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>          server = connection.getAdmin(loc.getServerName());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>          if (ProtobufUtil.getStoreFiles(server, regionName, FAMILY).size() &lt; sfCount) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>            break;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        } catch (Exception e) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>          LOG.debug("Waiting for region to come online: " + regionName);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        Thread.sleep(40);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>      // verify the compaction took place and that we didn't just time out<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      assertTrue(ProtobufUtil.getStoreFiles(<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        server, regionName, FAMILY).size() &lt; sfCount);<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>      // Finally, ensure that we can remove a custom config value after we made it<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      LOG.info("Removing CF config value");<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      LOG.info("hbase.hstore.compaction.min should now be 5");<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      hcd = new HColumnDescriptor(htd.getFamily(FAMILY));<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      hcd.setValue("hbase.hstore.compaction.min", null);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      htd.modifyFamily(hcd);<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      admin.modifyTable(tableName, htd);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      while (null != (st = admin.getAlterStatus(tableName)) &amp;&amp; st.getFirst() &gt; 0) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        LOG.debug(st.getFirst() + " regions left to update");<a name="line.254"></a>
+<span class="sourceLineNo">255</span>        Thread.sleep(40);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      }<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      LOG.info("alter status finished");<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      assertNull(hTable.getTableDescriptor().getFamily(FAMILY).getValue(<a name="line.258"></a>
+<span class="sourceLineNo">259</span>          "hbase.hstore.compaction.min"));<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>  @Test<a name="line.263"></a>
+<span class="sourceLineNo">264</span>  public void testHTableBatchWithEmptyPut ()throws Exception {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      Table table = TEST_UTIL.createTable(TableName.valueOf("testHTableBatchWithEmptyPut"),<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          new byte[][] { FAMILY });<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    try {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      List actions = (List) new ArrayList();<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      Object[] results = new Object[2];<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      // create an empty Put<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      Put put1 = new Put(ROW);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      actions.add(put1);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      <a name="line.273"></a>
+<span class="sourceLineNo">274</span>      Put put2 = new Put(ANOTHERROW);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      put2.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      actions.add(put2);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      <a name="line.277"></a>
+<span class="sourceLineNo">278</span>      table.batch(actions, results);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      fail("Empty Put should have failed the batch call");<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    } catch (IllegalArgumentException iae) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      <a name="line.281"></a>
+<span class="sourceLineNo">282</span>    } finally {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      table.close();<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  <a name="line.286"></a>
+<span class="sourceLineNo">287</span>  @Test<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  public void testHTableExistsMethodSingleRegionSingleGet() throws Exception {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      // Test with a single region table.<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      Table table = TEST_UTIL.createTable(<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          TableName.valueOf("testHTableExistsMethodSingleRegionSingleGet"),<a name="line.291"></a>
+<span class="sourceLineNo">292</span>          new byte[][] { FAMILY });<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    Put put = new Put(ROW);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>    Get get = new Get(ROW);<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>    boolean exist = table.exists(get);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    assertEquals(exist, false);<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>    table.put(put);<a name="line.302"></a>
+<span class="sourceLineNo">303</span><a name="line.303"></a>
+<span class="sourceLineNo">304</span>    exist = table.exists(get);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    assertEquals(exist, true);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public void testHTableExistsMethodSingleRegionMultipleGets() throws Exception {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    Table table = TEST_UTIL.createTable(TableName.valueOf(<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        "testHTableExistsMethodSingleRegionMultipleGets"), new byte[][] { FAMILY });<a name="line.310"></a>
+<span class="sourceLineNo">311</span><a name="line.311"></a>
+<span class="sourceLineNo">312</span>    Put put = new Put(ROW);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    table.put(put);<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>    List&lt;Get&gt; gets = new ArrayList&lt;Get&gt;();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    gets.add(new Get(ROW));<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    gets.add(null);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    gets.add(new Get(ANOTHERROW));<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    boolean[] results = table.existsAll(gets);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    assertEquals(results[0], true);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    assertEquals(results[1], false);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    assertEquals(results[2], false);<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>  @Test<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  public void testHTableExistsBeforeGet() throws Exception {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    Table table = TEST_UTIL.createTable(TableName.valueOf("testHTableExistsBeforeGet"),<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        new byte[][] { FAMILY });<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    try {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      Put put = new Put(ROW);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      table.put(put);<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>      Get get = new Get(ROW);<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      boolean exist = table.exists(get);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      assertEquals(true, exist);<a name="line.339"></a>
+<span class="sourceLineNo">340</span><a name="line.340"></a>
+<span class="sourceLineNo">341</span>      Result result = table.get(get);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      assertEquals(false, result.isEmpty());<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      assertTrue(Bytes.equals(VALUE, result.getValue(FAMILY, QUALIFIER)));<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    } finally {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      table.close();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>  @Test<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public void testHTableExistsAllBeforeGet() throws Exception {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    final byte[] ROW2 = Bytes.add(ROW, Bytes.toBytes("2"));<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    Table table = TEST_UTIL.createTable(<a name="line.352"></a>
+<span class="sourceLineNo">353</span>        TableName.valueOf("testHTableExistsAllBeforeGet"), new byte[][] { FAMILY });<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    try {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      Put put = new Put(ROW);<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      table.put(put);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      put = new Put(ROW2);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      table.put(put);<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>      Get get = new Get(ROW);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      Get get2 = new Get(ROW2);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      ArrayList&lt;Get&gt; getList = new ArrayList(2);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      getList.add(get);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      getList.add(get2);<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>      boolean[] exists = table.existsAll(getList);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      assertEquals(true, exists[0]);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      assertEquals(true, exists[1]);<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>      Result[] result = table.get(getList);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      assertEquals(false, result[0].isEmpty());<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      assertTrue(Bytes.equals(VALUE, result[0].getValue(FAMILY, QUALIFIER)));<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      assertEquals(false, result[1].isEmpty());<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      assertTrue(Bytes.equals(VALUE, result[1].getValue(FAMILY, QUALIFIER)));<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    } finally {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      table.close();<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  }<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>  @Test<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  public void testHTableExistsMethodMultipleRegionsSingleGet() throws Exception {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    Table table = TEST_UTIL.createTable(<a name="line.384"></a>
+<span class="sourceLineNo">385</span>      TableName.valueOf("testHTableExistsMethodMultipleRegionsSingleGet"), new byte[][] { FAMILY },<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      1, new byte[] { 0x00 }, new byte[] { (byte) 0xff }, 255);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    Put put = new Put(ROW);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span>    Get get = new Get(ROW);<a name="line.390"></a>
+<span class="sourceLineNo">391</span><a name="line.391"></a>
+<span class="sourceLineNo">392</span>    boolean exist = table.exists(get);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    assertEquals(exist, false);<a name="line.393"></a>
+<span class="sourceLineNo">394</span><a name="line.394"></a>
+<span class="sourceLineNo">395</span>    table.put(put);<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>    exist = table.exists(get);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    assertEquals(exist, true);<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>  @Test<a name="line.401"></a>
+<span class="sourceLineNo">402</span>  public void testHTableExistsMethodMultipleRegionsMultipleGets() throws Exception {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    Table table = TEST_UTIL.createTable(<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      TableName.valueOf("testHTableExistsMethodMultipleRegionsMultipleGets"), <a name="line.404"></a>
+<span class="sourceLineNo">405</span>      new byte[][] { FAMILY }, 1, new byte[] { 0x00 }, new byte[] { (byte) 0xff }, 255);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    Put put = new Put(ROW);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>    put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    table.put (put);<a name="line.408"></a>
+<span class="sourceLineNo">409</span><a name="line.409"></a>
+<span class="sourceLineNo">410</span>    List&lt;Get&gt; gets = new ArrayList&lt;Get&gt;();<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    gets.add(new Get(ANOTHERROW));<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    gets.add(new Get(Bytes.add(ROW, new byte[] { 0x00 })));<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    gets.add(new Get(ROW));<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    gets.add(new Get(Bytes.add(ANOTHERROW, new byte[] { 0x00 })));<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>    LOG.info("Calling exists");<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    boolean[] results = table.existsAll(gets);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    assertEquals(results[0], false);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    assertEquals(results[1], false);<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    assertEquals(results[2], true);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    assertEquals(results[3], false);<a name="line.421"></a>
+<span class="sourceLineNo">422</span><a name="line.422"></a>
+<span class="sourceLineNo">423</span>    // Test with the first region.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    put = new Put(new byte[] { 0x00 });<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    table.put(put);<a name="line.426"></a>
+<span class="sourceLineNo">427</span><a name="line.427"></a>
+<span class="sourceLineNo">428</span>    gets = new ArrayList&lt;Get&gt;();<a name="line.428"></a>
+<span class="sourceLineNo">429</span>    gets.add(new Get(new byte[] { 0x00 }));<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    gets.add(new Get(new byte[] { 0x00, 0x00 }));<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    results = table.existsAll(gets);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    assertEquals(results[0], true);<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    assertEquals(results[1], false);<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    // Test with the last region<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    put = new Put(new byte[] { (byte) 0xff, (byte) 0xff });<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    put.addColumn(FAMILY, QUALIFIER, VALUE);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    table.put(put);<a name="line.438"></a>
+<span class="sourceLineNo">439</span><a name="line.439"></a>
+<span class="sourceLineNo">440</span>    gets = new ArrayList&lt;Get&gt;();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    gets.add(new Get(new byte[] { (byte) 0xff }));<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    gets.add(new Get(new byte[] { (byte) 0xff, (byte) 0xff }));<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    gets.add(new Get(new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff }));<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    results = table.existsAll(gets);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    assertEquals(results[0], false);<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    assertEquals(results[1], true);<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    assertEquals(results[2], false);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>  @Test<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  public void testGetEmptyRow() throws Exception {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    //Create a table and put in 1 row<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    Admin admin = TEST_UTIL.getHBaseAdmin();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    HTableDescriptor desc = new HTableDescriptor(TableName.valueOf(Bytes.toBytes("test")));<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    desc.addFamily(new HColumnDescriptor(FAMILY));<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    admin.createTable(desc);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    Table table = TEST_UTIL.getConnection().getTable(desc.getTableName());<a name="line.457"></a>
+<span class="sourceLineNo">458</span><a name="line.458"></a>
+<span class="sourceLineNo">459</span>    Put put = new Put(ROW_BYTES);<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    put.addColumn(FAMILY, COL_QUAL, VAL_BYTES);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    table.put(put);<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>    //Try getting the row with an empty row key<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    Result res = null;<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    try {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      res = table.get(new Get(new byte[0]));<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      fail();<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    } catch (IllegalArgumentException e) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      // Expected.<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    }<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    assertTrue(res == null);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    res = table.get(new Get(Bytes.toBytes("r1-not-exist")));<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    assertTrue(res.isEmpty() == true);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    res = table.get(new Get(ROW_BYTES));<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    assertTrue(Arrays.equals(res.getValue(FAMILY, COL_QUAL), VAL_BYTES));<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    table.close();<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
+<span class="sourceLineNo">478</span>}<a name="line.478"></a>