You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2018/01/02 15:18:16 UTC

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

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 30a1f6216 -> 25f2bbc0b


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html
index 5391063..04631dc 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html
@@ -40,832 +40,831 @@
 <span class="sourceLineNo">032</span>import static org.junit.Assert.assertEquals;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import static org.junit.Assert.assertTrue;<a name="line.33"></a>
 <span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.junit.Ignore;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.junit.Test;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.junit.experimental.categories.Category;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.junit.runner.RunWith;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.junit.runners.Parameterized;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.slf4j.Logger;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.slf4j.LoggerFactory;<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>import java.io.IOException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import java.util.List;<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> * compacted memstore test case<a name="line.47"></a>
-<span class="sourceLineNo">048</span> */<a name="line.48"></a>
-<span class="sourceLineNo">049</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.49"></a>
-<span class="sourceLineNo">050</span>@RunWith(Parameterized.class)<a name="line.50"></a>
-<span class="sourceLineNo">051</span>public class TestCompactingToCellFlatMapMemStore extends TestCompactingMemStore {<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  @Parameterized.Parameters<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  public static Object[] data() {<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    return new Object[] { "CHUNK_MAP", "ARRAY_MAP" }; // test different immutable indexes<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  }<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private static final Logger LOG =<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      LoggerFactory.getLogger(TestCompactingToCellFlatMapMemStore.class);<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  public final boolean toCellChunkMap;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  Configuration conf;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  // Helpers<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  public TestCompactingToCellFlatMapMemStore(String type){<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    if (type == "CHUNK_MAP") {<a name="line.64"></a>
-<span class="sourceLineNo">065</span>      toCellChunkMap = true;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    } else {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      toCellChunkMap = false;<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><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  @Override public void tearDown() throws Exception {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    chunkCreator.clearChunksInPool();<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>  @Override public void setUp() throws Exception {<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>    compactingSetUp();<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    this.conf = HBaseConfiguration.create();<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>    // set memstore to do data compaction<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    conf.set(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY,<a name="line.81"></a>
-<span class="sourceLineNo">082</span>        String.valueOf(MemoryCompactionPolicy.EAGER));<a name="line.82"></a>
-<span class="sourceLineNo">083</span><a name="line.83"></a>
-<span class="sourceLineNo">084</span>    this.memstore =<a name="line.84"></a>
-<span class="sourceLineNo">085</span>        new MyCompactingMemStore(conf, CellComparatorImpl.COMPARATOR, store,<a name="line.85"></a>
-<span class="sourceLineNo">086</span>            regionServicesForStores, MemoryCompactionPolicy.EAGER);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  // Compaction tests<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  @Override<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  public void testCompaction1Bucket() throws IOException {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    int counter = 0;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    String[] keys1 = { "A", "A", "B", "C" }; //A1, A2, B3, C4<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    if (toCellChunkMap) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      // set memstore to flat into CellChunkMap<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.CHUNK_MAP);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    } else {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.ARRAY_MAP);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>    // test 1 bucket<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    long totalCellsLen = addRowsByKeysDataSize(memstore, keys1);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    long cellBeforeFlushSize = cellBeforeFlushSize();<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    long cellAfterFlushSize  = cellAfterFlushSize();<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    long totalHeapSize = MutableSegment.DEEP_OVERHEAD + 4 * cellBeforeFlushSize;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>    assertEquals(totalCellsLen, regionServicesForStores.getMemStoreSize());<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    assertEquals(totalHeapSize, ((CompactingMemStore)memstore).heapSize());<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>    assertEquals(4, memstore.getActive().getCellsCount());<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    ((CompactingMemStore) memstore).flushInMemory();    // push keys to pipeline and compact<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    // One cell is duplicated and the compaction will remove it. All cells of same size so adjusting<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    // totalCellsLen<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    totalCellsLen = (totalCellsLen * 3) / 4;<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    assertEquals(totalCellsLen, regionServicesForStores.getMemStoreSize());<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>    totalHeapSize =<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        3 * cellAfterFlushSize + MutableSegment.DEEP_OVERHEAD<a name="line.121"></a>
-<span class="sourceLineNo">122</span>            + (toCellChunkMap ?<a name="line.122"></a>
-<span class="sourceLineNo">123</span>            CellChunkImmutableSegment.DEEP_OVERHEAD_CCM :<a name="line.123"></a>
-<span class="sourceLineNo">124</span>            CellArrayImmutableSegment.DEEP_OVERHEAD_CAM);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    assertEquals(totalHeapSize, ((CompactingMemStore)memstore).heapSize());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    for ( Segment s : memstore.getSegments()) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      counter += s.getCellsCount();<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    assertEquals(3, counter);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    MemStoreSize size = memstore.getFlushableSize();<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    MemStoreSnapshot snapshot = memstore.snapshot(); // push keys to snapshot<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    region.decrMemStoreSize(size);  // simulate flusher<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    ImmutableSegment s = memstore.getSnapshot();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    assertEquals(3, s.getCellsCount());<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    assertEquals(0, regionServicesForStores.getMemStoreSize());<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    memstore.clearSnapshot(snapshot.getId());<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>  @Override<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  public void testCompaction2Buckets() throws IOException {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    if (toCellChunkMap) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      // set memstore to flat into CellChunkMap<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.CHUNK_MAP);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.ARRAY_MAP);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    String[] keys1 = { "A", "A", "B", "C" };<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    String[] keys2 = { "A", "B", "D" };<a name="line.149"></a>
-<span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>    long totalCellsLen1 = addRowsByKeysDataSize(memstore, keys1);     // INSERT 4<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    long cellBeforeFlushSize = cellBeforeFlushSize();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    long cellAfterFlushSize = cellAfterFlushSize();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    long totalHeapSize1 = MutableSegment.DEEP_OVERHEAD + 4 * cellBeforeFlushSize;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    assertEquals(totalCellsLen1, regionServicesForStores.getMemStoreSize());<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    assertEquals(totalHeapSize1, ((CompactingMemStore) memstore).heapSize());<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline and compact<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    int counter = 0;                                          // COMPACT 4-&gt;3<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    for ( Segment s : memstore.getSegments()) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      counter += s.getCellsCount();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    assertEquals(3,counter);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    // One cell is duplicated and the compaction will remove it. All cells of same size so adjusting<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // totalCellsLen<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    totalCellsLen1 = (totalCellsLen1 * 3) / 4;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    totalHeapSize1 = 3 * cellAfterFlushSize + MutableSegment.DEEP_OVERHEAD<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        + (toCellChunkMap ?<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        CellChunkImmutableSegment.DEEP_OVERHEAD_CCM :<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        CellArrayImmutableSegment.DEEP_OVERHEAD_CAM);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    assertEquals(totalCellsLen1, regionServicesForStores.getMemStoreSize());<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    assertEquals(totalHeapSize1, ((CompactingMemStore) memstore).heapSize());<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>    long totalCellsLen2 = addRowsByKeysDataSize(memstore, keys2);   // INSERT 3 (3+3=6)<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    long totalHeapSize2 = 3 * cellBeforeFlushSize;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    assertEquals(totalCellsLen1 + totalCellsLen2, regionServicesForStores.getMemStoreSize());<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    assertEquals(totalHeapSize1 + totalHeapSize2, ((CompactingMemStore) memstore).heapSize());<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline and compact<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());// COMPACT 6-&gt;4<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    counter = 0;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    for ( Segment s : memstore.getSegments()) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      counter += s.getCellsCount();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    assertEquals(4,counter);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    totalCellsLen2 = totalCellsLen2 / 3;// 2 cells duplicated in set 2<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    assertEquals(totalCellsLen1 + totalCellsLen2, regionServicesForStores.getMemStoreSize());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    totalHeapSize2 = 1 * cellAfterFlushSize;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    assertEquals(totalHeapSize1 + totalHeapSize2, ((CompactingMemStore) memstore).heapSize());<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    MemStoreSize size = memstore.getFlushableSize();<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    MemStoreSnapshot snapshot = memstore.snapshot(); // push keys to snapshot<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    region.decrMemStoreSize(size);  // simulate flusher<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    ImmutableSegment s = memstore.getSnapshot();<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    assertEquals(4, s.getCellsCount());<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    assertEquals(0, regionServicesForStores.getMemStoreSize());<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>    memstore.clearSnapshot(snapshot.getId());<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  }<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  @Override<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  public void testCompaction3Buckets() throws IOException {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    if (toCellChunkMap) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      // set memstore to flat into CellChunkMap<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.CHUNK_MAP);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    } else {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>      // set to CellArrayMap as CCM is configured by default due to MSLAB usage<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.ARRAY_MAP);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    String[] keys1 = { "A", "A", "B", "C" };<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    String[] keys2 = { "A", "B", "D" };<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    String[] keys3 = { "D", "B", "B" };<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>    long totalCellsLen1 = addRowsByKeysDataSize(memstore, keys1);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    long cellBeforeFlushSize = cellBeforeFlushSize();<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    long cellAfterFlushSize = cellAfterFlushSize();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    long totalHeapSize1 = MutableSegment.DEEP_OVERHEAD + 4 * cellBeforeFlushSize;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    assertEquals(totalCellsLen1, region.getMemStoreSize());<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    assertEquals(totalHeapSize1, ((CompactingMemStore) memstore).heapSize());<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>    MemStoreSize size = memstore.getFlushableSize();<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline and compact<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    // One cell is duplicated and the compaction will remove it. All cells of same size so adjusting<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    // totalCellsLen<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    totalCellsLen1 = (totalCellsLen1 * 3) / 4;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    totalHeapSize1 = 3 * cellAfterFlushSize + MutableSegment.DEEP_OVERHEAD<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        + (toCellChunkMap ?<a name="line.230"></a>
-<span class="sourceLineNo">231</span>        CellChunkImmutableSegment.DEEP_OVERHEAD_CCM :<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        CellArrayImmutableSegment.DEEP_OVERHEAD_CAM);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    assertEquals(totalCellsLen1, regionServicesForStores.getMemStoreSize());<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    assertEquals(totalHeapSize1, ((CompactingMemStore) memstore).heapSize());<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>    long totalCellsLen2 = addRowsByKeysDataSize(memstore, keys2);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    long totalHeapSize2 = 3 * cellBeforeFlushSize;<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    assertEquals(totalCellsLen1 + totalCellsLen2, regionServicesForStores.getMemStoreSize());<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    assertEquals(totalHeapSize1 + totalHeapSize2, ((CompactingMemStore) memstore).heapSize());<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    ((MyCompactingMemStore) memstore).disableCompaction();<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    size = memstore.getFlushableSize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline without compaction<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    totalHeapSize2 = totalHeapSize2 + CSLMImmutableSegment.DEEP_OVERHEAD_CSLM;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    assertEquals(totalCellsLen1 + totalCellsLen2, regionServicesForStores.getMemStoreSize());<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    assertEquals(totalHeapSize1 + totalHeapSize2, ((CompactingMemStore) memstore).heapSize());<a name="line.248"></a>
-<span class="sourceLineNo">249</span><a name="line.249"></a>
-<span class="sourceLineNo">250</span>    long totalCellsLen3 = addRowsByKeysDataSize(memstore, keys3);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    long totalHeapSize3 = 3 * cellBeforeFlushSize;<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    assertEquals(totalCellsLen1 + totalCellsLen2 + totalCellsLen3,<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        regionServicesForStores.getMemStoreSize());<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    assertEquals(totalHeapSize1 + totalHeapSize2 + totalHeapSize3,<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        ((CompactingMemStore) memstore).heapSize());<a name="line.255"></a>
-<span class="sourceLineNo">256</span><a name="line.256"></a>
-<span class="sourceLineNo">257</span>    ((MyCompactingMemStore) memstore).enableCompaction();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    size = memstore.getFlushableSize();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline and compact<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    while (((CompactingMemStore) memstore).isMemStoreFlushingInMemory()) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      Threads.sleep(10);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // active flushed to pipeline and all 3 segments compacted. Will get rid of duplicated cells.<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    // Out of total 10, only 4 cells are unique<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    totalCellsLen2 = totalCellsLen2 / 3;// 2 out of 3 cells are duplicated<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    totalCellsLen3 = 0;// All duplicated cells.<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    assertEquals(totalCellsLen1 + totalCellsLen2 + totalCellsLen3,<a name="line.268"></a>
-<span class="sourceLineNo">269</span>        regionServicesForStores.getMemStoreSize());<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    // Only 4 unique cells left<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    long totalHeapSize4 = 4 * cellAfterFlushSize + MutableSegment.DEEP_OVERHEAD<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        + (toCellChunkMap ?<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        CellChunkImmutableSegment.DEEP_OVERHEAD_CCM :<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        CellArrayImmutableSegment.DEEP_OVERHEAD_CAM);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    assertEquals(totalHeapSize4, ((CompactingMemStore) memstore).heapSize());<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>    size = memstore.getFlushableSize();<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    MemStoreSnapshot snapshot = memstore.snapshot(); // push keys to snapshot<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    region.decrMemStoreSize(size);  // simulate flusher<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    ImmutableSegment s = memstore.getSnapshot();<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    assertEquals(4, s.getCellsCount());<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    assertEquals(0, regionServicesForStores.getMemStoreSize());<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>    memstore.clearSnapshot(snapshot.getId());<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>  //////////////////////////////////////////////////////////////////////////////<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  // Merging tests<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  @Test<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  public void testMerging() throws IOException {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    if (toCellChunkMap) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      // set memstore to flat into CellChunkMap<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.CHUNK_MAP);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    String[] keys1 = { "A", "A", "B", "C", "F", "H"};<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    String[] keys2 = { "A", "B", "D", "G", "I", "J"};<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    String[] keys3 = { "D", "B", "B", "E" };<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    MemoryCompactionPolicy compactionType = MemoryCompactionPolicy.BASIC;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    memstore.getConfiguration().set(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY,<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        String.valueOf(compactionType));<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    ((MyCompactingMemStore)memstore).initiateType(compactionType, memstore.getConfiguration());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    addRowsByKeysDataSize(memstore, keys1);<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline should not compact<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    while (((CompactingMemStore) memstore).isMemStoreFlushingInMemory()) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      Threads.sleep(10);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    addRowsByKeysDataSize(memstore, keys2); // also should only flatten<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    int counter2 = 0;<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    for ( Segment s : memstore.getSegments()) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      counter2 += s.getCellsCount();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    assertEquals(12, counter2);<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>    ((MyCompactingMemStore) memstore).disableCompaction();<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline without flattening<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>    int counter3 = 0;<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    for ( Segment s : memstore.getSegments()) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      counter3 += s.getCellsCount();<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    }<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    assertEquals(12, counter3);<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>    addRowsByKeysDataSize(memstore, keys3);<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    int counter4 = 0;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    for ( Segment s : memstore.getSegments()) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      counter4 += s.getCellsCount();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    assertEquals(16, counter4);<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>    ((MyCompactingMemStore) memstore).enableCompaction();<a name="line.341"></a>
+<span class="sourceLineNo">035</span>import org.junit.Test;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.junit.experimental.categories.Category;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.junit.runner.RunWith;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.runners.Parameterized;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.slf4j.Logger;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.slf4j.LoggerFactory;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>import java.io.IOException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import java.util.List;<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> * compacted memstore test case<a name="line.46"></a>
+<span class="sourceLineNo">047</span> */<a name="line.47"></a>
+<span class="sourceLineNo">048</span>@Category({RegionServerTests.class, MediumTests.class})<a name="line.48"></a>
+<span class="sourceLineNo">049</span>@RunWith(Parameterized.class)<a name="line.49"></a>
+<span class="sourceLineNo">050</span>public class TestCompactingToCellFlatMapMemStore extends TestCompactingMemStore {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  @Parameterized.Parameters<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public static Object[] data() {<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    return new Object[] { "CHUNK_MAP", "ARRAY_MAP" }; // test different immutable indexes<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  }<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private static final Logger LOG =<a name="line.55"></a>
+<span class="sourceLineNo">056</span>      LoggerFactory.getLogger(TestCompactingToCellFlatMapMemStore.class);<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public final boolean toCellChunkMap;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  Configuration conf;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  // Helpers<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  public TestCompactingToCellFlatMapMemStore(String type){<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    if (type == "CHUNK_MAP") {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>      toCellChunkMap = true;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    } else {<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      toCellChunkMap = false;<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><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  @Override public void tearDown() throws Exception {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    chunkCreator.clearChunksInPool();<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>  @Override public void setUp() throws Exception {<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>    compactingSetUp();<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    this.conf = HBaseConfiguration.create();<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>    // set memstore to do data compaction<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    conf.set(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY,<a name="line.80"></a>
+<span class="sourceLineNo">081</span>        String.valueOf(MemoryCompactionPolicy.EAGER));<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    conf.setDouble(CompactingMemStore.IN_MEMORY_FLUSH_THRESHOLD_FACTOR_KEY, 0.02);<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    this.memstore =<a name="line.83"></a>
+<span class="sourceLineNo">084</span>        new MyCompactingMemStore(conf, CellComparatorImpl.COMPARATOR, store,<a name="line.84"></a>
+<span class="sourceLineNo">085</span>            regionServicesForStores, MemoryCompactionPolicy.EAGER);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  // Compaction tests<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  @Override<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  public void testCompaction1Bucket() throws IOException {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    int counter = 0;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    String[] keys1 = { "A", "A", "B", "C" }; //A1, A2, B3, C4<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    if (toCellChunkMap) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      // set memstore to flat into CellChunkMap<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.CHUNK_MAP);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    } else {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.ARRAY_MAP);<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>    // test 1 bucket<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    long totalCellsLen = addRowsByKeysDataSize(memstore, keys1);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    long cellBeforeFlushSize = cellBeforeFlushSize();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    long cellAfterFlushSize  = cellAfterFlushSize();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    long totalHeapSize = MutableSegment.DEEP_OVERHEAD + 4 * cellBeforeFlushSize;<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>    assertEquals(totalCellsLen, regionServicesForStores.getMemStoreSize());<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    assertEquals(totalHeapSize, ((CompactingMemStore)memstore).heapSize());<a name="line.109"></a>
+<span class="sourceLineNo">110</span><a name="line.110"></a>
+<span class="sourceLineNo">111</span>    assertEquals(4, memstore.getActive().getCellsCount());<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    ((CompactingMemStore) memstore).flushInMemory();    // push keys to pipeline and compact<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    // One cell is duplicated and the compaction will remove it. All cells of same size so adjusting<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    // totalCellsLen<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    totalCellsLen = (totalCellsLen * 3) / 4;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    assertEquals(totalCellsLen, regionServicesForStores.getMemStoreSize());<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>    totalHeapSize =<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        3 * cellAfterFlushSize + MutableSegment.DEEP_OVERHEAD<a name="line.120"></a>
+<span class="sourceLineNo">121</span>            + (toCellChunkMap ?<a name="line.121"></a>
+<span class="sourceLineNo">122</span>            CellChunkImmutableSegment.DEEP_OVERHEAD_CCM :<a name="line.122"></a>
+<span class="sourceLineNo">123</span>            CellArrayImmutableSegment.DEEP_OVERHEAD_CAM);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    assertEquals(totalHeapSize, ((CompactingMemStore)memstore).heapSize());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    for ( Segment s : memstore.getSegments()) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      counter += s.getCellsCount();<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    assertEquals(3, counter);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    MemStoreSize size = memstore.getFlushableSize();<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    MemStoreSnapshot snapshot = memstore.snapshot(); // push keys to snapshot<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    region.decrMemStoreSize(size);  // simulate flusher<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    ImmutableSegment s = memstore.getSnapshot();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    assertEquals(3, s.getCellsCount());<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    assertEquals(0, regionServicesForStores.getMemStoreSize());<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    memstore.clearSnapshot(snapshot.getId());<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  @Override<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  public void testCompaction2Buckets() throws IOException {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    if (toCellChunkMap) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      // set memstore to flat into CellChunkMap<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.CHUNK_MAP);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    } else {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.ARRAY_MAP);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    String[] keys1 = { "A", "A", "B", "C" };<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    String[] keys2 = { "A", "B", "D" };<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>    long totalCellsLen1 = addRowsByKeysDataSize(memstore, keys1);     // INSERT 4<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    long cellBeforeFlushSize = cellBeforeFlushSize();<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    long cellAfterFlushSize = cellAfterFlushSize();<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    long totalHeapSize1 = MutableSegment.DEEP_OVERHEAD + 4 * cellBeforeFlushSize;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    assertEquals(totalCellsLen1, regionServicesForStores.getMemStoreSize());<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    assertEquals(totalHeapSize1, ((CompactingMemStore) memstore).heapSize());<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline and compact<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    int counter = 0;                                          // COMPACT 4-&gt;3<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    for ( Segment s : memstore.getSegments()) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      counter += s.getCellsCount();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    assertEquals(3,counter);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // One cell is duplicated and the compaction will remove it. All cells of same size so adjusting<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    // totalCellsLen<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    totalCellsLen1 = (totalCellsLen1 * 3) / 4;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    totalHeapSize1 = 3 * cellAfterFlushSize + MutableSegment.DEEP_OVERHEAD<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        + (toCellChunkMap ?<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        CellChunkImmutableSegment.DEEP_OVERHEAD_CCM :<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        CellArrayImmutableSegment.DEEP_OVERHEAD_CAM);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    assertEquals(totalCellsLen1, regionServicesForStores.getMemStoreSize());<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    assertEquals(totalHeapSize1, ((CompactingMemStore) memstore).heapSize());<a name="line.172"></a>
+<span class="sourceLineNo">173</span><a name="line.173"></a>
+<span class="sourceLineNo">174</span>    long totalCellsLen2 = addRowsByKeysDataSize(memstore, keys2);   // INSERT 3 (3+3=6)<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    long totalHeapSize2 = 3 * cellBeforeFlushSize;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    assertEquals(totalCellsLen1 + totalCellsLen2, regionServicesForStores.getMemStoreSize());<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    assertEquals(totalHeapSize1 + totalHeapSize2, ((CompactingMemStore) memstore).heapSize());<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline and compact<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());// COMPACT 6-&gt;4<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    counter = 0;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    for ( Segment s : memstore.getSegments()) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      counter += s.getCellsCount();<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    assertEquals(4,counter);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    totalCellsLen2 = totalCellsLen2 / 3;// 2 cells duplicated in set 2<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    assertEquals(totalCellsLen1 + totalCellsLen2, regionServicesForStores.getMemStoreSize());<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    totalHeapSize2 = 1 * cellAfterFlushSize;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    assertEquals(totalHeapSize1 + totalHeapSize2, ((CompactingMemStore) memstore).heapSize());<a name="line.189"></a>
+<span class="sourceLineNo">190</span><a name="line.190"></a>
+<span class="sourceLineNo">191</span>    MemStoreSize size = memstore.getFlushableSize();<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    MemStoreSnapshot snapshot = memstore.snapshot(); // push keys to snapshot<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    region.decrMemStoreSize(size);  // simulate flusher<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    ImmutableSegment s = memstore.getSnapshot();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    assertEquals(4, s.getCellsCount());<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    assertEquals(0, regionServicesForStores.getMemStoreSize());<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    memstore.clearSnapshot(snapshot.getId());<a name="line.198"></a>
+<span class="sourceLineNo">199</span>  }<a name="line.199"></a>
+<span class="sourceLineNo">200</span><a name="line.200"></a>
+<span class="sourceLineNo">201</span>  @Override<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  public void testCompaction3Buckets() throws IOException {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    if (toCellChunkMap) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      // set memstore to flat into CellChunkMap<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.CHUNK_MAP);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    } else {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      // set to CellArrayMap as CCM is configured by default due to MSLAB usage<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.ARRAY_MAP);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    String[] keys1 = { "A", "A", "B", "C" };<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    String[] keys2 = { "A", "B", "D" };<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    String[] keys3 = { "D", "B", "B" };<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>    long totalCellsLen1 = addRowsByKeysDataSize(memstore, keys1);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    long cellBeforeFlushSize = cellBeforeFlushSize();<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    long cellAfterFlushSize = cellAfterFlushSize();<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    long totalHeapSize1 = MutableSegment.DEEP_OVERHEAD + 4 * cellBeforeFlushSize;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    assertEquals(totalCellsLen1, region.getMemStoreSize());<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    assertEquals(totalHeapSize1, ((CompactingMemStore) memstore).heapSize());<a name="line.219"></a>
+<span class="sourceLineNo">220</span><a name="line.220"></a>
+<span class="sourceLineNo">221</span>    MemStoreSize size = memstore.getFlushableSize();<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline and compact<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // One cell is duplicated and the compaction will remove it. All cells of same size so adjusting<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    // totalCellsLen<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    totalCellsLen1 = (totalCellsLen1 * 3) / 4;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    totalHeapSize1 = 3 * cellAfterFlushSize + MutableSegment.DEEP_OVERHEAD<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        + (toCellChunkMap ?<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        CellChunkImmutableSegment.DEEP_OVERHEAD_CCM :<a name="line.230"></a>
+<span class="sourceLineNo">231</span>        CellArrayImmutableSegment.DEEP_OVERHEAD_CAM);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    assertEquals(totalCellsLen1, regionServicesForStores.getMemStoreSize());<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    assertEquals(totalHeapSize1, ((CompactingMemStore) memstore).heapSize());<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    long totalCellsLen2 = addRowsByKeysDataSize(memstore, keys2);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    long totalHeapSize2 = 3 * cellBeforeFlushSize;<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>    assertEquals(totalCellsLen1 + totalCellsLen2, regionServicesForStores.getMemStoreSize());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    assertEquals(totalHeapSize1 + totalHeapSize2, ((CompactingMemStore) memstore).heapSize());<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    ((MyCompactingMemStore) memstore).disableCompaction();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    size = memstore.getFlushableSize();<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline without compaction<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    totalHeapSize2 = totalHeapSize2 + CSLMImmutableSegment.DEEP_OVERHEAD_CSLM;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    assertEquals(totalCellsLen1 + totalCellsLen2, regionServicesForStores.getMemStoreSize());<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    assertEquals(totalHeapSize1 + totalHeapSize2, ((CompactingMemStore) memstore).heapSize());<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>    long totalCellsLen3 = addRowsByKeysDataSize(memstore, keys3);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    long totalHeapSize3 = 3 * cellBeforeFlushSize;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    assertEquals(totalCellsLen1 + totalCellsLen2 + totalCellsLen3,<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        regionServicesForStores.getMemStoreSize());<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    assertEquals(totalHeapSize1 + totalHeapSize2 + totalHeapSize3,<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        ((CompactingMemStore) memstore).heapSize());<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>    ((MyCompactingMemStore) memstore).enableCompaction();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    size = memstore.getFlushableSize();<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline and compact<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    while (((CompactingMemStore) memstore).isMemStoreFlushingInMemory()) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      Threads.sleep(10);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    // active flushed to pipeline and all 3 segments compacted. Will get rid of duplicated cells.<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    // Out of total 10, only 4 cells are unique<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    totalCellsLen2 = totalCellsLen2 / 3;// 2 out of 3 cells are duplicated<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    totalCellsLen3 = 0;// All duplicated cells.<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    assertEquals(totalCellsLen1 + totalCellsLen2 + totalCellsLen3,<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        regionServicesForStores.getMemStoreSize());<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    // Only 4 unique cells left<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    long totalHeapSize4 = 4 * cellAfterFlushSize + MutableSegment.DEEP_OVERHEAD<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        + (toCellChunkMap ?<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        CellChunkImmutableSegment.DEEP_OVERHEAD_CCM :<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        CellArrayImmutableSegment.DEEP_OVERHEAD_CAM);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    assertEquals(totalHeapSize4, ((CompactingMemStore) memstore).heapSize());<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>    size = memstore.getFlushableSize();<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    MemStoreSnapshot snapshot = memstore.snapshot(); // push keys to snapshot<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    region.decrMemStoreSize(size);  // simulate flusher<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    ImmutableSegment s = memstore.getSnapshot();<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    assertEquals(4, s.getCellsCount());<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    assertEquals(0, regionServicesForStores.getMemStoreSize());<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    memstore.clearSnapshot(snapshot.getId());<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  // Merging tests<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @Test<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public void testMerging() throws IOException {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    if (toCellChunkMap) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      // set memstore to flat into CellChunkMap<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.CHUNK_MAP);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    String[] keys1 = { "A", "A", "B", "C", "F", "H"};<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    String[] keys2 = { "A", "B", "D", "G", "I", "J"};<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    String[] keys3 = { "D", "B", "B", "E" };<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    MemoryCompactionPolicy compactionType = MemoryCompactionPolicy.BASIC;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    memstore.getConfiguration().set(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY,<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        String.valueOf(compactionType));<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    ((MyCompactingMemStore)memstore).initiateType(compactionType, memstore.getConfiguration());<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    addRowsByKeysDataSize(memstore, keys1);<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline should not compact<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>    while (((CompactingMemStore) memstore).isMemStoreFlushingInMemory()) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      Threads.sleep(10);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>    addRowsByKeysDataSize(memstore, keys2); // also should only flatten<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>    int counter2 = 0;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    for ( Segment s : memstore.getSegments()) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      counter2 += s.getCellsCount();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    assertEquals(12, counter2);<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>    ((MyCompactingMemStore) memstore).disableCompaction();<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline without flattening<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>    int counter3 = 0;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    for ( Segment s : memstore.getSegments()) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      counter3 += s.getCellsCount();<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    assertEquals(12, counter3);<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>    addRowsByKeysDataSize(memstore, keys3);<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>    int counter4 = 0;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    for ( Segment s : memstore.getSegments()) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      counter4 += s.getCellsCount();<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    assertEquals(16, counter4);<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>    ((MyCompactingMemStore) memstore).enableCompaction();<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>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline and compact<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    while (((CompactingMemStore) memstore).isMemStoreFlushingInMemory()) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      Threads.sleep(10);<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>    int counter = 0;<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    for ( Segment s : memstore.getSegments()) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      counter += s.getCellsCount();<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    }<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    assertEquals(16,counter);<a name="line.354"></a>
-<span class="sourceLineNo">355</span><a name="line.355"></a>
-<span class="sourceLineNo">356</span>    MemStoreSnapshot snapshot = memstore.snapshot(); // push keys to snapshot<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    ImmutableSegment s = memstore.getSnapshot();<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    memstore.clearSnapshot(snapshot.getId());<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>  @Test<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  public void testTimeRangeAfterCompaction() throws IOException {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    if (toCellChunkMap) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      // set memstore to flat into CellChunkMap<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.CHUNK_MAP);<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    }<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    testTimeRange(true);<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>  @Test<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public void testTimeRangeAfterMerge() throws IOException {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    if (toCellChunkMap) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      // set memstore to flat into CellChunkMap<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.CHUNK_MAP);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    MemoryCompactionPolicy compactionType = MemoryCompactionPolicy.BASIC;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    memstore.getConfiguration().set(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY,<a name="line.377"></a>
-<span class="sourceLineNo">378</span>        String.valueOf(compactionType));<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    ((MyCompactingMemStore)memstore).initiateType(compactionType, memstore.getConfiguration());<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    testTimeRange(false);<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>  private void testTimeRange(boolean isCompaction) throws IOException {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    final long initTs = 100;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    long currentTs = initTs;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    byte[] row = Bytes.toBytes("row");<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    byte[] family = Bytes.toBytes("family");<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    byte[] qf1 = Bytes.toBytes("qf1");<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>    // first segment in pipeline<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    this.memstore.add(new KeyValue(row, family, qf1, ++currentTs, (byte[])null), null);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    long minTs = currentTs;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    this.memstore.add(new KeyValue(row, family, qf1, ++currentTs, (byte[])null), null);<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span>    long numberOfCell = 2;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    assertEquals(numberOfCell, memstore.getSegments().stream().mapToInt(Segment::getCellsCount).sum());<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    assertEquals(minTs, memstore.getSegments().stream().mapToLong(<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        m -&gt; m.getTimeRangeTracker().getMin()).min().getAsLong());<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    assertEquals(currentTs, memstore.getSegments().stream().mapToLong(<a name="line.399"></a>
-<span class="sourceLineNo">400</span>        m -&gt; m.getTimeRangeTracker().getMax()).max().getAsLong());<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>    ((CompactingMemStore) memstore).flushInMemory();<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>    while (((CompactingMemStore) memstore).isMemStoreFlushingInMemory()) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      Threads.sleep(10);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    if (isCompaction) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      // max version = 1, so one cell will be dropped.<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      numberOfCell = 1;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      minTs = currentTs;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    // second segment in pipeline<a name="line.412"></a>
+<span class="sourceLineNo">343</span>    ((CompactingMemStore) memstore).flushInMemory(); // push keys to pipeline and compact<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    while (((CompactingMemStore) memstore).isMemStoreFlushingInMemory()) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      Threads.sleep(10);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    assertEquals(0, memstore.getSnapshot().getCellsCount());<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>    int counter = 0;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    for ( Segment s : memstore.getSegments()) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      counter += s.getCellsCount();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    assertEquals(16,counter);<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>    MemStoreSnapshot snapshot = memstore.snapshot(); // push keys to snapshot<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    ImmutableSegment s = memstore.getSnapshot();<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    memstore.clearSnapshot(snapshot.getId());<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>  @Test<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public void testTimeRangeAfterCompaction() throws IOException {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    if (toCellChunkMap) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      // set memstore to flat into CellChunkMap<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.CHUNK_MAP);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    testTimeRange(true);<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<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  public void testTimeRangeAfterMerge() throws IOException {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    if (toCellChunkMap) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      // set memstore to flat into CellChunkMap<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      ((CompactingMemStore)memstore).setIndexType(CompactingMemStore.IndexType.CHUNK_MAP);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    }<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    MemoryCompactionPolicy compactionType = MemoryCompactionPolicy.BASIC;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    memstore.getConfiguration().set(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY,<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        String.valueOf(compactionType));<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    ((MyCompactingMemStore)memstore).initiateType(compactionType, memstore.getConfiguration());<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    testTimeRange(false);<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>  private void testTimeRange(boolean isCompaction) throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    final long initTs = 100;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    long currentTs = initTs;<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    byte[] row = Bytes.toBytes("row");<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    byte[] family = Bytes.toBytes("family");<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    byte[] qf1 = Bytes.toBytes("qf1");<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>    // first segment in pipeline<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    this.memstore.add(new KeyValue(row, family, qf1, ++currentTs, (byte[])null), null);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    long minTs = currentTs;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    this.memstore.add(new KeyValue(row, family, qf1, ++currentTs, (byte[])null), null);<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>    long numberOfCell = 2;<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    assertEquals(numberOfCell, memstore.getSegments().stream().mapToInt(Segment::getCellsCount).sum());<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertEquals(minTs, memstore.getSegments().stream().mapToLong(<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        m -&gt; m.getTimeRangeTracker().getMin()).min().getAsLong());<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    assertEquals(currentTs, memstore.getSegments().stream().mapToLong(<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        m -&gt; m.getTimeRangeTracker().getMax()).max().getAsLong());<a name="line.399"></a>
+<span class="sourceLineNo">400</span><a name="line.400"></a>
+<span class="sourceLineNo">401</span>    ((CompactingMemStore) memstore).flushInMemory();<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>    while (((CompactingMemStore) memstore).isMemStoreFlushingInMemory()) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      Threads.sleep(10);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    }<a name="line.405"></a>
+<span class="sourceLineNo">406</span>    if (isCompaction) {<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      // max version = 1, so one cell will be dropped.<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      numberOfCell = 1;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      minTs = currentTs;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // second segment in pipeline<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    this.memstore.add(new KeyValue(row, family, qf1, ++currentTs, (byte[])null), null);<a name="line.412"></a>
 <span class="sourceLineNo">413</span>    this.memstore.add(new KeyValue(row, family, qf1, ++currentTs, (byte[])null), null);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    this.memstore.add(new KeyValue(row, family, qf1, ++currentTs, (byte[])null), null);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    numberOfCell += 2;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    assertEquals(numberOfCell, memstore.getSegments().stream().mapToInt(Segment::getCellsCount).sum());<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    assertEquals(minTs, memstore.getSegments().stream().mapToLong(<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        m -&gt; m.getTimeRangeTracker().getMin()).min().getAsLong());<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    assertEquals(currentTs, memstore.getSegments().stream().mapToLong(<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        m -&gt; m.getTimeRangeTracker().getMax()).max().getAsLong());<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>    ((CompactingMemStore) memstore).flushInMemory(); // trigger the merge<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>    while (((CompactingMemStore) memstore).isMemStoreFlushingInMemory()) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      Threads.sleep(10);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    }<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    if (isCompaction) {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      // max version = 1, so one cell will be dropped.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      numberOfCell = 1;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      minTs = currentTs;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    }<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>    assertEquals(numberOfCell, memstore.getSegments().stream().mapToInt(Segment::getCellsCount).sum());<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    assertEquals(minTs, memstore.getSegments().stream().mapToLong(<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        m -&gt; m.getTimeRangeTracker().getMin()).min().getAsLong());<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    assertEquals(currentTs, memstore.getSegments().stream().mapToLong(<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        m -&gt; m.getTimeRangeTracker().getMax()).max().getAsLong());<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>  @Test<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  public void testCountOfCellsAfterFlatteningByScan() throws IOException {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    String[] keys1 = { "A", "B", "C" }; // A, B, C<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    addRowsByKeysWith50Cols(memstore, keys1);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    // this should only flatten as there are no duplicates<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    ((CompactingMemStore) memstore).flushInMemory();<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    while (((CompactingMemStore) memstore).isMemStoreFlushingInMemory()) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      Threads.sleep(10);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    List&lt;KeyValueScanner&gt; scanners = memstore.getScanners(Long.MAX_VALUE);<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    // seek<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    int count = 0;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    for(int i = 0; i &lt; scanners.size(); i++) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      scanners.get(i).seek(KeyValue.LOWESTKEY);<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      while (scanners.get(i).next() != null) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>        count++;<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>    assertEquals("the count should be ", count, 150);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    for(int i = 0; i &lt; scanners.size(); i++) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      scanners.get(i).close();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    }<a name="line.461"></a>
-<span class="sourceLineNo">462</span>  }<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>  @Test<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  public void testCountOfCellsAfterFlatteningByIterator() throws IOException {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    String[] keys1 = { "A", "B", "C" }; // A, B, C<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    addRowsByKeysWith50Cols(memstore, keys1);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    // this should only flatten as there are no duplicates<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    ((CompactingMemStore) memstore).flushInMemory();<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    while (((CompactingMemStore) memstore).isMemStoreFlushingInMemory()) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      Threads.sleep(10);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // Just doing the cnt operation here<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    MemStoreSegmentsIterator itr = new MemStoreMergerSegmentsIterator(<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        ((CompactingMemStore) memstore).getImmutableSegments().getStoreSegments(),<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        CellComparatorImpl.COMPARATOR, 10);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    int cnt = 0;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    try {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      while (itr.next() != null) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        cnt++;<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      }<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    } finally {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      itr.close();<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    assertEquals("the count should be ", cnt, 150);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  }<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  private void addRowsByKeysWith50Cols(AbstractMemStore hmc, String[] keys) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    byte[] fam = Bytes.toBytes("testfamily");<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    for (int i = 0; i &lt; keys.length; i++) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      long timestamp = System.currentTimeMillis();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      Threads.sleep(1); // to make sure each kv gets a different ts<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      byte[] row = Bytes.toBytes(keys[i]);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      for(int  j =0 ;j &lt; 50; j++) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        byte[] qf = Bytes.toBytes("testqualifier"+j);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        byte[] val = Bytes.toBytes(keys[i] + j);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        KeyValue kv = new KeyValue(row, fam, qf, timestamp, val);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>        hmc.add(kv, null);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      }<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    }<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>  @Override<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  @Test<a name="line.504"></a>
-<span class="sourceLineNo">505</span>  public void testPuttingBackChunksWithOpeningScanner() throws IOException {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    byte[] row = Bytes.toBytes("testrow");<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    byte[] fam = Bytes.toBytes("testfamily");<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    byte[] qf1 = Bytes.toBytes("testqualifier1");<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    byte[] qf2 = Bytes.toBytes("testqualifier2");<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    byte[] qf3 = Bytes.toBytes("testqualifier3");<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    byte[] qf4 = Bytes.toBytes("testqualifier4");<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    byte[] qf5 = Bytes.toBytes("testqualifier5");<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    byte[] qf6 = Bytes.toBytes("testqualifier6");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    byte[] qf7 = Bytes.toBytes(

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-management.html b/hbase-shaded-check-invariants/dependency-management.html
index 9458d9b..5916c37 100644
--- a/hbase-shaded-check-invariants/dependency-management.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/index.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/index.html b/hbase-shaded-check-invariants/index.html
index 973aa21..56c46e8 100644
--- a/hbase-shaded-check-invariants/index.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -122,7 +122,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/integration.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/integration.html b/hbase-shaded-check-invariants/integration.html
index b85b717..e9ed800 100644
--- a/hbase-shaded-check-invariants/integration.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/issue-tracking.html b/hbase-shaded-check-invariants/issue-tracking.html
index 2bbb06d..89ff3d8 100644
--- a/hbase-shaded-check-invariants/issue-tracking.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/license.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/license.html b/hbase-shaded-check-invariants/license.html
index 121f640..e6642dd 100644
--- a/hbase-shaded-check-invariants/license.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/mail-lists.html b/hbase-shaded-check-invariants/mail-lists.html
index 964c6be..585f548 100644
--- a/hbase-shaded-check-invariants/mail-lists.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/plugin-management.html b/hbase-shaded-check-invariants/plugin-management.html
index 04b8586..044f58a 100644
--- a/hbase-shaded-check-invariants/plugin-management.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/plugins.html b/hbase-shaded-check-invariants/plugins.html
index b253931..6b29101 100644
--- a/hbase-shaded-check-invariants/plugins.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -218,7 +218,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-info.html b/hbase-shaded-check-invariants/project-info.html
index ee5908d..23b26f4 100644
--- a/hbase-shaded-check-invariants/project-info.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -170,7 +170,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-reports.html b/hbase-shaded-check-invariants/project-reports.html
index beb61ae..d68c0a3 100644
--- a/hbase-shaded-check-invariants/project-reports.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-summary.html b/hbase-shaded-check-invariants/project-summary.html
index e1be9a2..a703f1d 100644
--- a/hbase-shaded-check-invariants/project-summary.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/source-repository.html b/hbase-shaded-check-invariants/source-repository.html
index fe2ca34..fe27f54 100644
--- a/hbase-shaded-check-invariants/source-repository.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/team-list.html b/hbase-shaded-check-invariants/team-list.html
index de5dbd3..29fa1c7 100644
--- a/hbase-shaded-check-invariants/team-list.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index b8d7baf..cd5d1fe 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -438,7 +438,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index b2d8932..4ddf7c4 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -296,7 +296,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index df2e2b3..b3f5f1b 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -293,7 +293,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 2c6a56c..e4c3d10 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -496,7 +496,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 00fe30b..fc5f7f1 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -346,7 +346,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 04fa9b5..d1441fb 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -419,7 +419,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index e67c559..d7e1c33 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -441,7 +441,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index d514e6b..cdf9247 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -380,7 +380,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 871c8bf..8b08b34 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -774,7 +774,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 3f247a6..a67138c 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 21c07b4..60bb492 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 8f705d4..442dcdd 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -336,7 +336,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 478fb16..4c11f91 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -313,7 +313,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 72950f3..a2230ac 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -308,7 +308,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index bdc4f0b..8d1fff7 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -336,7 +336,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 8102efd..75d9bed 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -304,7 +304,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 0207052..5f26e17 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -338,7 +338,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 403838c..29342bf 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -525,7 +525,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index e40a867..8f4307c 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -723,7 +723,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 8e781fc..611b240 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1426,6 +1426,7 @@
 <li><a href="org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMultiLogThreshold</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver" target="classFrame">TestMultiLogThreshold.ActionType</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMultiParallel</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMultiParallel.MyMasterObserver</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestMultipleColumnPrefixFilter.html" title="class in org.apache.hadoop.hbase.filter" target="classFrame">TestMultipleColumnPrefixFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMultipleTimestamps</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMultiRespectsLimits</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index ba43f93..2ad4fb7 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1426,6 +1426,7 @@
 <li><a href="org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.html" title="class in org.apache.hadoop.hbase.regionserver">TestMultiLogThreshold</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver">TestMultiLogThreshold.ActionType</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel.MyMasterObserver</a></li>
 <li><a href="org/apache/hadoop/hbase/filter/TestMultipleColumnPrefixFilter.html" title="class in org.apache.hadoop.hbase.filter">TestMultipleColumnPrefixFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client">TestMultipleTimestamps</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html" title="class in org.apache.hadoop.hbase.client">TestMultiRespectsLimits</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index eebd3e6..54a4e11 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -13756,6 +13756,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestEnableTable.MasterSyncObserver.html#getMasterObserver--">getMasterObserver()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestEnableTable.MasterSyncObserver.html" title="class in org.apache.hadoop.hbase.client">TestEnableTable.MasterSyncObserver</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#getMasterObserver--">getMasterObserver()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel.MyMasterObserver</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestClassLoading.TestMasterCoprocessor.html#getMasterObserver--">getMasterObserver()</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestClassLoading.TestMasterCoprocessor.html" title="class in org.apache.hadoop.hbase.coprocessor">TestClassLoading.TestMasterCoprocessor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomMasterObserver.html#getMasterObserver--">getMasterObserver()</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.CustomMasterObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestCoprocessorMetrics.CustomMasterObserver</a></dt>
@@ -22744,6 +22746,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMasterRpcServices.html#myMaster">myMaster</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMasterRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MyMasterRpcServices</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#MyMasterObserver--">MyMasterObserver()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel.MyMasterObserver</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html#MyMasterRpcServices-org.apache.hadoop.hbase.master.HMaster-">MyMasterRpcServices(HMaster)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMasterRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster.MyMasterRpcServices</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMasterRpcServices.html#MyMasterRpcServices-org.apache.hadoop.hbase.master.HMaster-">MyMasterRpcServices(HMaster)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMasterRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">TestSplitTransactionOnCluster.MyMasterRpcServices</a></dt>
@@ -25877,10 +25881,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html#postAssignCalled">postAssignCalled</a></span> - Variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestMasterObserver.CPMasterObserver</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#postBalance-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-">postBalance(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, List&lt;RegionPlan&gt;)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel.MyMasterObserver</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html#postBalance-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-">postBalance(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, List&lt;RegionPlan&gt;)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestMasterObserver.CPMasterObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html#postBalanceCalled">postBalanceCalled</a></span> - Variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestMasterObserver.CPMasterObserver</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#postBalanceCount">postBalanceCount</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel.MyMasterObserver</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html#postBalanceRSGroup-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.lang.String-boolean-">postBalanceRSGroup(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, String, boolean)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestMasterObserver.CPMasterObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html#postBalanceSwitch-org.apache.hadoop.hbase.coprocessor.ObserverContext-boolean-boolean-">postBalanceSwitch(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, boolean, boolean)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestMasterObserver.CPMasterObserver.html" title="class in org.apache.hadoop.hbase.coprocessor">TestMasterObserver.CPMasterObserver</a></dt>
@@ -35067,6 +35075,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/replication/TestReplicationAdminWithClusters.TestUpdatableReplicationEndpoint.html#start--">start()</a></span> - Method in class org.apache.hadoop.hbase.client.replication.<a href="org/apache/hadoop/hbase/client/replication/TestReplicationAdminWithClusters.TestUpdatableReplicationEndpoint.html" title="class in org.apache.hadoop.hbase.client.replication">TestReplicationAdminWithClusters.TestUpdatableReplicationEndpoint</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#start">start</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel.MyMasterObserver</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#start-org.apache.hadoop.hbase.CoprocessorEnvironment-">start(CoprocessorEnvironment)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel.MyMasterObserver</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestResultFromCoprocessor.MyObserver.html#start-org.apache.hadoop.hbase.CoprocessorEnvironment-">start(CoprocessorEnvironment)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestResultFromCoprocessor.MyObserver.html" title="class in org.apache.hadoop.hbase.client">TestResultFromCoprocessor.MyObserver</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ClusterManager.html#start-org.apache.hadoop.hbase.ClusterManager.ServiceType-java.lang.String-int-">start(ClusterManager.ServiceType, String, int)</a></span> - Method in interface org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ClusterManager.html" title="interface in org.apache.hadoop.hbase">ClusterManager</a></dt>
@@ -49853,6 +49865,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMultiParallel.html#TestMultiParallel--">TestMultiParallel()</a></span> - Constructor for 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><a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMultiParallel.MyMasterObserver</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="memberNameLink"><a href="org/apache/hadoop/hbase/rest/TestGetAndPutResource.html#testMultipleCellCheckDeletePB--">testMultipleCellCheckDeletePB()</a></span> - Method in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/TestGetAndPutResource.html" title="class in org.apache.hadoop.hbase.rest">TestGetAndPutResource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/TestGetAndPutResource.html#testMultipleCellCheckPutPB--">testMultipleCellCheckPutPB()</a></span> - Method in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/TestGetAndPutResource.html" title="class in org.apache.hadoop.hbase.rest">TestGetAndPutResource</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html b/testdevapidocs/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html
index 2865f0a..5f93331 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.59">TestBackupSystemTable</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.62">TestBackupSystemTable</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Test cases for backup system table API</div>
 </li>
@@ -305,7 +305,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>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/backup/TestBackupSystemTable.html#line.61">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/backup/TestBackupSystemTable.html#line.64">UTIL</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -314,7 +314,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>protected static&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.62">conf</a></pre>
+<pre>protected static&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.65">conf</a></pre>
 </li>
 </ul>
 <a name="cluster">
@@ -323,7 +323,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>cluster</h4>
-<pre>protected static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.63">cluster</a></pre>
+<pre>protected static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.66">cluster</a></pre>
 </li>
 </ul>
 <a name="conn">
@@ -332,7 +332,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>conn</h4>
-<pre>protected static&nbsp;org.apache.hadoop.hbase.client.Connection <a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.64">conn</a></pre>
+<pre>protected static&nbsp;org.apache.hadoop.hbase.client.Connection <a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.67">conn</a></pre>
 </li>
 </ul>
 <a name="table">
@@ -341,7 +341,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>table</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.backup.impl.BackupSystemTable <a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.65">table</a></pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.backup.impl.BackupSystemTable <a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.68">table</a></pre>
 </li>
 </ul>
 </li>
@@ -358,7 +358,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestBackupSystemTable</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.59">TestBackupSystemTable</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.62">TestBackupSystemTable</a>()</pre>
 </li>
 </ul>
 </li>
@@ -375,7 +375,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.68">setUp</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.71">setUp</a>()
                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -389,7 +389,7 @@ extends <a href="http://docs.oracle.com/javase/8/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/backup/TestBackupSystemTable.html#line.77">before</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.80">before</a>()
             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -403,7 +403,7 @@ extends <a href="http://docs.oracle.com/javase/8/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/backup/TestBackupSystemTable.html#line.82">after</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.85">after</a>()</pre>
 </li>
 </ul>
 <a name="testUpdateReadDeleteBackupStatus--">
@@ -412,7 +412,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testUpdateReadDeleteBackupStatus</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.90">testUpdateReadDeleteBackupStatus</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.93">testUpdateReadDeleteBackupStatus</a>()
                                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -426,7 +426,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testWriteReadBackupStartCode</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.106">testWriteReadBackupStartCode</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.109">testWriteReadBackupStartCode</a>()
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -440,7 +440,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanBackupTable</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.114">cleanBackupTable</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.117">cleanBackupTable</a>()
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -454,7 +454,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBackupHistory</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.124">testBackupHistory</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.127">testBackupHistory</a>()
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -468,7 +468,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBackupDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.151">testBackupDelete</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.154">testBackupDelete</a>()
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -482,7 +482,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRegionServerLastLogRollResults</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.186">testRegionServerLastLogRollResults</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.189">testRegionServerLastLogRollResults</a>()
                                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -496,7 +496,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testIncrementalBackupTableSet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.212">testIncrementalBackupTableSet</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.215">testIncrementalBackupTableSet</a>()
                                    throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -510,7 +510,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testRegionServerLogTimestampMap</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.252">testRegionServerLogTimestampMap</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.255">testRegionServerLogTimestampMap</a>()
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -524,7 +524,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testAddWALFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.324">testAddWALFiles</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.327">testAddWALFiles</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -538,7 +538,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBackupSetAddNotExists</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.346">testBackupSetAddNotExists</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.368">testBackupSetAddNotExists</a>()
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Backup set tests</div>
 <dl>
@@ -553,7 +553,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBackupSetAddExists</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.364">testBackupSetAddExists</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.386">testBackupSetAddExists</a>()
                             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -567,7 +567,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBackupSetAddExistsIntersects</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.387">testBackupSetAddExistsIntersects</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.409">testBackupSetAddExistsIntersects</a>()
                                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -581,7 +581,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBackupSetRemoveSomeNotExists</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.410">testBackupSetRemoveSomeNotExists</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.432">testBackupSetRemoveSomeNotExists</a>()
                                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -595,7 +595,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBackupSetRemove</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.432">testBackupSetRemove</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.454">testBackupSetRemove</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -609,7 +609,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBackupSetDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.454">testBackupSetDelete</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.476">testBackupSetDelete</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -623,7 +623,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBackupSetList</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.469">testBackupSetList</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.491">testBackupSetList</a>()
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -637,7 +637,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>compare</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.488">compare</a>(org.apache.hadoop.hbase.backup.BackupInfo&nbsp;one,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.510">compare</a>(org.apache.hadoop.hbase.backup.BackupInfo&nbsp;one,
                         org.apache.hadoop.hbase.backup.BackupInfo&nbsp;two)</pre>
 </li>
 </ul>
@@ -647,7 +647,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createBackupInfo</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.backup.BackupInfo&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.494">createBackupInfo</a>()</pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.backup.BackupInfo&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.516">createBackupInfo</a>()</pre>
 </li>
 </ul>
 <a name="createBackupInfoList-int-">
@@ -656,7 +656,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createBackupInfoList</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.backup.BackupInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.505">createBackupInfoList</a>(int&nbsp;size)</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.backup.BackupInfo&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.527">createBackupInfoList</a>(int&nbsp;size)</pre>
 </li>
 </ul>
 <a name="tearDown--">
@@ -665,7 +665,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.519">tearDown</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html#line.541">tearDown</a>()
                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>


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

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

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

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index 9ec0fa8..d7414a3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,11 +16,11 @@
 <span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a>
 <span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a>
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
-<span class="sourceLineNo">011</span>  public static final String revision = "6c2aa4c9ccea04ccf5c9c84de9677bd6232856e1";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "9c2a35542f3434ea8b4f278bb4e4bf7dcd1db604";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Mon Jan  1 14:42:00 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Tue Jan  2 14:41:36 UTC 2018";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://asf920.gq1.ygridcore.net/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "51047680d257b9bedaa4299f65bfb29b";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "533cd22faf0c4ec6357512eafd4ddab5";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html
new file mode 100644
index 0000000..e781962
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html
@@ -0,0 +1,897 @@
+<!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.assertFalse;<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>
+<span class="sourceLineNo">027</span>import java.util.ArrayList;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.HashSet;<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.Optional;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.CountDownLatch;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.Cell;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.CoprocessorEnvironment;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HConstants;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ServerName;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.TableName;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.Waiter;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.codec.KeyValueCodec;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.coprocessor.MasterCoprocessor;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.MasterObserver;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.master.LoadBalancer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.master.RegionPlan;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.testclassification.FlakeyTests;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.JVMClusterUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.junit.AfterClass;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.junit.Assert;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.junit.Before;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.junit.BeforeClass;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.junit.Test;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.junit.experimental.categories.Category;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.slf4j.Logger;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.slf4j.LoggerFactory;<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>@Category({MediumTests.class, FlakeyTests.class})<a name="line.66"></a>
+<span class="sourceLineNo">067</span>public class TestMultiParallel {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMultiParallel.class);<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private static final byte[] VALUE = Bytes.toBytes("value");<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final byte[] QUALIFIER = Bytes.toBytes("qual");<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private static final String FAMILY = "family";<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final TableName TEST_TABLE = TableName.valueOf("multi_test_table");<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private static final byte[] BYTES_FAMILY = Bytes.toBytes(FAMILY);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private static final byte[] ONE_ROW = Bytes.toBytes("xxx");<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private static final byte [][] KEYS = makeKeys();<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private static final int slaves = 5; // also used for testing HTable pool size<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private static Connection CONNECTION;<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  @BeforeClass public static void beforeClass() throws Exception {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    // Uncomment the following lines if more verbosity is needed for<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    // debugging (see HBASE-12285 for details).<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    //((Log4JLogger)RpcServer.LOG).getLogger().setLevel(Level.ALL);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    //((Log4JLogger)RpcClient.LOG).getLogger().setLevel(Level.ALL);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    //((Log4JLogger)ScannerCallable.LOG).getLogger().setLevel(Level.ALL);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    UTIL.getConfiguration().set(HConstants.RPC_CODEC_CONF_KEY,<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        KeyValueCodec.class.getCanonicalName());<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    UTIL.getConfiguration().setBoolean(LoadBalancer.TABLES_ON_MASTER, true);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    UTIL.getConfiguration().setBoolean(LoadBalancer.SYSTEM_TABLES_ON_MASTER, true);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    UTIL.getConfiguration()<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        .set(CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY, MyMasterObserver.class.getName());<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    UTIL.startMiniCluster(slaves);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    Table t = UTIL.createMultiRegionTable(TEST_TABLE, Bytes.toBytes(FAMILY));<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    UTIL.waitTableEnabled(TEST_TABLE);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    t.close();<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    CONNECTION = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    assertTrue(MyMasterObserver.start.get());<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>  @AfterClass public static void afterClass() throws Exception {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    CONNECTION.close();<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    UTIL.shutdownMiniCluster();<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>  @Before public void before() throws Exception {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    final int balanceCount = MyMasterObserver.postBalanceCount.get();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    LOG.info("before");<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    if (UTIL.ensureSomeRegionServersAvailable(slaves)) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      // Distribute regions<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      UTIL.getMiniHBaseCluster().getMaster().balance();<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      // Some plans are created.<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      if (MyMasterObserver.postBalanceCount.get() &gt; balanceCount) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        // It is necessary to wait the move procedure to start.<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        // Otherwise, the next wait may pass immediately.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        UTIL.waitFor(3 * 1000, 100, false, () -&gt;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>            UTIL.getMiniHBaseCluster().getMaster().getAssignmentManager().hasRegionsInTransition()<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        );<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      }<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>      // Wait until completing balance<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      UTIL.waitUntilAllRegionsAssigned(TEST_TABLE);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    }<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    LOG.info("before done");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static byte[][] makeKeys() {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    byte [][] starterKeys = HBaseTestingUtility.KEYS;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    // Create a "non-uniform" test set with the following characteristics:<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    // a) Unequal number of keys per region<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>    // Don't use integer as a multiple, so that we have a number of keys that is<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    // not a multiple of the number of regions<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    int numKeys = (int) (starterKeys.length * 10.33F);<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>    List&lt;byte[]&gt; keys = new ArrayList&lt;&gt;();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    for (int i = 0; i &lt; numKeys; i++) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      int kIdx = i % starterKeys.length;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      byte[] k = starterKeys[kIdx];<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      byte[] cp = new byte[k.length + 1];<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      System.arraycopy(k, 0, cp, 0, k.length);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      cp[k.length] = new Integer(i % 256).byteValue();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      keys.add(cp);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>    // b) Same duplicate keys (showing multiple Gets/Puts to the same row, which<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // should work)<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // c) keys are not in sorted order (within a region), to ensure that the<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    // sorting code and index mapping doesn't break the functionality<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    for (int i = 0; i &lt; 100; i++) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      int kIdx = i % starterKeys.length;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      byte[] k = starterKeys[kIdx];<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      byte[] cp = new byte[k.length + 1];<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      System.arraycopy(k, 0, cp, 0, k.length);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      cp[k.length] = new Integer(i % 256).byteValue();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      keys.add(cp);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    return keys.toArray(new byte [][] {new byte [] {}});<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * This is for testing the active number of threads that were used while<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * doing a batch operation. It inserts one row per region via the batch<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * operation, and then checks the number of active threads.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * For HBASE-3553<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @throws IOException<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @throws InterruptedException<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * @throws NoSuchFieldException<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * @throws SecurityException<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  @Test(timeout=300000)<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  public void testActiveThreadsCount() throws Exception {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    UTIL.getConfiguration().setLong("hbase.htable.threads.coresize", slaves + 1);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    try (Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration())) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      ThreadPoolExecutor executor = HTable.getDefaultExecutor(UTIL.getConfiguration());<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      try {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        try (Table t = connection.getTable(TEST_TABLE, executor)) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>          List&lt;Put&gt; puts = constructPutRequests(); // creates a Put for every region<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          t.batch(puts, null);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          HashSet&lt;ServerName&gt; regionservers = new HashSet&lt;&gt;();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          try (RegionLocator locator = connection.getRegionLocator(TEST_TABLE)) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>            for (Row r : puts) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>              HRegionLocation location = locator.getRegionLocation(r.getRow());<a name="line.185"></a>
+<span class="sourceLineNo">186</span>              regionservers.add(location.getServerName());<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>          assertEquals(regionservers.size(), executor.getLargestPoolSize());<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        }<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      } finally {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        executor.shutdownNow();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      }<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  }<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>  @Test(timeout=300000)<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public void testBatchWithGet() throws Exception {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    LOG.info("test=testBatchWithGet");<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    // load test data<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    table.batch(puts, null);<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    // create a list of gets and run it<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    List&lt;Row&gt; gets = new ArrayList&lt;&gt;();<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    for (byte[] k : KEYS) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      Get get = new Get(k);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      gets.add(get);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    Result[] multiRes = new Result[gets.size()];<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    table.batch(gets, multiRes);<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>    // Same gets using individual call API<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    List&lt;Result&gt; singleRes = new ArrayList&lt;&gt;();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    for (Row get : gets) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      singleRes.add(table.get((Get) get));<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    // Compare results<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    Assert.assertEquals(singleRes.size(), multiRes.length);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    for (int i = 0; i &lt; singleRes.size(); i++) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      Assert.assertTrue(singleRes.get(i).containsColumn(BYTES_FAMILY, QUALIFIER));<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      Cell[] singleKvs = singleRes.get(i).rawCells();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      Cell[] multiKvs = multiRes[i].rawCells();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      for (int j = 0; j &lt; singleKvs.length; j++) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        Assert.assertEquals(singleKvs[j], multiKvs[j]);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        Assert.assertEquals(0, Bytes.compareTo(CellUtil.cloneValue(singleKvs[j]),<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            CellUtil.cloneValue(multiKvs[j])));<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>    table.close();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  @Test<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public void testBadFam() throws Exception {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    LOG.info("test=testBadFam");<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    List&lt;Row&gt; actions = new ArrayList&lt;&gt;();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    Put p = new Put(Bytes.toBytes("row1"));<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    p.addColumn(Bytes.toBytes("bad_family"), Bytes.toBytes("qual"), Bytes.toBytes("value"));<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    actions.add(p);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    p = new Put(Bytes.toBytes("row2"));<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    p.addColumn(BYTES_FAMILY, Bytes.toBytes("qual"), Bytes.toBytes("value"));<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    actions.add(p);<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>    // row1 and row2 should be in the same region.<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>    Object [] r = new Object[actions.size()];<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    try {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      table.batch(actions, r);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      fail();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    } catch (RetriesExhaustedWithDetailsException ex) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      LOG.debug(ex.toString(), ex);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      // good!<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      assertFalse(ex.mayHaveClusterIssues());<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    assertEquals(2, r.length);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    assertTrue(r[0] instanceof Throwable);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    assertTrue(r[1] instanceof Result);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    table.close();<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>  @Test (timeout=300000)<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  public void testFlushCommitsNoAbort() throws Exception {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    LOG.info("test=testFlushCommitsNoAbort");<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    doTestFlushCommits(false);<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>   * Only run one Multi test with a forced RegionServer abort. Otherwise, the<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   * unit tests will take an unnecessarily long time to run.<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   *<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   * @throws Exception<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   */<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @Test (timeout=360000)<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  public void testFlushCommitsWithAbort() throws Exception {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    LOG.info("test=testFlushCommitsWithAbort");<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    doTestFlushCommits(true);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  /**<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * Set table auto flush to false and test flushing commits<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * @param doAbort true if abort one regionserver in the testing<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * @throws Exception<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  private void doTestFlushCommits(boolean doAbort) throws Exception {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    // Load the data<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    LOG.info("get new table");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    LOG.info("constructPutRequests");<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    table.put(puts);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    LOG.info("puts");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    final int liveRScount = UTIL.getMiniHBaseCluster().getLiveRegionServerThreads()<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        .size();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    assert liveRScount &gt; 0;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    JVMClusterUtil.RegionServerThread liveRS = UTIL.getMiniHBaseCluster()<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        .getLiveRegionServerThreads().get(0);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    if (doAbort) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      liveRS.getRegionServer().abort("Aborting for tests",<a name="line.304"></a>
+<span class="sourceLineNo">305</span>          new Exception("doTestFlushCommits"));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      // If we wait for no regions being online after we abort the server, we<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      // could ensure the master has re-assigned the regions on killed server<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      // after writing successfully. It means the server we aborted is dead<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      // and detected by matser<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      while (liveRS.getRegionServer().getNumberOfOnlineRegions() != 0) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        Thread.sleep(100);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      // try putting more keys after the abort. same key/qual... just validating<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      // no exceptions thrown<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      puts = constructPutRequests();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      table.put(puts);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>    LOG.info("validating loaded data");<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    validateLoadedData(table);<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>    // Validate server and region count<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    List&lt;JVMClusterUtil.RegionServerThread&gt; liveRSs = UTIL.getMiniHBaseCluster().getLiveRegionServerThreads();<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    int count = 0;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    for (JVMClusterUtil.RegionServerThread t: liveRSs) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      count++;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      LOG.info("Count=" + count + ", Alive=" + t.getRegionServer());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    LOG.info("Count=" + count);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    Assert.assertEquals("Server count=" + count + ", abort=" + doAbort,<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        (doAbort ? (liveRScount - 1) : liveRScount), count);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    if (doAbort) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      UTIL.getMiniHBaseCluster().waitOnRegionServer(0);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      UTIL.waitFor(15 * 1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        @Override<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        public boolean evaluate() throws Exception {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          // Master is also a regionserver, so the count is liveRScount<a name="line.337"></a>
+<span class="sourceLineNo">338</span>          return UTIL.getMiniHBaseCluster().getMaster()<a name="line.338"></a>
+<span class="sourceLineNo">339</span>              .getClusterStatus().getServersSize() == liveRScount;<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>      UTIL.waitFor(15 * 1000, UTIL.predicateNoRegionsInTransition());<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>    table.close();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    LOG.info("done");<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 (timeout=300000)<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public void testBatchWithPut() throws Exception {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    LOG.info("test=testBatchWithPut");<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    Table table = CONNECTION.getTable(TEST_TABLE);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    // put multiple rows using a batch<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.354"></a>
+<span class="sourceLineNo">355</span><a name="line.355"></a>
+<span class="sourceLineNo">356</span>    Object[] results = new Object[puts.size()];<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    table.batch(puts, results);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    if (true) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      int liveRScount = UTIL.getMiniHBaseCluster().getLiveRegionServerThreads().size();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      assert liveRScount &gt; 0;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      JVMClusterUtil.RegionServerThread liveRS =<a name="line.363"></a>
+<span class="sourceLineNo">364</span>        UTIL.getMiniHBaseCluster().getLiveRegionServerThreads().get(0);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      liveRS.getRegionServer().abort("Aborting for tests", new Exception("testBatchWithPut"));<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      puts = constructPutRequests();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      try {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        results = new Object[puts.size()];<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        table.batch(puts, results);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      } catch (RetriesExhaustedWithDetailsException ree) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        LOG.info(ree.getExhaustiveDescription());<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        table.close();<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        throw ree;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      }<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      validateSizeAndEmpty(results, KEYS.length);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    }<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>    validateLoadedData(table);<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>  @Test(timeout=300000)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  public void testBatchWithDelete() throws Exception {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    LOG.info("test=testBatchWithDelete");<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>    // Load some data<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    Object[] results = new Object[puts.size()];<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    table.batch(puts, results);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>    // Deletes<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    List&lt;Row&gt; deletes = new ArrayList&lt;&gt;();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    for (int i = 0; i &lt; KEYS.length; i++) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      Delete delete = new Delete(KEYS[i]);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      delete.addFamily(BYTES_FAMILY);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      deletes.add(delete);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    results= new Object[deletes.size()];<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    table.batch(deletes, results);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>    // Get to make sure ...<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    for (byte[] k : KEYS) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      Get get = new Get(k);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      Assert.assertFalse(table.exists(get));<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    }<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    table.close();<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>  @Test(timeout=300000)<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  public void testHTableDeleteWithList() throws Exception {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    LOG.info("test=testHTableDeleteWithList");<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.416"></a>
+<span class="sourceLineNo">417</span><a name="line.417"></a>
+<span class="sourceLineNo">418</span>    // Load some data<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    Object[] results = new Object[puts.size()];<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    table.batch(puts, results);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    // Deletes<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    ArrayList&lt;Delete&gt; deletes = new ArrayList&lt;&gt;();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    for (int i = 0; i &lt; KEYS.length; i++) {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      Delete delete = new Delete(KEYS[i]);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      delete.addFamily(BYTES_FAMILY);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      deletes.add(delete);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    table.delete(deletes);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    Assert.assertTrue(deletes.isEmpty());<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    // Get to make sure ...<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    for (byte[] k : KEYS) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      Get get = new Get(k);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      Assert.assertFalse(table.exists(get));<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    table.close();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  @Test(timeout=300000)<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public void testBatchWithManyColsInOneRowGetAndPut() throws Exception {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    LOG.info("test=testBatchWithManyColsInOneRowGetAndPut");<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>    List&lt;Row&gt; puts = new ArrayList&lt;&gt;();<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    for (int i = 0; i &lt; 100; i++) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      Put put = new Put(ONE_ROW);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      byte[] qual = Bytes.toBytes("column" + i);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      put.addColumn(BYTES_FAMILY, qual, VALUE);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      puts.add(put);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    Object[] results = new Object[puts.size()];<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    table.batch(puts, results);<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>    // validate<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    validateSizeAndEmpty(results, 100);<a name="line.459"></a>
+<span class="sourceLineNo">460</span><a name="line.460"></a>
+<span class="sourceLineNo">461</span>    // get the data back and validate that it is correct<a name="line.461"></a>
+<span class="sourceLineNo">462</span>    List&lt;Row&gt; gets = new ArrayList&lt;&gt;();<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    for (int i = 0; i &lt; 100; i++) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      Get get = new Get(ONE_ROW);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      byte[] qual = Bytes.toBytes("column" + i);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      get.addColumn(BYTES_FAMILY, qual);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      gets.add(get);<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    }<a name="line.468"></a>
+<span class="sourceLineNo">469</span><a name="line.469"></a>
+<span class="sourceLineNo">470</span>    Object[] multiRes = new Object[gets.size()];<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    table.batch(gets, multiRes);<a name="line.471"></a>
+<span class="sourceLineNo">472</span><a name="line.472"></a>
+<span class="sourceLineNo">473</span>    int idx = 0;<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    for (Object r : multiRes) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>      byte[] qual = Bytes.toBytes("column" + idx);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      validateResult(r, qual, VALUE);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      idx++;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    table.close();<a name="line.479"></a>
+<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>  @Test(timeout=300000)<a name="line.482"></a>
+<span class="sourceLineNo">483</span>  public void testBatchWithIncrementAndAppend() throws Exception {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    LOG.info("test=testBatchWithIncrementAndAppend");<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    final byte[] QUAL1 = Bytes.toBytes("qual1");<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    final byte[] QUAL2 = Bytes.toBytes("qual2");<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    final byte[] QUAL3 = Bytes.toBytes("qual3");<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    final byte[] QUAL4 = Bytes.toBytes("qual4");<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    Delete d = new Delete(ONE_ROW);<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    table.delete(d);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    Put put = new Put(ONE_ROW);<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    put.addColumn(BYTES_FAMILY, QUAL1, Bytes.toBytes("abc"));<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    put.addColumn(BYTES_FAMILY, QUAL2, Bytes.toBytes(1L));<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    table.put(put);<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>    Increment inc = new Increment(ONE_ROW);<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    inc.addColumn(BYTES_FAMILY, QUAL2, 1);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    inc.addColumn(BYTES_FAMILY, QUAL3, 1);<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>    Append a = new Append(ONE_ROW);<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    a.addColumn(BYTES_FAMILY, QUAL1, Bytes.toBytes("def"));<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    a.addColumn(BYTES_FAMILY, QUAL4, Bytes.toBytes("xyz"));<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    List&lt;Row&gt; actions = new ArrayList&lt;&gt;();<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    actions.add(inc);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    actions.add(a);<a name="line.506"></a>
+<span class="sourceLineNo">507</span><a name="line.507"></a>
+<span class="sourceLineNo">508</span>    Object[] multiRes = new Object[actions.size()];<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    table.batch(actions, multiRes);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    validateResult(multiRes[1], QUAL1, Bytes.toBytes("abcdef"));<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    validateResult(multiRes[1], QUAL4, Bytes.toBytes("xyz"));<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    validateResult(multiRes[0], QUAL2, Bytes.toBytes(2L));<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    validateResult(multiRes[0], QUAL3, Bytes.toBytes(1L));<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    table.close();<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
+<span class="sourceLineNo">516</span><a name="line.516"></a>
+<span class="sourceLineNo">517</span>  @Test(timeout=300000)<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  public void testNonceCollision() throws Exception {<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    LOG.info("test=testNonceCollision");<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    final Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    Table table = connection.getTable(TEST_TABLE);<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    Put put = new Put(ONE_ROW);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    put.addColumn(BYTES_FAMILY, QUALIFIER, Bytes.toBytes(0L));<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>    // Replace nonce manager with the one that returns each nonce twice.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    NonceGenerator cnm = new NonceGenerator() {<a name="line.526"></a>
+<span class="sourceLineNo">527</span><a name="line.527"></a>
+<span class="sourceLineNo">528</span>      private final PerClientRandomNonceGenerator delegate = PerClientRandomNonceGenerator.get();<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span>      private long lastNonce = -1;<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span>      @Override<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      public synchronized long newNonce() {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>        long nonce = 0;<a name="line.534"></a>
+<span class="sourceLineNo">535</span>        if (lastNonce == -1) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>          lastNonce = nonce = delegate.newNonce();<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        } else {<a name="line.537"></a>
+<span class="sourceLineNo">538</span>          nonce = lastNonce;<a name="line.538"></a>
+<span class="sourceLineNo">539</span>          lastNonce = -1L;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>        }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        return nonce;<a name="line.541"></a>
+<span class="sourceLineNo">542</span>      }<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>      @Override<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      public long getNonceGroup() {<a name="line.545"></a>
+<span class="sourceLineNo">546</span>        return delegate.getNonceGroup();<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      }<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    };<a name="line.548"></a>
+<span class="sourceLineNo">549</span><a name="line.549"></a>
+<span class="sourceLineNo">550</span>    NonceGenerator oldCnm =<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      ConnectionUtils.injectNonceGeneratorForTesting((ClusterConnection)connection, cnm);<a name="line.551"></a>
+<span class="sourceLineNo">552</span><a name="line.552"></a>
+<span class="sourceLineNo">553</span>    // First test sequential requests.<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    try {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      Increment inc = new Increment(ONE_ROW);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      inc.addColumn(BYTES_FAMILY, QUALIFIER, 1L);<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      table.increment(inc);<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>      // duplicate increment<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      inc = new Increment(ONE_ROW);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      inc.addColumn(BYTES_FAMILY, QUALIFIER, 1L);<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      Result result = table.increment(inc);<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      validateResult(result, QUALIFIER, Bytes.toBytes(1L));<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>      Get get = new Get(ONE_ROW);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      result = table.get(get);<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      validateResult(result, QUALIFIER, Bytes.toBytes(1L));<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span>      // Now run a bunch of requests in parallel, exactly half should succeed.<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      int numRequests = 40;<a name="line.571"></a>
+<span class="sourceLineNo">572</span>      final CountDownLatch startedLatch = new CountDownLatch(numRequests);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      final CountDownLatch startLatch = new CountDownLatch(1);<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      final CountDownLatch doneLatch = new CountDownLatch(numRequests);<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      for (int i = 0; i &lt; numRequests; ++i) {<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        Runnable r = new Runnable() {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>          @Override<a name="line.577"></a>
+<span class="sourceLineNo">578</span>          public void run() {<a name="line.578"></a>
+<span class="sourceLineNo">579</span>            Table table = null;<a name="line.579"></a>
+<span class="sourceLineNo">580</span>            try {<a name="line.580"></a>
+<span class="sourceLineNo">581</span>              table = connection.getTable(TEST_TABLE);<a name="line.581"></a>
+<span class="sourceLineNo">582</span>            } catch (IOException e) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>              fail("Not expected");<a name="line.583"></a>
+<span class="sourceLineNo">584</span>            }<a name="line.584"></a>
+<span class="sourceLineNo">585</span>            Increment inc = new Increment(ONE_ROW);<a name="line.585"></a>
+<span class="sourceLineNo">586</span>            inc.addColumn(BYTES_FAMILY, QUALIFIER, 1L);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>            startedLatch.countDown();<a name="line.587"></a>
+<span class="sourceLineNo">588</span>            try {<a name="line.588"></a>
+<span class="sourceLineNo">589</span>              startLatch.await();<a name="line.589"></a>
+<span class="sourceLineNo">590</span>            } catch (InterruptedException e) {<a name="line.590"></a>
+<span class="sourceLineNo">591</span>              fail("Not expected");<a name="line.591"></a>
+<span class="sourceLineNo">592</span>            }<a name="line.592"></a>
+<span class="sourceLineNo">593</span>            try {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>              table.increment(inc);<a name="line.594"></a>
+<span class="sourceLineNo">595</span>            } catch (IOException ioEx) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>              fail("Not expected");<a name="line.596"></a>
+<span class="sourceLineNo">597</span>            }<a name="line.597"></a>
+<span class="sourceLineNo">598</span>            doneLatch.countDown();<a name="line.598"></a>
+<span class="sourceLineNo">599</span>          }<a name="line.599"></a>
+<span class="sourceLineNo">600</span>        };<a name="line.600"></a>
+<span class="sourceLineNo">601</span>        Threads.setDaemonThreadRunning(new Thread(r));<a name="line.601"></a>
+<span class="sourceLineNo">602</span>      }<a name="line.602"></a>
+<span class="sourceLineNo">603</span>      startedLatch.await(); // Wait until all threads are ready...<a name="line.603"></a>
+<span class="sourceLineNo">604</span>      startLatch.countDown(); // ...and unleash the herd!<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      doneLatch.await();<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      // Now verify<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      get = new Get(ONE_ROW);<a name="line.607"></a>
+<span class="sourceLineNo">608</span>      get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      result = table.get(get);<a name="line.609"></a>
+<span class="sourceLineNo">610</span>      validateResult(result, QUALIFIER, Bytes.toBytes((numRequests / 2) + 1L));<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      table.close();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    } finally {<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      ConnectionImplementation.injectNonceGeneratorForTesting((ClusterConnection) connection, oldCnm);<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(timeout=300000)<a name="line.617"></a>
+<span class="sourceLineNo">618</span>  public void testBatchWithMixedActions() throws Exception {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>    LOG.info("test=testBatchWithMixedActions");<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.620"></a>
+<span class="sourceLineNo">621</span><a name="line.621"></a>
+<span class="sourceLineNo">622</span>    // Load some data to start<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    Object[] results = new Object[puts.size()];<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    table.batch(puts, results);<a name="line.625"></a>
+<span class="sourceLineNo">626</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.626"></a>
+<span class="sourceLineNo">627</span><a name="line.627"></a>
+<span class="sourceLineNo">628</span>    // Batch: get, get, put(new col), delete, get, get of put, get of deleted,<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    // put<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    List&lt;Row&gt; actions = new ArrayList&lt;&gt;();<a name="line.630"></a>
+<span class="sourceLineNo">631</span><a name="line.631"></a>
+<span class="sourceLineNo">632</span>    byte[] qual2 = Bytes.toBytes("qual2");<a name="line.632"></a>
+<span class="sourceLineNo">633</span>    byte[] val2 = Bytes.toBytes("putvalue2");<a name="line.633"></a>
+<span class="sourceLineNo">634</span><a name="line.634"></a>
+<span class="sourceLineNo">635</span>    // 0 get<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    Get get = new Get(KEYS[10]);<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.637"></a>
+<span class="sourceLineNo">638</span>    actions.add(get);<a name="line.638"></a>
+<span class="sourceLineNo">639</span><a name="line.639"></a>
+<span class="sourceLineNo">640</span>    // 1 get<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    get = new Get(KEYS[11]);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    actions.add(get);<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>    // 2 put of new column<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    Put put = new Put(KEYS[10]);<a name="line.646"></a>
+<span class="sourceLineNo">647</span>    put.addColumn(BYTES_FAMILY, qual2, val2);<a name="line.647"></a>
+<span class="sourceLineNo">648</span>    actions.add(put);<a name="line.648"></a>
+<span class="sourceLineNo">649</span><a name="line.649"></a>
+<span class="sourceLineNo">650</span>    // 3 delete<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    Delete delete = new Delete(KEYS[20]);<a name="line.651"></a>
+<span class="sourceLineNo">652</span>    delete.addFamily(BYTES_FAMILY);<a name="line.652"></a>
+<span class="sourceLineNo">653</span>    actions.add(delete);<a name="line.653"></a>
+<span class="sourceLineNo">654</span><a name="line.654"></a>
+<span class="sourceLineNo">655</span>    // 4 get<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    get = new Get(KEYS[30]);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    actions.add(get);<a name="line.658"></a>
+<span class="sourceLineNo">659</span><a name="line.659"></a>
+<span class="sourceLineNo">660</span>    // There used to be a 'get' of a previous put here, but removed<a name="line.660"></a>
+<span class="sourceLineNo">661</span>    // since this API really cannot guarantee order in terms of mixed<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    // get/puts.<a name="line.662"></a>
+<span class="sourceLineNo">663</span><a name="line.663"></a>
+<span class="sourceLineNo">664</span>    // 5 put of new column<a name="line.664"></a>
+<span class="sourceLineNo">665</span>    put = new Put(KEYS[40]);<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    put.addColumn(BYTES_FAMILY, qual2, val2);<a name="line.666"></a>
+<span class="sourceLineNo">667</span>    actions.add(put);<a name="line.667"></a>
+<span class="sourceLineNo">668</span><a name="line.668"></a>
+<span class="sourceLineNo">669</span>    // 6 RowMutations<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    RowMutations rm = new RowMutations(KEYS[50]);<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    put = new Put(KEYS[50]);<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    put.addColumn(BYTES_FAMILY, qual2, val2);<a name="line.672"></a>
+<span class="sourceLineNo">673</span>    rm.add(put);<a name="line.673"></a>
+<span class="sourceLineNo">674</span>    byte[] qual3 = Bytes.toBytes("qual3");<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    byte[] val3 = Bytes.toBytes("putvalue3");<a name="line.675"></a>
+<span class="sourceLineNo">676</span>    put = new Put(KEYS[50]);<a name="line.676"></a>
+<span class="sourceLineNo">677</span>    put.addColumn(BYTES_FAMILY, qual3, val3);<a name="line.677"></a>
+<span class="sourceLineNo">678</span>    rm.add(put);<a name="line.678"></a>
+<span class="sourceLineNo">679</span>    actions.add(rm);<a name="line.679"></a>
+<span class="sourceLineNo">680</span><a name="line.680"></a>
+<span class="sourceLineNo">681</span>    // 7 Add another Get to the mixed sequence after RowMutations<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    get = new Get(KEYS[10]);<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    actions.add(get);<a name="line.684"></a>
+<span class="sourceLineNo">685</span><a name="line.685"></a>
+<span class="sourceLineNo">686</span>    results = new Object[actions.size()];<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    table.batch(actions, results);<a name="line.687"></a>
+<span class="sourceLineNo">688</span><a name="line.688"></a>
+<span class="sourceLineNo">689</span>    // Validation<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>    validateResult(results[0]);<a name="line.691"></a>
+<span class="sourceLineNo">692</span>    validateResult(results[1]);<a name="line.692"></a>
+<span class="sourceLineNo">693</span>    validateEmpty(results[3]);<a name="line.693"></a>
+<span class="sourceLineNo">694</span>    validateResult(results[4]);<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    validateEmpty(results[5]);<a name="line.695"></a>
+<span class="sourceLineNo">696</span>    validateEmpty(results[6]);<a name="line.696"></a>
+<span class="sourceLineNo">697</span>    validateResult(results[7]);<a name="line.697"></a>
+<span class="sourceLineNo">698</span><a name="line.698"></a>
+<span class="sourceLineNo">699</span>    // validate last put, externally from the batch<a name="line.699"></a>
+<span class="sourceLineNo">700</span>    get = new Get(KEYS[40]);<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    get.addColumn(BYTES_FAMILY, qual2);<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    Result r = table.get(get);<a name="line.702"></a>
+<span class="sourceLineNo">703</span>    validateResult(r, qual2, val2);<a name="line.703"></a>
+<span class="sourceLineNo">704</span><a name="line.704"></a>
+<span class="sourceLineNo">705</span>    // validate last RowMutations, externally from the batch<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    get = new Get(KEYS[50]);<a name="line.706"></a>
+<span class="sourceLineNo">707</span>    get.addColumn(BYTES_FAMILY, qual2);<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    r = table.get(get);<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    validateResult(r, qual2, val2);<a name="line.709"></a>
+<span class="sourceLineNo">710</span><a name="line.710"></a>
+<span class="sourceLineNo">711</span>    get = new Get(KEYS[50]);<a name="line.711"></a>
+<span class="sourceLineNo">712</span>    get.addColumn(BYTES_FAMILY, qual3);<a name="line.712"></a>
+<span class="sourceLineNo">713</span>    r = table.get(get);<a name="line.713"></a>
+<span class="sourceLineNo">714</span>    validateResult(r, qual3, val3);<a name="line.714"></a>
+<span class="sourceLineNo">715</span><a name="line.715"></a>
+<span class="sourceLineNo">716</span>    table.close();<a name="line.716"></a>
+<span class="sourceLineNo">717</span>  }<a name="line.717"></a>
+<span class="sourceLineNo">718</span><a name="line.718"></a>
+<span class="sourceLineNo">719</span>  // // Helper methods ////<a name="line.719"></a>
+<span class="sourceLineNo">720</span><a name="line.720"></a>
+<span class="sourceLineNo">721</span>  private void validateResult(Object r) {<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    validateResult(r, QUALIFIER, VALUE);<a name="line.722"></a>
+<span class="sourceLineNo">723</span>  }<a name="line.723"></a>
+<span class="sourceLineNo">724</span><a name="line.724"></a>
+<span class="sourceLineNo">725</span>  private void validateResult(Object r1, byte[] qual, byte[] val) {<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    Result r = (Result)r1;<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    Assert.assertTrue(r.containsColumn(BYTES_FAMILY, qual));<a name="line.727"></a>
+<span class="sourceLineNo">728</span>    byte[] value = r.getValue(BYTES_FAMILY, qual);<a name="line.728"></a>
+<span class="sourceLineNo">729</span>    if (0 != Bytes.compareTo(val, value)) {<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      fail("Expected [" + Bytes.toStringBinary(val)<a name="line.730"></a>
+<span class="sourceLineNo">731</span>          + "] but got [" + Bytes.toStringBinary(value) + "]");<a name="line.731"></a>
+<span class="sourceLineNo">732</span>    }<a name="line.732"></a>
+<span class="sourceLineNo">733</span>  }<a name="line.733"></a>
+<span class="sourceLineNo">734</span><a name="line.734"></a>
+<span class="sourceLineNo">735</span>  private List&lt;Put&gt; constructPutRequests() {<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    for (byte[] k : KEYS) {<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      Put put = new Put(k);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>      put.addColumn(BYTES_FAMILY, QUALIFIER, VALUE);<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      puts.add(put);<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    }<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    return puts;<a name="line.742"></a>
+<span class="sourceLineNo">743</span>  }<a name="line.743"></a>
+<span class="sourceLineNo">744</span><a name="line.744"></a>
+<span class="sourceLineNo">745</span>  private void validateLoadedData(Table table) throws IOException {<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    // get the data back and validate that it is correct<a name="line.746"></a>
+<span class="sourceLineNo">747</span>    LOG.info("Validating data on " + table);<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    List&lt;Get&gt; gets = new ArrayList&lt;&gt;();<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    for (byte[] k : KEYS) {<a name="line.749"></a>
+<span class="sourceLineNo">750</span>      Get get = new Get(k);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>      get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.751"></a>
+<span class="sourceLineNo">752</span>      gets.add(get);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>    }<a name="line.753"></a>
+<span class="sourceLineNo">754</span>    int retryNum = 10;<a name="line.754"></a>
+<span class="sourceLineNo">755</span>    Result[] results = null;<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    do  {<a name="line.756"></a>
+<span class="sourceLineNo">757</span>      results = table.get(gets);<a name="line.757"></a>
+<span class="sourceLineNo">758</span>      boolean finished = true;<a name="line.758"></a>
+<span class="sourceLineNo">759</span>      for (Result result : results) {<a name="line.759"></a>
+<span class="sourceLineNo">760</span>        if (result.isEmpty()) {<a name="line.760"></a>
+<span class="sourceLineNo">761</span>          finished = false;<a name="line.761"></a>
+<span class="sourceLineNo">762</span>          break;<a name="line.762"></a>
+<span class="sourceLineNo">763</span>        }<a name="line.763"></a>
+<span class="sourceLineNo">764</span>      }<a name="line.764"></a>
+<span class="sourceLineNo">765</span>      if (finished) {<a name="line.765"></a>
+<span class="sourceLineNo">766</span>        break;<a name="line.766"></a>
+<span class="sourceLineNo">767</span>      }<a name="line.767"></a>
+<span class="sourceLineNo">768</span>      try {<a name="line.768"></a>
+<span class="sourceLineNo">769</span>        Thread.sleep(10);<a name="line.769"></a>
+<span class="sourceLineNo">770</span>      } catch (InterruptedException e) {<a name="line.770"></a>
+<span class="sourceLineNo">771</span>      }<a name="line.771"></a>
+<span class="sourceLineNo">772</span>      retryNum--;<a name="line.772"></a>
+<span class="sourceLineNo">773</span>    } while (retryNum &gt; 0);<a name="line.773"></a>
+<span class="sourceLineNo">774</span><a name="line.774"></a>
+<span class="sourceLineNo">775</span>    if (retryNum == 0) {<a name="line.775"></a>
+<span class="sourceLineNo">776</span>      fail("Timeout for validate data");<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    } else {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      if (results != null) {<a name="line.778"></a>
+<span class="sourceLineNo">779</span>        for (Result r : results) {<a name="line.779"></a>
+<span class="sourceLineNo">780</span>          Assert.assertTrue(r.containsColumn(BYTES_FAMILY, QUALIFIER));<a name="line.780"></a>
+<span class="sourceLineNo">781</span>          Assert.assertEquals(0, Bytes.compareTo(VALUE, r<a name="line.781"></a>
+<span class="sourceLineNo">782</span>            .getValue(BYTES_FAMILY, QUALIFIER)));<a name="line.782"></a>
+<span class="sourceLineNo">783</span>        }<a name="line.783"></a>
+<span class="sourceLineNo">784</span>        LOG.info("Validating data on " + table + " successfully!");<a name="line.784"></a>
+<span class="sourceLineNo">785</span>      }<a name="line.785"></a>
+<span class="sourceLineNo">786</span>    }<a name="line.786"></a>
+<span class="sourceLineNo">787</span>  }<a name="line.787"></a>
+<span class="sourceLineNo">788</span><a name="line.788"></a>
+<span class="sourceLineNo">789</span>  private void validateEmpty(Object r1) {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>    Result result = (Result)r1;<a name="line.790"></a>
+<span class="sourceLineNo">791</span>    Assert.assertTrue(result != null);<a name="line.791"></a>
+<span class="sourceLineNo">792</span>    Assert.assertTrue(result.isEmpty());<a name="line.792"></a>
+<span class="sourceLineNo">793</span>  }<a name="line.793"></a>
+<span class="sourceLineNo">794</span><a name="line.794"></a>
+<span class="sourceLineNo">795</span>  private void validateSizeAndEmpty(Object[] results, int expectedSize) {<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    // Validate got back the same number of Result objects, all empty<a name="line.796"></a>
+<span class="sourceLineNo">797</span>    Assert.assertEquals(expectedSize, results.length);<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    for (Object result : results) {<a name="line.798"></a>
+<span class="sourceLineNo">799</span>      validateEmpty(result);<a name="line.799"></a>
+<span class="sourceLineNo">800</span>    }<a name="line.800"></a>
+<span class="sourceLineNo">801</span>  }<a name="line.801"></a>
+<span class="sourceLineNo">802</span><a name="line.802"></a>
+<span class="sourceLineNo">803</span>  public static class MyMasterObserver implements MasterObserver, MasterCoprocessor {<a name="line.803"></a>
+<span class="sourceLineNo">804</span>    private static final AtomicInteger postBalanceCount = new AtomicInteger(0);<a name="line.804"></a>
+<span class="sourceLineNo">805</span>    private static final AtomicBoolean start = new AtomicBoolean(false);<a name="line.805"></a>
+<span class="sourceLineNo">806</span><a name="line.806"></a>
+<span class="sourceLineNo">807</span>    @Override<a name="line.807"></a>
+<span class="sourceLineNo">808</span>    public void start(CoprocessorEnvironment env) throws IOException {<a name="line.808"></a>
+<span class="sourceLineNo">809</span>      start.set(true);<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>    @Override<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    public Optional&lt;MasterObserver&gt; getMasterObserver() {<a name="line.813"></a>
+<span class="sourceLineNo">814</span>      return Optional.of(this);<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    }<a name="line.815"></a>
+<span class="sourceLineNo">816</span><a name="line.816"></a>
+<span class="sourceLineNo">817</span>    @Override<a name="line.817"></a>
+<span class="sourceLineNo">818</span>    public void postBalance(final ObserverContext&lt;MasterCoprocessorEnvironment&gt; ctx,<a name="line.818"></a>
+<span class="sourceLineNo">819</span>        List&lt;RegionPlan&gt; plans) throws IOException {<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      if (!plans.isEmpty()) {<a name="line.820"></a>
+<span class="sourceLineNo">821</span>        postBalanceCount.incrementAndGet();<a name="line.821"></a>
+<span class="sourceLineNo">822</span>      }<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    }<a name="line.823"></a>
+<span class="sourceLineNo">824</span>  }<a name="line.824"></a>
+<span class="sourceLineNo">825</span>}<a name="line.825"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html
index 6cf82f8..66f3dc6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html
@@ -86,422 +86,424 @@
 <span class="sourceLineNo">078</span>  private final AtomicInteger undealtMutationCount = new AtomicInteger(0);<a name="line.78"></a>
 <span class="sourceLineNo">079</span>  private final long writeBufferSize;<a name="line.79"></a>
 <span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private long  writeBufferPeriodicFlushTimeoutMs;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private long  writeBufferPeriodicFlushTimerTickMs = MIN_WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private Timer writeBufferPeriodicFlushTimer = null;<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private final int maxKeyValueSize;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  private final ExecutorService pool;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private final AtomicInteger rpcTimeout;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  private final AtomicInteger operationTimeout;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private final boolean cleanupPoolOnClose;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private volatile boolean closed = false;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private final AsyncProcess ap;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  @VisibleForTesting<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  BufferedMutatorImpl(ClusterConnection conn, BufferedMutatorParams params, AsyncProcess ap) {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    if (conn == null || conn.isClosed()) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      throw new IllegalArgumentException("Connection is null or closed.");<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    this.tableName = params.getTableName();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    this.conf = conn.getConfiguration();<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    this.listener = params.getListener();<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    if (params.getPool() == null) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      this.pool = HTable.getDefaultExecutor(conf);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      cleanupPoolOnClose = true;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    } else {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      this.pool = params.getPool();<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      cleanupPoolOnClose = false;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    ConnectionConfiguration tableConf = new ConnectionConfiguration(conf);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    this.writeBufferSize =<a name="line.109"></a>
-<span class="sourceLineNo">110</span>            params.getWriteBufferSize() != UNSET ?<a name="line.110"></a>
-<span class="sourceLineNo">111</span>            params.getWriteBufferSize() : tableConf.getWriteBufferSize();<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>    // Set via the setter because it does value validation and starts/stops the TimerTask<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    long newWriteBufferPeriodicFlushTimeoutMs =<a name="line.114"></a>
-<span class="sourceLineNo">115</span>            params.getWriteBufferPeriodicFlushTimeoutMs() != UNSET<a name="line.115"></a>
-<span class="sourceLineNo">116</span>              ? params.getWriteBufferPeriodicFlushTimeoutMs()<a name="line.116"></a>
-<span class="sourceLineNo">117</span>              : tableConf.getWriteBufferPeriodicFlushTimeoutMs();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    long newWriteBufferPeriodicFlushTimerTickMs =<a name="line.118"></a>
-<span class="sourceLineNo">119</span>            params.getWriteBufferPeriodicFlushTimerTickMs() != UNSET<a name="line.119"></a>
-<span class="sourceLineNo">120</span>              ? params.getWriteBufferPeriodicFlushTimerTickMs()<a name="line.120"></a>
-<span class="sourceLineNo">121</span>              : tableConf.getWriteBufferPeriodicFlushTimerTickMs();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    this.setWriteBufferPeriodicFlush(<a name="line.122"></a>
-<span class="sourceLineNo">123</span>            newWriteBufferPeriodicFlushTimeoutMs,<a name="line.123"></a>
-<span class="sourceLineNo">124</span>            newWriteBufferPeriodicFlushTimerTickMs);<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>    this.maxKeyValueSize =<a name="line.126"></a>
-<span class="sourceLineNo">127</span>            params.getMaxKeyValueSize() != UNSET ?<a name="line.127"></a>
-<span class="sourceLineNo">128</span>            params.getMaxKeyValueSize() : tableConf.getMaxKeyValueSize();<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    this.rpcTimeout = new AtomicInteger(<a name="line.130"></a>
-<span class="sourceLineNo">131</span>            params.getRpcTimeout() != UNSET ?<a name="line.131"></a>
-<span class="sourceLineNo">132</span>            params.getRpcTimeout() : conn.getConnectionConfiguration().getWriteRpcTimeout());<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>    this.operationTimeout = new AtomicInteger(<a name="line.134"></a>
-<span class="sourceLineNo">135</span>            params.getOperationTimeout() != UNSET ?<a name="line.135"></a>
-<span class="sourceLineNo">136</span>            params.getOperationTimeout() : conn.getConnectionConfiguration().getOperationTimeout());<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    this.ap = ap;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  BufferedMutatorImpl(ClusterConnection conn, RpcRetryingCallerFactory rpcCallerFactory,<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      RpcControllerFactory rpcFactory, BufferedMutatorParams params) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    this(conn, params,<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      // puts need to track errors globally due to how the APIs currently work.<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      new AsyncProcess(conn, conn.getConfiguration(), rpcCallerFactory, true, rpcFactory));<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @VisibleForTesting<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  ExecutorService getPool() {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    return pool;<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>  @VisibleForTesting<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  AsyncProcess getAsyncProcess() {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    return ap;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>  @Override<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  public TableName getName() {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    return tableName;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  @Override<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  public Configuration getConfiguration() {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return conf;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  @Override<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public void mutate(Mutation m) throws InterruptedIOException,<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      RetriesExhaustedWithDetailsException {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    mutate(Collections.singletonList(m));<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  @Override<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public void mutate(List&lt;? extends Mutation&gt; ms) throws InterruptedIOException,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      RetriesExhaustedWithDetailsException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>    if (closed) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      throw new IllegalStateException("Cannot put when the BufferedMutator is closed.");<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>    long toAddSize = 0;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    int toAddCount = 0;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    for (Mutation m : ms) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      if (m instanceof Put) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        validatePut((Put) m);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      toAddSize += m.heapSize();<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      ++toAddCount;<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 (currentWriteBufferSize.get() == 0) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      firstRecordInBufferTimestamp = System.currentTimeMillis();<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>    // This behavior is highly non-intuitive... it does not protect us against<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // 94-incompatible behavior, which is a timing issue because hasError, the below code<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // and setter of hasError are not synchronized. Perhaps it should be removed.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    if (ap.hasError()) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      currentWriteBufferSize.addAndGet(toAddSize);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      writeAsyncBuffer.addAll(ms);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      undealtMutationCount.addAndGet(toAddCount);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      backgroundFlushCommits(true);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    } else {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      currentWriteBufferSize.addAndGet(toAddSize);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      writeAsyncBuffer.addAll(ms);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      undealtMutationCount.addAndGet(toAddCount);<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>    // Now try and queue what needs to be queued.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    while (undealtMutationCount.get() != 0<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        &amp;&amp; currentWriteBufferSize.get() &gt; writeBufferSize) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      backgroundFlushCommits(false);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  @VisibleForTesting<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  protected long getExecutedWriteBufferPeriodicFlushes() {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    return executedWriteBufferPeriodicFlushes;<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>  private long firstRecordInBufferTimestamp = 0;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private long executedWriteBufferPeriodicFlushes = 0;<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  private void timerCallbackForWriteBufferPeriodicFlush() {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    if (currentWriteBufferSize.get() == 0) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      return; // Nothing to flush<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    long now = System.currentTimeMillis();<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    if (firstRecordInBufferTimestamp + writeBufferPeriodicFlushTimeoutMs &gt; now) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      return; // No need to flush yet<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    // The first record in the writebuffer has been in there too long --&gt; flush<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    try {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      executedWriteBufferPeriodicFlushes++;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      flush();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    } catch (InterruptedIOException | RetriesExhaustedWithDetailsException e) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      LOG.error("Exception during timerCallbackForWriteBufferPeriodicFlush --&gt; " + e.getMessage());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  // validate for well-formedness<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public void validatePut(final Put put) throws IllegalArgumentException {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    HTable.validatePut(put, maxKeyValueSize);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>  @Override<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  public synchronized void close() throws IOException {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    try {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (this.closed) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        return;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>      // Stop any running Periodic Flush timer.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      disableWriteBufferPeriodicFlush();<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>      // As we can have an operation in progress even if the buffer is empty, we call<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      // backgroundFlushCommits at least one time.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      backgroundFlushCommits(true);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (cleanupPoolOnClose) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        this.pool.shutdown();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        boolean terminated;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        int loopCnt = 0;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        do {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          // wait until the pool has terminated<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          terminated = this.pool.awaitTermination(60, TimeUnit.SECONDS);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          loopCnt += 1;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          if (loopCnt &gt;= 10) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>            LOG.warn("close() failed to terminate pool after 10 minutes. Abandoning pool.");<a name="line.267"></a>
-<span class="sourceLineNo">268</span>            break;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>          }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        } while (!terminated);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    } catch (InterruptedException e) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      LOG.warn("waitForTermination interrupted");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } finally {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      this.closed = true;<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><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  @Override<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public synchronized void flush() throws InterruptedIOException,<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      RetriesExhaustedWithDetailsException {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // As we can have an operation in progress even if the buffer is empty, we call<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    // backgroundFlushCommits at least one time.<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    backgroundFlushCommits(true);<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>   * Send the operations in the buffer to the servers. Does not wait for the server's answer. If<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * the is an error (max retried reach from a previous flush or bad operation), it tries to send<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * all operations in the buffer and sends an exception.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   *<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @param synchronous - if true, sends all the writes and wait for all of them to finish before<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   *        returning.<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   */<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  private void backgroundFlushCommits(boolean synchronous) throws<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      InterruptedIOException,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      RetriesExhaustedWithDetailsException {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    if (!synchronous &amp;&amp; writeAsyncBuffer.isEmpty()) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      return;<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>    if (!synchronous) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      QueueRowAccess taker = new QueueRowAccess();<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      AsyncProcessTask task = wrapAsyncProcessTask(taker);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      try {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        ap.submit(task);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        if (ap.hasError()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          LOG.debug(tableName + ": One or more of the operations have failed -"<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              + " waiting for all operation in progress to finish (successfully or not)");<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      } finally {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        taker.restoreRemainder();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    if (synchronous || ap.hasError()) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      QueueRowAccess taker = new QueueRowAccess();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      AsyncProcessTask task = wrapAsyncProcessTask(taker);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      try {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        while (!taker.isEmpty()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          ap.submit(task);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>          taker.reset();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      } finally {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>        taker.restoreRemainder();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      RetriesExhaustedWithDetailsException error =<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          ap.waitForAllPreviousOpsAndReset(null, tableName);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      if (error != null) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        if (listener == null) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          throw error;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        } else {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          this.listener.onException(error, this);<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>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>  /**<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * Reuse the AsyncProcessTask when calling<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * {@link BufferedMutatorImpl#backgroundFlushCommits(boolean)}.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * @param taker access the inner buffer.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * @return An AsyncProcessTask which always returns the latest rpc and operation timeout.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private AsyncProcessTask wrapAsyncProcessTask(QueueRowAccess taker) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        .setPool(pool)<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        .setTableName(tableName)<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        .setRowAccess(taker)<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        .setSubmittedRows(AsyncProcessTask.SubmittedRows.AT_LEAST_ONE)<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        .build();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return new AsyncProcessTask(task) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      @Override<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      public int getRpcTimeout() {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return rpcTimeout.get();<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>      @Override<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      public int getOperationTimeout() {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        return operationTimeout.get();<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><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  /**<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * {@inheritDoc}<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  @Override<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public long getWriteBufferSize() {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    return this.writeBufferSize;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  public void setWriteBufferPeriodicFlush(long timeoutMs, long timerTickMs) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    long originalTimeoutMs   = this.writeBufferPeriodicFlushTimeoutMs;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    long originalTimerTickMs = this.writeBufferPeriodicFlushTimerTickMs;<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span>    // Both parameters have minimal values.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    this.writeBufferPeriodicFlushTimeoutMs   = Math.max(0, timeoutMs);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    this.writeBufferPeriodicFlushTimerTickMs =<a name="line.379"></a>
-<span class="sourceLineNo">380</span>            Math.max(MIN_WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS, timerTickMs);<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    // If something changed we stop the old Timer.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    if (this.writeBufferPeriodicFlushTimeoutMs   != originalTimeoutMs  ||<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        this.writeBufferPeriodicFlushTimerTickMs != originalTimerTickMs) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      if (writeBufferPeriodicFlushTimer != null) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        writeBufferPeriodicFlushTimer.cancel();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        writeBufferPeriodicFlushTimer = null;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      }<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    }<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // If we have the need for a timer and there is none we start it<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    if (writeBufferPeriodicFlushTimer == null &amp;&amp;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        writeBufferPeriodicFlushTimeoutMs &gt; 0) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      writeBufferPeriodicFlushTimer = new Timer(true); // Create Timer running as Daemon.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      writeBufferPeriodicFlushTimer.schedule(new TimerTask() {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        public void run() {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          BufferedMutatorImpl.this.timerCallbackForWriteBufferPeriodicFlush();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      }, writeBufferPeriodicFlushTimerTickMs, writeBufferPeriodicFlushTimerTickMs);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  @Override<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  public long getWriteBufferPeriodicFlushTimeoutMs() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    return this.writeBufferPeriodicFlushTimeoutMs;<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>  @Override<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  public long getWriteBufferPeriodicFlushTimerTickMs() {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    return this.writeBufferPeriodicFlushTimerTickMs;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  @Override<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  public void setRpcTimeout(int rpcTimeout) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    this.rpcTimeout.set(rpcTimeout);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>  @Override<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  public void setOperationTimeout(int operationTimeout) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    this.operationTimeout.set(operationTimeout);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  @VisibleForTesting<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  long getCurrentWriteBufferSize() {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    return currentWriteBufferSize.get();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  @VisibleForTesting<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  int size() {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return undealtMutationCount.get();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  }<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  private class QueueRowAccess implements RowAccess&lt;Row&gt; {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    private int remainder = undealtMutationCount.getAndSet(0);<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    void reset() {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      restoreRemainder();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      remainder = undealtMutationCount.getAndSet(0);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    public Iterator&lt;Row&gt; iterator() {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      return new Iterator&lt;Row&gt;() {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        private final Iterator&lt;Mutation&gt; iter = writeAsyncBuffer.iterator();<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        private int countDown = remainder;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        private Mutation last = null;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        @Override<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        public boolean hasNext() {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          if (countDown &lt;= 0) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>            return false;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>          return iter.hasNext();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>        @Override<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        public Row next() {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          if (!hasNext()) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>            throw new NoSuchElementException();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          }<a name="line.459"></a>
-<span class="sourceLineNo">460</span>          last = iter.next();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          if (last == null) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>            throw new NoSuchElementException();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>          }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          --countDown;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          return last;<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        public void remove() {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          if (last == null) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>            throw new IllegalStateException();<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          iter.remove();<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          currentWriteBufferSize.addAndGet(-last.heapSize());<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          --remainder;<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><a name="line.478"></a>
-<span class="sourceLineNo">479</span>    @Override<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    public int size() {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      return remainder;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>    void restoreRemainder() {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      if (remainder &gt; 0) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        undealtMutationCount.addAndGet(remainder);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        remainder = 0;<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>    @Override<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    public boolean isEmpty() {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return remainder &lt;= 0;<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">081</span>  private final AtomicLong writeBufferPeriodicFlushTimeoutMs = new AtomicLong(0);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  private final AtomicLong writeBufferPeriodicFlushTimerTickMs =<a name="line.82"></a>
+<span class="sourceLineNo">083</span>          new AtomicLong(MIN_WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private Timer writeBufferPeriodicFlushTimer = null;<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private final int maxKeyValueSize;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private final ExecutorService pool;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private final AtomicInteger rpcTimeout;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  private final AtomicInteger operationTimeout;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private final boolean cleanupPoolOnClose;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private volatile boolean closed = false;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private final AsyncProcess ap;<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  @VisibleForTesting<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  BufferedMutatorImpl(ClusterConnection conn, BufferedMutatorParams params, AsyncProcess ap) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    if (conn == null || conn.isClosed()) {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      throw new IllegalArgumentException("Connection is null or closed.");<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    this.tableName = params.getTableName();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    this.conf = conn.getConfiguration();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    this.listener = params.getListener();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    if (params.getPool() == null) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      this.pool = HTable.getDefaultExecutor(conf);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      cleanupPoolOnClose = true;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    } else {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      this.pool = params.getPool();<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      cleanupPoolOnClose = false;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    ConnectionConfiguration tableConf = new ConnectionConfiguration(conf);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    this.writeBufferSize =<a name="line.110"></a>
+<span class="sourceLineNo">111</span>            params.getWriteBufferSize() != UNSET ?<a name="line.111"></a>
+<span class="sourceLineNo">112</span>            params.getWriteBufferSize() : tableConf.getWriteBufferSize();<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    // Set via the setter because it does value validation and starts/stops the TimerTask<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    long newWriteBufferPeriodicFlushTimeoutMs =<a name="line.115"></a>
+<span class="sourceLineNo">116</span>            params.getWriteBufferPeriodicFlushTimeoutMs() != UNSET<a name="line.116"></a>
+<span class="sourceLineNo">117</span>              ? params.getWriteBufferPeriodicFlushTimeoutMs()<a name="line.117"></a>
+<span class="sourceLineNo">118</span>              : tableConf.getWriteBufferPeriodicFlushTimeoutMs();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    long newWriteBufferPeriodicFlushTimerTickMs =<a name="line.119"></a>
+<span class="sourceLineNo">120</span>            params.getWriteBufferPeriodicFlushTimerTickMs() != UNSET<a name="line.120"></a>
+<span class="sourceLineNo">121</span>              ? params.getWriteBufferPeriodicFlushTimerTickMs()<a name="line.121"></a>
+<span class="sourceLineNo">122</span>              : tableConf.getWriteBufferPeriodicFlushTimerTickMs();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    this.setWriteBufferPeriodicFlush(<a name="line.123"></a>
+<span class="sourceLineNo">124</span>            newWriteBufferPeriodicFlushTimeoutMs,<a name="line.124"></a>
+<span class="sourceLineNo">125</span>            newWriteBufferPeriodicFlushTimerTickMs);<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>    this.maxKeyValueSize =<a name="line.127"></a>
+<span class="sourceLineNo">128</span>            params.getMaxKeyValueSize() != UNSET ?<a name="line.128"></a>
+<span class="sourceLineNo">129</span>            params.getMaxKeyValueSize() : tableConf.getMaxKeyValueSize();<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>    this.rpcTimeout = new AtomicInteger(<a name="line.131"></a>
+<span class="sourceLineNo">132</span>            params.getRpcTimeout() != UNSET ?<a name="line.132"></a>
+<span class="sourceLineNo">133</span>            params.getRpcTimeout() : conn.getConnectionConfiguration().getWriteRpcTimeout());<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>    this.operationTimeout = new AtomicInteger(<a name="line.135"></a>
+<span class="sourceLineNo">136</span>            params.getOperationTimeout() != UNSET ?<a name="line.136"></a>
+<span class="sourceLineNo">137</span>            params.getOperationTimeout() : conn.getConnectionConfiguration().getOperationTimeout());<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    this.ap = ap;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  }<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  BufferedMutatorImpl(ClusterConnection conn, RpcRetryingCallerFactory rpcCallerFactory,<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      RpcControllerFactory rpcFactory, BufferedMutatorParams params) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    this(conn, params,<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      // puts need to track errors globally due to how the APIs currently work.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      new AsyncProcess(conn, conn.getConfiguration(), rpcCallerFactory, true, rpcFactory));<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @VisibleForTesting<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  ExecutorService getPool() {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    return pool;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  @VisibleForTesting<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  AsyncProcess getAsyncProcess() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    return ap;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  @Override<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  public TableName getName() {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    return tableName;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  public Configuration getConfiguration() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    return conf;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>  @Override<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  public void mutate(Mutation m) throws InterruptedIOException,<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      RetriesExhaustedWithDetailsException {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    mutate(Collections.singletonList(m));<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  public void mutate(List&lt;? extends Mutation&gt; ms) throws InterruptedIOException,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      RetriesExhaustedWithDetailsException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>    if (closed) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      throw new IllegalStateException("Cannot put when the BufferedMutator is closed.");<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>    long toAddSize = 0;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    int toAddCount = 0;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    for (Mutation m : ms) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      if (m instanceof Put) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        validatePut((Put) m);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      toAddSize += m.heapSize();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      ++toAddCount;<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 (currentWriteBufferSize.get() == 0) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      firstRecordInBufferTimestamp.set(System.currentTimeMillis());<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>    // This behavior is highly non-intuitive... it does not protect us against<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 94-incompatible behavior, which is a timing issue because hasError, the below code<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // and setter of hasError are not synchronized. Perhaps it should be removed.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    if (ap.hasError()) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      currentWriteBufferSize.addAndGet(toAddSize);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      writeAsyncBuffer.addAll(ms);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      undealtMutationCount.addAndGet(toAddCount);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      backgroundFlushCommits(true);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    } else {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      currentWriteBufferSize.addAndGet(toAddSize);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      writeAsyncBuffer.addAll(ms);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      undealtMutationCount.addAndGet(toAddCount);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>    // Now try and queue what needs to be queued.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    while (undealtMutationCount.get() != 0<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        &amp;&amp; currentWriteBufferSize.get() &gt; writeBufferSize) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      backgroundFlushCommits(false);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>  @VisibleForTesting<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  protected long getExecutedWriteBufferPeriodicFlushes() {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    return executedWriteBufferPeriodicFlushes.get();<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 final AtomicLong firstRecordInBufferTimestamp = new AtomicLong(0);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  private final AtomicLong executedWriteBufferPeriodicFlushes = new AtomicLong(0);<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private void timerCallbackForWriteBufferPeriodicFlush() {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    if (currentWriteBufferSize.get() == 0) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      return; // Nothing to flush<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    long now = System.currentTimeMillis();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    if (firstRecordInBufferTimestamp.get() + writeBufferPeriodicFlushTimeoutMs.get() &gt; now) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      return; // No need to flush yet<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    // The first record in the writebuffer has been in there too long --&gt; flush<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    try {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      executedWriteBufferPeriodicFlushes.incrementAndGet();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      flush();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    } catch (InterruptedIOException | RetriesExhaustedWithDetailsException e) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      LOG.error("Exception during timerCallbackForWriteBufferPeriodicFlush --&gt; " + e.getMessage());<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><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  // validate for well-formedness<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  public void validatePut(final Put put) throws IllegalArgumentException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    HTable.validatePut(put, maxKeyValueSize);<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>  @Override<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public synchronized void close() throws IOException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    try {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      if (this.closed) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        return;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>      // Stop any running Periodic Flush timer.<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      disableWriteBufferPeriodicFlush();<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>      // As we can have an operation in progress even if the buffer is empty, we call<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      // backgroundFlushCommits at least one time.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      backgroundFlushCommits(true);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      if (cleanupPoolOnClose) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        this.pool.shutdown();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        boolean terminated;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        int loopCnt = 0;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        do {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          // wait until the pool has terminated<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          terminated = this.pool.awaitTermination(60, TimeUnit.SECONDS);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          loopCnt += 1;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          if (loopCnt &gt;= 10) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            LOG.warn("close() failed to terminate pool after 10 minutes. Abandoning pool.");<a name="line.268"></a>
+<span class="sourceLineNo">269</span>            break;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        } while (!terminated);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    } catch (InterruptedException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      LOG.warn("waitForTermination interrupted");<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    } finally {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      this.closed = 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><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  @Override<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  public synchronized void flush() throws InterruptedIOException,<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      RetriesExhaustedWithDetailsException {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // As we can have an operation in progress even if the buffer is empty, we call<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // backgroundFlushCommits at least one time.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    backgroundFlushCommits(true);<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>  /**<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * Send the operations in the buffer to the servers. Does not wait for the server's answer. If<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * the is an error (max retried reach from a previous flush or bad operation), it tries to send<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * all operations in the buffer and sends an exception.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   *<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * @param synchronous - if true, sends all the writes and wait for all of them to finish before<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   *        returning.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  private void backgroundFlushCommits(boolean synchronous) throws<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      InterruptedIOException,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      RetriesExhaustedWithDetailsException {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    if (!synchronous &amp;&amp; writeAsyncBuffer.isEmpty()) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      return;<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>    if (!synchronous) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      QueueRowAccess taker = new QueueRowAccess();<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      AsyncProcessTask task = wrapAsyncProcessTask(taker);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      try {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        ap.submit(task);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        if (ap.hasError()) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>          LOG.debug(tableName + ": One or more of the operations have failed -"<a name="line.309"></a>
+<span class="sourceLineNo">310</span>              + " waiting for all operation in progress to finish (successfully or not)");<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      } finally {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        taker.restoreRemainder();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    if (synchronous || ap.hasError()) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      QueueRowAccess taker = new QueueRowAccess();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      AsyncProcessTask task = wrapAsyncProcessTask(taker);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      try {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        while (!taker.isEmpty()) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>          ap.submit(task);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>          taker.reset();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>        }<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      } finally {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        taker.restoreRemainder();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      RetriesExhaustedWithDetailsException error =<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          ap.waitForAllPreviousOpsAndReset(null, tableName);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      if (error != null) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        if (listener == null) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          throw error;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        } else {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          this.listener.onException(error, this);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /**<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * Reuse the AsyncProcessTask when calling<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * {@link BufferedMutatorImpl#backgroundFlushCommits(boolean)}.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * @param taker access the inner buffer.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * @return An AsyncProcessTask which always returns the latest rpc and operation timeout.<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  private AsyncProcessTask wrapAsyncProcessTask(QueueRowAccess taker) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        .setPool(pool)<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        .setTableName(tableName)<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        .setRowAccess(taker)<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        .setSubmittedRows(AsyncProcessTask.SubmittedRows.AT_LEAST_ONE)<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        .build();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return new AsyncProcessTask(task) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      @Override<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      public int getRpcTimeout() {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        return rpcTimeout.get();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>      @Override<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      public int getOperationTimeout() {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        return operationTimeout.get();<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    };<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">364</span><a name="line.364"></a>
+<span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * {@inheritDoc}<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  @Override<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  public long getWriteBufferSize() {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    return this.writeBufferSize;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  }<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public synchronized void setWriteBufferPeriodicFlush(long timeoutMs, long timerTickMs) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    long originalTimeoutMs   = this.writeBufferPeriodicFlushTimeoutMs.get();<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    long originalTimerTickMs = this.writeBufferPeriodicFlushTimerTickMs.get();<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>    // Both parameters have minimal values.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    writeBufferPeriodicFlushTimeoutMs.set(Math.max(0, timeoutMs));<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    writeBufferPeriodicFlushTimerTickMs.set(<a name="line.380"></a>
+<span class="sourceLineNo">381</span>            Math.max(MIN_WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS, timerTickMs));<a name="line.381"></a>
+<span class="sourceLineNo">382</span><a name="line.382"></a>
+<span class="sourceLineNo">383</span>    // If something changed we stop the old Timer.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    if (writeBufferPeriodicFlushTimeoutMs.get() != originalTimeoutMs ||<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        writeBufferPeriodicFlushTimerTickMs.get() != originalTimerTickMs) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      if (writeBufferPeriodicFlushTimer != null) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        writeBufferPeriodicFlushTimer.cancel();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        writeBufferPeriodicFlushTimer = null;<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><a name="line.391"></a>
+<span class="sourceLineNo">392</span>    // If we have the need for a timer and there is none we start it<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    if (writeBufferPeriodicFlushTimer == null &amp;&amp;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        writeBufferPeriodicFlushTimeoutMs.get() &gt; 0) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      writeBufferPeriodicFlushTimer = new Timer(true); // Create Timer running as Daemon.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      writeBufferPeriodicFlushTimer.schedule(new TimerTask() {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        @Override<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        public void run() {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>          BufferedMutatorImpl.this.timerCallbackForWriteBufferPeriodicFlush();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      }, writeBufferPeriodicFlushTimerTickMs.get(),<a name="line.401"></a>
+<span class="sourceLineNo">402</span>         writeBufferPeriodicFlushTimerTickMs.get());<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  public long getWriteBufferPeriodicFlushTimeoutMs() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    return writeBufferPeriodicFlushTimeoutMs.get();<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>  @Override<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  public long getWriteBufferPeriodicFlushTimerTickMs() {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    return writeBufferPeriodicFlushTimerTickMs.get();<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  @Override<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public void setRpcTimeout(int rpcTimeout) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    this.rpcTimeout.set(rpcTimeout);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>  @Override<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  public void setOperationTimeout(int operationTimeout) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    this.operationTimeout.set(operationTimeout);<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>  @VisibleForTesting<a name="line.426"></a>
+<span class="sourceLineNo">427</span>  long getCurrentWriteBufferSize() {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    return currentWriteBufferSize.get();<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  @VisibleForTesting<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  int size() {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    return undealtMutationCount.get();<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>  private class QueueRowAccess implements RowAccess&lt;Row&gt; {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    private int remainder = undealtMutationCount.getAndSet(0);<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>    void reset() {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      restoreRemainder();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      remainder = undealtMutationCount.getAndSet(0);<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>    @Override<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    public Iterator&lt;Row&gt; iterator() {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      return new Iterator&lt;Row&gt;() {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        private final Iterator&lt;Mutation&gt; iter = writeAsyncBuffer.iterator();<a name="line.447"></a>
+<span class="sourceLineNo">448</span>        private int countDown = remainder;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        private Mutation last = null;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>        @Override<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        public boolean hasNext() {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          if (countDown &lt;= 0) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>            return false;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>          }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>          return iter.hasNext();<a name="line.455"></a>
+<span class="sourceLineNo">456</span>        }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>        @Override<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        public Row next() {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>          if (!hasNext()) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>            throw new NoSuchElementException();<a name="line.460"></a>
+<span class="sourceLineNo">461</span>          }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>          last = iter.next();<a name="line.462"></a>
+<span class="sourceLineNo">463</span>          if (last == null) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>            throw new NoSuchElementException();<a name="line.464"></a>
+<span class="sourceLineNo">465</span>          }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>          --countDown;<a name="line.466"></a>
+<span class="sourceLineNo">467</span>          return last;<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        }<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        @Override<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        public void remove() {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>          if (last == null) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>            throw new IllegalStateException();<a name="line.472"></a>
+<span class="sourceLineNo">473</span>          }<a name="line.473"></a>
+<span class="sourceLineNo">474</span>          iter.remove();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>          currentWriteBufferSize.addAndGet(-last.heapSize());<a name="line.475"></a>
+<span class="sourceLineNo">476</span>          --remainder;<a name="line.476"></a>
+<span class="sourceLineNo">477</span>        }<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      };<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>    @Override<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    public int size() {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      return remainder;<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>    void restoreRemainder() {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      if (remainder &gt; 0) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>        undealtMutationCount.addAndGet(remainder);<a name="line.488"></a>
+<span class="sourceLineNo">489</span>        remainder = 0;<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      }<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span>    @Override<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    public boolean isEmpty() {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      return remainder &lt;= 0;<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
+<span class="sourceLineNo">498</span>}<a name="line.498"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html
index 1cb0ddb..ce37fa3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html
@@ -61,7 +61,7 @@
 <span class="sourceLineNo">053</span>public abstract class CleanerChore&lt;T extends FileCleanerDelegate&gt; extends ScheduledChore<a name="line.53"></a>
 <span class="sourceLineNo">054</span>    implements ConfigurationObserver {<a name="line.54"></a>
 <span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private static final Logger LOG = LoggerFactory.getLogger(CleanerChore.class.getName());<a name="line.56"></a>
+<span class="sourceLineNo">056</span>  private static final Logger LOG = LoggerFactory.getLogger(CleanerChore.class);<a name="line.56"></a>
 <span class="sourceLineNo">057</span>  private static final int AVAIL_PROCESSORS = Runtime.getRuntime().availableProcessors();<a name="line.57"></a>
 <span class="sourceLineNo">058</span><a name="line.58"></a>
 <span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
@@ -118,7 +118,7 @@
 <span class="sourceLineNo">110</span>      chorePoolSize = chorePoolSize == 0 ?<a name="line.110"></a>
 <span class="sourceLineNo">111</span>          calculatePoolSize(DEFAULT_CHORE_POOL_SIZE) : chorePoolSize;<a name="line.111"></a>
 <span class="sourceLineNo">112</span>      this.chorePool = new ForkJoinPool(chorePoolSize);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      LOG.info("Cleaner pool size is " + chorePoolSize);<a name="line.113"></a>
+<span class="sourceLineNo">113</span>      LOG.info("Cleaner pool size is {}", chorePoolSize);<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><a name="line.116"></a>
@@ -133,7 +133,7 @@
 <span class="sourceLineNo">125</span>      // but upmost to the number of available processors.<a name="line.125"></a>
 <span class="sourceLineNo">126</span>      int size = Math.min(Integer.valueOf(poolSize), AVAIL_PROCESSORS);<a name="line.126"></a>
 <span class="sourceLineNo">127</span>      if (size == AVAIL_PROCESSORS) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        LOG.warn("Use full core processors to scan dir, size={}" + size);<a name="line.128"></a>
+<span class="sourceLineNo">128</span>        LOG.warn("Use full core processors to scan dir, size={}", size);<a name="line.128"></a>
 <span class="sourceLineNo">129</span>      }<a name="line.129"></a>
 <span class="sourceLineNo">130</span>      return size;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    } else if (poolSize.matches("0.[0-9]+|1.0")) {<a name="line.131"></a>
@@ -165,7 +165,7 @@
 <span class="sourceLineNo">157</span>      for (String className : logCleaners) {<a name="line.157"></a>
 <span class="sourceLineNo">158</span>        T logCleaner = newFileCleaner(className, conf);<a name="line.158"></a>
 <span class="sourceLineNo">159</span>        if (logCleaner != null) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          LOG.debug("Initialize cleaner=" + className);<a name="line.160"></a>
+<span class="sourceLineNo">160</span>          LOG.debug("Initialize cleaner={}", className);<a name="line.160"></a>
 <span class="sourceLineNo">161</span>          this.cleanersChain.add(logCleaner);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>        }<a name="line.162"></a>
 <span class="sourceLineNo">163</span>      }<a name="line.163"></a>
@@ -224,7 +224,7 @@
 <span class="sourceLineNo">216</span>      if (runCleaner()) {<a name="line.216"></a>
 <span class="sourceLineNo">217</span>        LOG.debug("Cleaned old files/dirs under {} successfully",  oldFileDir);<a name="line.217"></a>
 <span class="sourceLineNo">218</span>      } else {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        LOG.warn("Failed to fully clean old files/dirs under " + oldFileDir + ".");<a name="line.219"></a>
+<span class="sourceLineNo">219</span>        LOG.warn("Failed to fully clean old files/dirs under {}", oldFileDir);<a name="line.219"></a>
 <span class="sourceLineNo">220</span>      }<a name="line.220"></a>
 <span class="sourceLineNo">221</span>      // After each clean chore, checks if receives reconfigure notification while cleaning<a name="line.221"></a>
 <span class="sourceLineNo">222</span>      if (reconfig.compareAndSet(true, false)) {<a name="line.222"></a>
@@ -276,7 +276,7 @@
 <span class="sourceLineNo">268</span>          directorySpaces.put(f, space);<a name="line.268"></a>
 <span class="sourceLineNo">269</span>          return space;<a name="line.269"></a>
 <span class="sourceLineNo">270</span>        } catch (IOException e) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>          LOG.trace("Failed to get space consumed by path={}", f.getPath(), e);<a name="line.271"></a>
+<span class="sourceLineNo">271</span>          LOG.trace("Failed to get space consumed by path={}", f, e);<a name="line.271"></a>
 <span class="sourceLineNo">272</span>          return -1;<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>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html
index 27b1e55..8f0a222 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/backup/TestBackupSystemTable.html
@@ -40,391 +40,391 @@
 <span class="sourceLineNo">032</span>import java.util.HashSet;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import java.util.Iterator;<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.Set;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.TreeSet;<a name="line.36"></a>
-<span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.conf.Configuration;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.TableName;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.backup.BackupInfo.BackupState;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.backup.impl.BackupManager;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.junit.After;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.junit.AfterClass;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.junit.Before;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.junit.BeforeClass;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.junit.Test;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.junit.experimental.categories.Category;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>/**<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * Test cases for backup system table API<a name="line.56"></a>
-<span class="sourceLineNo">057</span> */<a name="line.57"></a>
-<span class="sourceLineNo">058</span>@Category(MediumTests.class)<a name="line.58"></a>
-<span class="sourceLineNo">059</span>public class TestBackupSystemTable {<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  protected static Configuration conf = UTIL.getConfiguration();<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  protected static MiniHBaseCluster cluster;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  protected static Connection conn;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  protected BackupSystemTable table;<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  @BeforeClass<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  public static void setUp() throws Exception {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    conf.setBoolean(BackupRestoreConstants.BACKUP_ENABLE_KEY, true);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    BackupManager.decorateMasterConfiguration(conf);<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    BackupManager.decorateRegionServerConfiguration(conf);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    cluster = UTIL.startMiniCluster();<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    conn = UTIL.getConnection();<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  @Before<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  public void before() throws IOException {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    table = new BackupSystemTable(conn);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  @After<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  public void after() {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    if (table != null) {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      table.close();<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><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  @Test<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public void testUpdateReadDeleteBackupStatus() throws IOException {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    BackupInfo ctx = createBackupInfo();<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    table.updateBackupInfo(ctx);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    BackupInfo readCtx = table.readBackupInfo(ctx.getBackupId());<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    assertTrue(compare(ctx, readCtx));<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    // try fake backup id<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    readCtx = table.readBackupInfo("fake");<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    assertNull(readCtx);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    // delete backup info<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    table.deleteBackupInfo(ctx.getBackupId());<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    readCtx = table.readBackupInfo(ctx.getBackupId());<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    assertNull(readCtx);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    cleanBackupTable();<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>  @Test<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public void testWriteReadBackupStartCode() throws IOException {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    Long code = 100L;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    table.writeBackupStartCode(code, "root");<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    String readCode = table.readBackupStartCode("root");<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    assertEquals(code, new Long(Long.parseLong(readCode)));<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    cleanBackupTable();<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  private void cleanBackupTable() throws IOException {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    Admin admin = UTIL.getHBaseAdmin();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    admin.disableTable(BackupSystemTable.getTableName(conf));<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    admin.truncateTable(BackupSystemTable.getTableName(conf), true);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    if (admin.isTableDisabled(BackupSystemTable.getTableName(conf))) {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      admin.enableTable(BackupSystemTable.getTableName(conf));<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
-<span class="sourceLineNo">122</span><a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @Test<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public void testBackupHistory() throws IOException {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    int n = 10;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    List&lt;BackupInfo&gt; list = createBackupInfoList(n);<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>    // Load data<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    for (BackupInfo bc : list) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      // Make sure we set right status<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      bc.setState(BackupState.COMPLETE);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      table.updateBackupInfo(bc);<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>    // Reverse list for comparison<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    Collections.reverse(list);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    List&lt;BackupInfo&gt; history = table.getBackupHistory();<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    assertTrue(history.size() == n);<a name="line.138"></a>
-<span class="sourceLineNo">139</span><a name="line.139"></a>
-<span class="sourceLineNo">140</span>    for (int i = 0; i &lt; n; i++) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      BackupInfo ctx = list.get(i);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      BackupInfo data = history.get(i);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      assertTrue(compare(ctx, data));<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    }<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    cleanBackupTable();<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>  @Test<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public void testBackupDelete() throws IOException {<a name="line.151"></a>
+<span class="sourceLineNo">035</span>import java.util.Map;<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.TreeSet;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.conf.Configuration;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.fs.FileStatus;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.fs.Path;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.TableName;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.backup.BackupInfo.BackupState;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.backup.impl.BackupManager;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.backup.impl.BackupSystemTable;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.junit.After;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.junit.AfterClass;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.junit.Before;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.junit.BeforeClass;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.junit.Test;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.junit.experimental.categories.Category;<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>/**<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * Test cases for backup system table API<a name="line.59"></a>
+<span class="sourceLineNo">060</span> */<a name="line.60"></a>
+<span class="sourceLineNo">061</span>@Category(MediumTests.class)<a name="line.61"></a>
+<span class="sourceLineNo">062</span>public class TestBackupSystemTable {<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  protected static Configuration conf = UTIL.getConfiguration();<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  protected static MiniHBaseCluster cluster;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  protected static Connection conn;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  protected BackupSystemTable table;<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  @BeforeClass<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public static void setUp() throws Exception {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    conf.setBoolean(BackupRestoreConstants.BACKUP_ENABLE_KEY, true);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    BackupManager.decorateMasterConfiguration(conf);<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    BackupManager.decorateRegionServerConfiguration(conf);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    cluster = UTIL.startMiniCluster();<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    conn = UTIL.getConnection();<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>  @Before<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  public void before() throws IOException {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    table = new BackupSystemTable(conn);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  }<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>  @After<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  public void after() {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    if (table != null) {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      table.close();<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  @Test<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  public void testUpdateReadDeleteBackupStatus() throws IOException {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    BackupInfo ctx = createBackupInfo();<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    table.updateBackupInfo(ctx);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    BackupInfo readCtx = table.readBackupInfo(ctx.getBackupId());<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    assertTrue(compare(ctx, readCtx));<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    // try fake backup id<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    readCtx = table.readBackupInfo("fake");<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    assertNull(readCtx);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    // delete backup info<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    table.deleteBackupInfo(ctx.getBackupId());<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    readCtx = table.readBackupInfo(ctx.getBackupId());<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    assertNull(readCtx);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    cleanBackupTable();<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>  @Test<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  public void testWriteReadBackupStartCode() throws IOException {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    Long code = 100L;<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    table.writeBackupStartCode(code, "root");<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    String readCode = table.readBackupStartCode("root");<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    assertEquals(code, new Long(Long.parseLong(readCode)));<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    cleanBackupTable();<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 cleanBackupTable() throws IOException {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    Admin admin = UTIL.getHBaseAdmin();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    admin.disableTable(BackupSystemTable.getTableName(conf));<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    admin.truncateTable(BackupSystemTable.getTableName(conf), true);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    if (admin.isTableDisabled(BackupSystemTable.getTableName(conf))) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>      admin.enableTable(BackupSystemTable.getTableName(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><a name="line.125"></a>
+<span class="sourceLineNo">126</span>  @Test<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  public void testBackupHistory() throws IOException {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    int n = 10;<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    List&lt;BackupInfo&gt; list = createBackupInfoList(n);<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>    // Load data<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    for (BackupInfo bc : list) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      // Make sure we set right status<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      bc.setState(BackupState.COMPLETE);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      table.updateBackupInfo(bc);<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>    // Reverse list for comparison<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    Collections.reverse(list);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    List&lt;BackupInfo&gt; history = table.getBackupHistory();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    assertTrue(history.size() == n);<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>    for (int i = 0; i &lt; n; i++) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      BackupInfo ctx = list.get(i);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      BackupInfo data = history.get(i);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      assertTrue(compare(ctx, data));<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
+<span class="sourceLineNo">148</span><a name="line.148"></a>
+<span class="sourceLineNo">149</span>    cleanBackupTable();<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
 <span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span><a name="line.154"></a>
-<span class="sourceLineNo">155</span>      int n = 10;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      List&lt;BackupInfo&gt; list = createBackupInfoList(n);<a name="line.156"></a>
+<span class="sourceLineNo">153</span>  @Test<a name="line.153"></a>
+<span class="sourceLineNo">154</span>  public void testBackupDelete() throws IOException {<a name="line.154"></a>
+<span class="sourceLineNo">155</span><a name="line.155"></a>
+<span class="sourceLineNo">156</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.156"></a>
 <span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>      // Load data<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      for (BackupInfo bc : list) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        // Make sure we set right status<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        bc.setState(BackupState.COMPLETE);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        table.updateBackupInfo(bc);<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>      // Verify exists<a name="line.165"></a>
-<span class="sourceLineNo">166</span>      for (BackupInfo bc : list) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        assertNotNull(table.readBackupInfo(bc.getBackupId()));<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>      // Delete all<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      for (BackupInfo bc : list) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        table.deleteBackupInfo(bc.getBackupId());<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      }<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>      // Verify do not exists<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      for (BackupInfo bc : list) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        assertNull(table.readBackupInfo(bc.getBackupId()));<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      }<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>      cleanBackupTable();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
+<span class="sourceLineNo">158</span>      int n = 10;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      List&lt;BackupInfo&gt; list = createBackupInfoList(n);<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>      // Load data<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      for (BackupInfo bc : list) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>        // Make sure we set right status<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        bc.setState(BackupState.COMPLETE);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        table.updateBackupInfo(bc);<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>      // Verify exists<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      for (BackupInfo bc : list) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        assertNotNull(table.readBackupInfo(bc.getBackupId()));<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      }<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>      // Delete all<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      for (BackupInfo bc : list) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        table.deleteBackupInfo(bc.getBackupId());<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>      // Verify do not exists<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      for (BackupInfo bc : list) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        assertNull(table.readBackupInfo(bc.getBackupId()));<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>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  @Test<a name="line.185"></a>
-<span class="sourceLineNo">186</span>  public void testRegionServerLastLogRollResults() throws IOException {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    String[] servers = new String[] { "server1", "server2", "server3" };<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    Long[] timestamps = new Long[] { 100L, 102L, 107L };<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>    for (int i = 0; i &lt; servers.length; i++) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      table.writeRegionServerLastLogRollResult(servers[i], timestamps[i], "root");<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>    HashMap&lt;String, Long&gt; result = table.readRegionServerLastLogRollResult("root");<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    assertTrue(servers.length == result.size());<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    Set&lt;String&gt; keys = result.keySet();<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    String[] keysAsArray = new String[keys.size()];<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    keys.toArray(keysAsArray);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    Arrays.sort(keysAsArray);<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>    for (int i = 0; i &lt; keysAsArray.length; i++) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      assertEquals(keysAsArray[i], servers[i]);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      Long ts1 = timestamps[i];<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      Long ts2 = result.get(keysAsArray[i]);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      assertEquals(ts1, ts2);<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>    cleanBackupTable();<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
+<span class="sourceLineNo">183</span>      cleanBackupTable();<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><a name="line.187"></a>
+<span class="sourceLineNo">188</span>  @Test<a name="line.188"></a>
+<span class="sourceLineNo">189</span>  public void testRegionServerLastLogRollResults() throws IOException {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    String[] servers = new String[] { "server1", "server2", "server3" };<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    Long[] timestamps = new Long[] { 100L, 102L, 107L };<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>    for (int i = 0; i &lt; servers.length; i++) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      table.writeRegionServerLastLogRollResult(servers[i], timestamps[i], "root");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>    HashMap&lt;String, Long&gt; result = table.readRegionServerLastLogRollResult("root");<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    assertTrue(servers.length == result.size());<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    Set&lt;String&gt; keys = result.keySet();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    String[] keysAsArray = new String[keys.size()];<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    keys.toArray(keysAsArray);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    Arrays.sort(keysAsArray);<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    for (int i = 0; i &lt; keysAsArray.length; i++) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      assertEquals(keysAsArray[i], servers[i]);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      Long ts1 = timestamps[i];<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      Long ts2 = result.get(keysAsArray[i]);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      assertEquals(ts1, ts2);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
 <span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  @Test<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  public void testIncrementalBackupTableSet() throws IOException {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    TreeSet&lt;TableName&gt; tables1 = new TreeSet&lt;&gt;();<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>    tables1.add(TableName.valueOf("t1"));<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    tables1.add(TableName.valueOf("t2"));<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    tables1.add(TableName.valueOf("t3"));<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    TreeSet&lt;TableName&gt; tables2 = new TreeSet&lt;&gt;();<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>    tables2.add(TableName.valueOf("t3"));<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    tables2.add(TableName.valueOf("t4"));<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    tables2.add(TableName.valueOf("t5"));<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>    table.addIncrementalBackupTableSet(tables1, "root");<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    BackupSystemTable table = new BackupSystemTable(conn);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    TreeSet&lt;TableName&gt; res1 = (TreeSet&lt;TableName&gt;) table.getIncrementalBackupTableSet("root");<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    assertTrue(tables1.size() == res1.size());<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    Iterator&lt;TableName&gt; desc1 = tables1.descendingIterator();<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    Iterator&lt;TableName&gt; desc2 = res1.descendingIterator();<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    while (desc1.hasNext()) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      assertEquals(desc1.next(), desc2.next());<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>    table.addIncrementalBackupTableSet(tables2, "root");<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    TreeSet&lt;TableName&gt; res2 = (TreeSet&lt;TableName&gt;) table.getIncrementalBackupTableSet("root");<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    assertTrue((tables2.size() + tables1.size() - 1) == res2.size());<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>    tables1.addAll(tables2);<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>    desc1 = tables1.descendingIterator();<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    desc2 = res2.descendingIterator();<a name="line.242"></a>
+<span class="sourceLineNo">211</span>    cleanBackupTable();<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>  @Test<a name="line.214"></a>
+<span class="sourceLineNo">215</span>  public void testIncrementalBackupTableSet() throws IOException {<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    TreeSet&lt;TableName&gt; tables1 = new TreeSet&lt;&gt;();<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>    tables1.add(TableName.valueOf("t1"));<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    tables1.add(TableName.valueOf("t2"));<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    tables1.add(TableName.valueOf("t3"));<a name="line.220"></a>
+<span class="sourceLineNo">221</span><a name="line.221"></a>
+<span class="sourceLineNo">222</span>    TreeSet&lt;TableName&gt; tables2 = new TreeSet&lt;&gt;();<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>    tables2.add(TableName.valueOf("t3"));<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    tables2.add(TableName.valueOf("t4"));<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    tables2.add(TableName.valueOf("t5"));<a name="line.226"></a>
+<span class="sourceLineNo">227</span><a name="line.227"></a>
+<span class="sourceLineNo">228</span>    table.addIncrementalBackupTableSet(tables1, "root");<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    BackupSystemTable table = new BackupSystemTable(conn);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    TreeSet&lt;TableName&gt; res1 = (TreeSet&lt;TableName&gt;) table.getIncrementalBackupTableSet("root");<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    assertTrue(tables1.size() == res1.size());<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    Iterator&lt;TableName&gt; desc1 = tables1.descendingIterator();<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    Iterator&lt;TableName&gt; desc2 = res1.descendingIterator();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    while (desc1.hasNext()) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      assertEquals(desc1.next(), desc2.next());<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>    table.addIncrementalBackupTableSet(tables2, "root");<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    TreeSet&lt;TableName&gt; res2 = (TreeSet&lt;TableName&gt;) table.getIncrementalBackupTableSet("root");<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    assertTrue((tables2.size() + tables1.size() - 1) == res2.size());<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>    tables1.addAll(tables2);<a name="line.242"></a>
 <span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>    while (desc1.hasNext()) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      assertEquals(desc1.next(), desc2.next());<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    cleanBackupTable();<a name="line.247"></a>
-<span class="sourceLineNo">248</span><a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  @Test<a name="line.251"></a>
-<span class="sourceLineNo">252</span>  public void testRegionServerLogTimestampMap() throws IOException {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    TreeSet&lt;TableName&gt; tables = new TreeSet&lt;&gt;();<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>    tables.add(TableName.valueOf("t1"));<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    tables.add(TableName.valueOf("t2"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    tables.add(TableName.valueOf("t3"));<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    HashMap&lt;String, Long&gt; rsTimestampMap = new HashMap&lt;String, Long&gt;();<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    rsTimestampMap.put("rs1:100", 100L);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    rsTimestampMap.put("rs2:100", 101L);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    rsTimestampMap.put("rs3:100", 103L);<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>    table.writeRegionServerLogTimestamp(tables, rsTimestampMap, "root");<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt; result = table.readLogTimestampMap("root");<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>    assertTrue(tables.size() == result.size());<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    for (TableName t : tables) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      HashMap&lt;String, Long&gt; rstm = result.get(t);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      assertNotNull(rstm);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      assertEquals(rstm.get("rs1:100"), new Long(100L));<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      assertEquals(rstm.get("rs2:100"), new Long(101L));<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      assertEquals(rstm.get("rs3:100"), new Long(103L));<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>    Set&lt;TableName&gt; tables1 = new TreeSet&lt;&gt;();<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>    tables1.add(TableName.valueOf("t3"));<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    tables1.add(TableName.valueOf("t4"));<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    tables1.add(TableName.valueOf("t5"));<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>    HashMap&lt;String, Long&gt; rsTimestampMap1 = new HashMap&lt;String, Long&gt;();<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    rsTimestampMap1.put("rs1:100", 200L);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    rsTimestampMap1.put("rs2:100", 201L);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    rsTimestampMap1.put("rs3:100", 203L);<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>    table.writeRegionServerLogTimestamp(tables1, rsTimestampMap1, "root");<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>    result = table.readLogTimestampMap("root");<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    assertTrue(5 == result.size());<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>    for (TableName t : tables) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      HashMap&lt;String, Long&gt; rstm = result.get(t);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      assertNotNull(rstm);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      if (t.equals(TableName.valueOf("t3")) == false) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        assertEquals(rstm.get("rs1:100"), new Long(100L));<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        assertEquals(rstm.get("rs2:100"), new Long(101L));<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        assertEquals(rstm.get("rs3:100"), new Long(103L));<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      } else {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        assertEquals(rstm.get("rs1:100"), new Long(200L));<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        assertEquals(rstm.get("rs2:100"), new Long(201L));<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        assertEquals(rstm.get("rs3:100"), new Long(203L));<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><a name="line.310"></a>
-<span class="sourceLineNo">311</span>    for (TableName t : tables1) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      HashMap&lt;String, Long&gt; rstm = result.get(t);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      assertNotNull(rstm);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      assertEquals(rstm.get("rs1:100"), new Long(200L));<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      assertEquals(rstm.get("rs2:100"), new Long(201L));<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      assertEquals(rstm.get("rs3:100"), new Long(203L));<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>    cleanBackupTable();<a name="line.319"></a>
-<span class="sourceLineNo">320</span><a name="line.320"></a>
-<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  @Test<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public void testAddWALFiles() throws IOException {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    List&lt;String&gt; files =<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        Arrays.asList("hdfs://server/WALs/srv1,101,15555/srv1,101,15555.default.1",<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          "hdfs://server/WALs/srv2,102,16666/srv2,102,16666.default.2",<a name="line.327"></a>
-<span class="sourceLineNo">328</span>          "hdfs://server/WALs/srv3,103,17777/srv3,103,17777.default.3");<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    String newFile = "hdfs://server/WALs/srv1,101,15555/srv1,101,15555.default.5";<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>    table.addWALFiles(files, "backup", "root");<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>    assertTrue(table.isWALFileDeletable(files.get(0)));<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    assertTrue(table.isWALFileDeletable(files.get(1)));<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    assertTrue(table.isWALFileDeletable(files.get(2)));<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    assertFalse(table.isWALFileDeletable(newFile));<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>    cleanBackupTable();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
+<span class="sourceLineNo">244</span>    desc1 = tables1.descendingIterator();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    desc2 = res2.descendingIterator();<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    while (desc1.hasNext()) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      assertEquals(desc1.next(), desc2.next());<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    cleanBackupTable();<a name="line.250"></a>
+<span class="sourceLineNo">251</span><a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  @Test<a name="line.254"></a>
+<span class="sourceLineNo">255</span>  public void testRegionServerLogTimestampMap() throws IOException {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    TreeSet&lt;TableName&gt; tables = new TreeSet&lt;&gt;();<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>    tables.add(TableName.valueOf("t1"));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    tables.add(TableName.valueOf("t2"));<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    tables.add(TableName.valueOf("t3"));<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>    HashMap&lt;String, Long&gt; rsTimestampMap = new HashMap&lt;String, Long&gt;();<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    rsTimestampMap.put("rs1:100", 100L);<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    rsTimestampMap.put("rs2:100", 101L);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    rsTimestampMap.put("rs3:100", 103L);<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>    table.writeRegionServerLogTimestamp(tables, rsTimestampMap, "root");<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt; result = table.readLogTimestampMap("root");<a name="line.270"></a>
+<span class="sourceLineNo">271</span><a name="line.271"></a>
+<span class="sourceLineNo">272</span>    assertTrue(tables.size() == result.size());<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>    for (TableName t : tables) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      HashMap&lt;String, Long&gt; rstm = result.get(t);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      assertNotNull(rstm);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      assertEquals(rstm.get("rs1:100"), new Long(100L));<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      assertEquals(rstm.get("rs2:100"), new Long(101L));<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      assertEquals(rstm.get("rs3:100"), new Long(103L));<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>    Set&lt;TableName&gt; tables1 = new TreeSet&lt;&gt;();<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>    tables1.add(TableName.valueOf("t3"));<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    tables1.add(TableName.valueOf("t4"));<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    tables1.add(TableName.valueOf("t5"));<a name="line.286"></a>
+<span class="sourceLineNo">287</span><a name="line.287"></a>
+<span class="sourceLineNo">288</span>    HashMap&lt;String, Long&gt; rsTimestampMap1 = new HashMap&lt;String, Long&gt;();<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>    rsTimestampMap1.put("rs1:100", 200L);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    rsTimestampMap1.put("rs2:100", 201L);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    rsTimestampMap1.put("rs3:100", 203L);<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    table.writeRegionServerLogTimestamp(tables1, rsTimestampMap1, "root");<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>    result = table.readLogTimestampMap("root");<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>    assertTrue(5 == result.size());<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    for (TableName t : tables) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      HashMap&lt;String, Long&gt; rstm = result.get(t);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      assertNotNull(rstm);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      if (t.equals(TableName.valueOf("t3")) == false) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        assertEquals(rstm.get("rs1:100"), new Long(100L));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        assertEquals(rstm.get("rs2:100"), new Long(101L));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        assertEquals(rstm.get("rs3:100"), new Long(103L));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      } else {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        assertEquals(rstm.get("rs1:100"), new Long(200L));<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        assertEquals(rstm.get("rs2:100"), new Long(201L));<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        assertEquals(rstm.get("rs3:100"), new Long(203L));<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><a name="line.313"></a>
+<span class="sourceLineNo">314</span>    for (TableName t : tables1) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      HashMap&lt;String, Long&gt; rstm = result.get(t);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      assertNotNull(rstm);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      assertEquals(rstm.get("rs1:100"), new Long(200L));<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      assertEquals(rstm.get("rs2:100"), new Long(201L));<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      assertEquals(rstm.get("rs3:100"), new Long(203L));<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>    cleanBackupTable();<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
+<span class="sourceLineNo">325</span><a name="line.325"></a>
+<span class="sourceLineNo">326</span>  @Test<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  public void testAddWALFiles() throws IOException {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    List&lt;String&gt; files =<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        Arrays.asList("hdfs://server/WALs/srv1,101,15555/srv1,101,15555.default.1",<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          "hdfs://server/WALs/srv2,102,16666/srv2,102,16666.default.2",<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          "hdfs://server/WALs/srv3,103,17777/srv3,103,17777.default.3");<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    String newFile = "hdfs://server/WALs/srv1,101,15555/srv1,101,15555.default.5";<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>    table.addWALFiles(files, "backup", "root");<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>    assertTrue(table.isWALFileDeletable(files.get(0)));<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    assertTrue(table.isWALFileDeletable(files.get(1)));<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    assertTrue(table.isWALFileDeletable(files.get(2)));<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    assertFalse(table.isWALFileDeletable(newFile));<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>   * Backup set tests<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>  @Test<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  public void testBackupSetAddNotExists() throws IOException {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.347"></a>
+<span class="sourceLineNo">341</span>    // test for isWALFilesDeletable<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    List&lt;FileStatus&gt; fileStatues = new ArrayList&lt;&gt;();<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    for (String file : files) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      FileStatus fileStatus = new FileStatus();<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      fileStatus.setPath(new Path(file));<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      fileStatues.add(fileStatus);<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>      String[] tables = new String[] { "table1", "table2", "table3" };<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      String setName = "name";<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      table.addToBackupSet(setName, tables);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      List&lt;TableName&gt; tnames = table.describeBackupSet(setName);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      assertTrue(tnames != null);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      assertTrue(tnames.size() == tables.length);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      for (int i = 0; i &lt; tnames.size(); i++) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        assertTrue(tnames.get(i).getNameAsString().equals(tables[i]));<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      }<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      cleanBackupTable();<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">349</span>    FileStatus newFileStatus = new FileStatus();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    newFileStatus.setPath(new Path(newFile));<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    fileStatues.add(newFileStatus);<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>    Map&lt;FileStatus, Boolean&gt; walFilesDeletableMap = table.areWALFilesDeletable(fileStatues);<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>    assertTrue(walFilesDeletableMap.get(fileStatues.get(0)));<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    assertTrue(walFilesDeletableMap.get(fileStatues.get(1)));<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    assertTrue(walFilesDeletableMap.get(fileStatues.get(2)));<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    assertFalse(walFilesDeletableMap.get(newFileStatus));<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    cleanBackupTable();<a name="line.360"></a>
 <span class="sourceLineNo">361</span>  }<a name="line.361"></a>
 <span class="sourceLineNo">362</span><a name="line.362"></a>
-<span class="sourceLineNo">363</span>  @Test<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  public void testBackupSetAddExists() throws IOException {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.365"></a>
+<span class="sourceLineNo">363</span>  /**<a name="line.363"></a>
+<span class="sourceLineNo">364</span>   * Backup set tests<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>      String[] tables = new String[] { "table1", "table2", "table3" };<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      String setName = "name";<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      table.addToBackupSet(setName, tables);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      String[] addTables = new String[] { "table4", "table5", "table6" };<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      table.addToBackupSet(setName, addTables);<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>      Set&lt;String&gt; expectedTables = new HashSet&lt;&gt;(Arrays.asList("table1", "table2", "table3",<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        "table4", "table5", "table6"));<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>      List&lt;TableName&gt; tnames = table.describeBackupSet(setName);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      assertTrue(tnames != null);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      assertTrue(tnames.size() == expectedTables.size());<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      for (TableName tableName : tnames) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        assertTrue(expectedTables.remove(tableName.getNameAsString()));<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      cleanBackupTable();<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  @Test<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  public void testBackupSetAddExistsIntersects() throws IOException {<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>      String[] tables = new String[] { "table1", "table2", "table3" };<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      String setName = "name";<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      table.addToBackupSet(setName, tables);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>      String[] addTables = new String[] { "table3", "table4", "table5", "table6" };<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      table.addToBackupSet(setName, addTables);<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>      Set&lt;String&gt; expectedTables = new HashSet&lt;&gt;(Arrays.asList("table1", "table2", "table3",<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        "table4", "table5", "table6"));<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>      List&lt;TableName&gt; tnames = table.describeBackupSet(setName);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      assertTrue(tnames != null);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      assertTrue(tnames.size() == expectedTables.size());<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      for (TableName tableName : tnames) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        assertTrue(expectedTables.remove(tableName.getNameAsString()));<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      }<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      cleanBackupTable();<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  }<a name="line.407"></a>
-<span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  @Test<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  public void testBackupSetRemoveSomeNotExists() throws IOException {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>      String[] tables = new String[] { "table1", "table2", "table3", "table4" };<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      String setName = "name";<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      table.addToBackupSet(setName, tables);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      String[] removeTables = new String[] { "table4", "table5", "table6" };<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      table.removeFromBackupSet(setName, removeTables);<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>      Set&lt;String&gt; expectedTables = new HashSet&lt;&gt;(Arrays.asList("table1", "table2", "table3"));<a name="line.419"></a>
+<span class="sourceLineNo">367</span>  @Test<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  public void testBackupSetAddNotExists() throws IOException {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>      String[] tables = new String[] { "table1", "table2", "table3" };<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      String setName = "name";<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      table.addToBackupSet(setName, tables);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      List&lt;TableName&gt; tnames = table.describeBackupSet(setName);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      assertTrue(tnames != null);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      assertTrue(tnames.size() == tables.length);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      for (int i = 0; i &lt; tnames.size(); i++) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        assertTrue(tnames.get(i).getNameAsString().equals(tables[i]));<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      cleanBackupTable();<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    }<a name="line.381"></a>
+<span class="sourceLineNo">382</span><a name="line.382"></a>
+<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>  @Test<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  public void testBackupSetAddExists() throws IOException {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span><a name="line.388"></a>
+<span class="sourceLineNo">389</span>      String[] tables = new String[] { "table1", "table2", "table3" };<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      String setName = "name";<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      table.addToBackupSet(setName, tables);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      String[] addTables = new String[] { "table4", "table5", "table6" };<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      table.addToBackupSet(setName, addTables);<a name="line.393"></a>
+<span class="sourceLineNo">394</span><a name="line.394"></a>
+<span class="sourceLineNo">395</span>      Set&lt;String&gt; expectedTables = new HashSet&lt;&gt;(Arrays.asList("table1", "table2", "table3",<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        "table4", "table5", "table6"));<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>      List&lt;TableName&gt; tnames = table.describeBackupSet(setName);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      assertTrue(tnames != null);<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      assertTrue(tnames.size() == expectedTables.size());<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      for (TableName tableName : tnames) {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        assertTrue(expectedTables.remove(tableName.getNameAsString()));<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      cleanBackupTable();<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    }<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  @Test<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  public void testBackupSetAddExistsIntersects() throws IOException {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span><a name="line.411"></a>
+<span class="sourceLineNo">412</span>      String[] tables = new String[] { "table1", "table2", "table3" };<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      String setName = "name";<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      table.addToBackupSet(setName, tables);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      String[] addTables = new String[] { "table3", "table4", "table5", "table6" };<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      table.addToBackupSet(setName, addTables);<a name="line.416"></a>
+<span class="sourceLineNo">417</span><a name="line.417"></a>
+<span class="sourceLineNo">418</span>      Set&lt;String&gt; expectedTables = new HashSet&lt;&gt;(Arrays.asList("table1", "table2", "table3",<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        "table4", "table5", "table6"));<a name="line.419"></a>
 <span class="sourceLineNo">420</span><a name="line.420"></a>
 <span class="sourceLineNo">421</span>      List&lt;TableName&gt; tnames = table.describeBackupSet(setName);<a name="line.421"></a>
 <span class="sourceLineNo">422</span>      assertTrue(tnames != null);<a name="line.422"></a>
@@ -437,16 +437,16 @@
 <span class="sourceLineNo">429</span>  }<a name="line.429"></a>
 <span class="sourceLineNo">430</span><a name="line.430"></a>
 <span class="sourceLineNo">431</span>  @Test<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  public void testBackupSetRemove() throws IOException {<a name="line.432"></a>
+<span class="sourceLineNo">432</span>  public void testBackupSetRemoveSomeNotExists() throws IOException {<a name="line.432"></a>
 <span class="sourceLineNo">433</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.433"></a>
 <span class="sourceLineNo">434</span><a name="line.434"></a>
 <span class="sourceLineNo">435</span>      String[] tables = new String[] { "table1", "table2", "table3", "table4" };<a name="line.435"></a>
 <span class="sourceLineNo">436</span>      String setName = "name";<a name="line.436"></a>
 <span class="sourceLineNo">437</span>      table.addToBackupSet(setName, tables);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      String[] removeTables = new String[] { "table4", "table3" };<a name="line.438"></a>
+<span class="sourceLineNo">438</span>      String[] removeTables = new String[] { "table4", "table5", "table6" };<a name="line.438"></a>
 <span class="sourceLineNo">439</span>      table.removeFromBackupSet(setName, removeTables);<a name="line.439"></a>
 <span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>     Set&lt;String&gt; expectedTables = new HashSet&lt;&gt;(Arrays.asList("table1", "table2"));<a name="line.441"></a>
+<span class="sourceLineNo">441</span>      Set&lt;String&gt; expectedTables = new HashSet&lt;&gt;(Arrays.asList("table1", "table2", "table3"));<a name="line.441"></a>
 <span class="sourceLineNo">442</span><a name="line.442"></a>
 <span class="sourceLineNo">443</span>      List&lt;TableName&gt; tnames = table.describeBackupSet(setName);<a name="line.443"></a>
 <span class="sourceLineNo">444</span>      assertTrue(tnames != null);<a name="line.444"></a>
@@ -459,75 +459,97 @@
 <span class="sourceLineNo">451</span>  }<a name="line.451"></a>
 <span class="sourceLineNo">452</span><a name="line.452"></a>
 <span class="sourceLineNo">453</span>  @Test<a name="line.453"></a>
-<span class="sourceLineNo">454</span>  public void testBackupSetDelete() throws IOException {<a name="line.454"></a>
+<span class="sourceLineNo">454</span>  public void testBackupSetRemove() throws IOException {<a name="line.454"></a>
 <span class="sourceLineNo">455</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.455"></a>
 <span class="sourceLineNo">456</span><a name="line.456"></a>
 <span class="sourceLineNo">457</span>      String[] tables = new String[] { "table1", "table2", "table3", "table4" };<a name="line.457"></a>
 <span class="sourceLineNo">458</span>      String setName = "name";<a name="line.458"></a>
 <span class="sourceLineNo">459</span>      table.addToBackupSet(setName, tables);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      table.deleteBackupSet(setName);<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>      List&lt;TableName&gt; tnames = table.describeBackupSet(setName);<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      assertTrue(tnames == null);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      cleanBackupTable();<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    }<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>  @Test<a name="line.468"></a>
-<span class="sourceLineNo">469</span>  public void testBackupSetList() throws IOException {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>      String[] tables = new String[] { "table1", "table2", "table3", "table4" };<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      String setName1 = "name1";<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      String setName2 = "name2";<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      table.addToBackupSet(setName1, tables);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      table.addToBackupSet(setName2, tables);<a name="line.476"></a>
-<span class="sourceLineNo">477</span><a name="line.477"></a>
-<span class="sourceLineNo">478</span>      List&lt;String&gt; list = table.listBackupSets();<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>      assertTrue(list.size() == 2);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      assertTrue(list.get(0).equals(setName1));<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      assertTrue(list.get(1).equals(setName2));<a name="line.482"></a>
+<span class="sourceLineNo">460</span>      String[] removeTables = new String[] { "table4", "table3" };<a name="line.460"></a>
+<span class="sourceLineNo">461</span>      table.removeFromBackupSet(setName, removeTables);<a name="line.461"></a>
+<span class="sourceLineNo">462</span><a name="line.462"></a>
+<span class="sourceLineNo">463</span>     Set&lt;String&gt; expectedTables = new HashSet&lt;&gt;(Arrays.asList("table1", "table2"));<a name="line.463"></a>
+<span class="sourceLineNo">464</span><a name="line.464"></a>
+<span class="sourceLineNo">465</span>      List&lt;TableName&gt; tnames = table.describeBackupSet(setName);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      assertTrue(tnames != null);<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      assertTrue(tnames.size() == expectedTables.size());<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      for (TableName tableName : tnames) {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        assertTrue(expectedTables.remove(tableName.getNameAsString()));<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      }<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      cleanBackupTable();<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
+<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
+<span class="sourceLineNo">474</span><a name="line.474"></a>
+<span class="sourceLineNo">475</span>  @Test<a name="line.475"></a>
+<span class="sourceLineNo">476</span>  public void testBackupSetDelete() throws IOException {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>      String[] tables = new String[] { "table1", "table2", "table3", "table4" };<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      String setName = "name";<a name="line.480"></a>
+<span class="sourceLineNo">481</span>      table.addToBackupSet(setName, tables);<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      table.deleteBackupSet(setName);<a name="line.482"></a>
 <span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>      cleanBackupTable();<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    }<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  }<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  private boolean compare(BackupInfo one, BackupInfo two) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    return one.getBackupId().equals(two.getBackupId()) &amp;&amp; one.getType().equals(two.getType())<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        &amp;&amp; one.getBackupRootDir().equals(two.getBackupRootDir())<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        &amp;&amp; one.getStartTs() == two.getStartTs() &amp;&amp; one.getCompleteTs() == two.getCompleteTs();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  }<a name="line.492"></a>
+<span class="sourceLineNo">484</span>      List&lt;TableName&gt; tnames = table.describeBackupSet(setName);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      assertTrue(tnames == null);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      cleanBackupTable();<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>  @Test<a name="line.490"></a>
+<span class="sourceLineNo">491</span>  public void testBackupSetList() throws IOException {<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    try (BackupSystemTable table = new BackupSystemTable(conn)) {<a name="line.492"></a>
 <span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>  private BackupInfo createBackupInfo() {<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>    BackupInfo ctxt =<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        new BackupInfo("backup_" + System.nanoTime(), BackupType.FULL, new TableName[] {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>            TableName.valueOf("t1"), TableName.valueOf("t2"), TableName.valueOf("t3") },<a name="line.498"></a>
-<span class="sourceLineNo">499</span>            "/hbase/backup");<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    ctxt.setStartTs(System.currentTimeMillis());<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    ctxt.setCompleteTs(System.currentTimeMillis() + 1);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    return ctxt;<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  }<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  private List&lt;BackupInfo&gt; createBackupInfoList(int size) {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    List&lt;BackupInfo&gt; list = new ArrayList&lt;BackupInfo&gt;();<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    for (int i = 0; i &lt; size; i++) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      list.add(createBackupInfo());<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      try {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        Thread.sleep(10);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      } catch (InterruptedException e) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        e.printStackTrace();<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    return list;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>  }<a name="line.516"></a>
+<span class="sourceLineNo">494</span>      String[] tables = new String[] { "table1", "table2", "table3", "table4" };<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      String setName1 = "name1";<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      String setName2 = "name2";<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      table.addToBackupSet(setName1, tables);<a name="line.497"></a>
+<span class="sourceLineNo">498</span>      table.addToBackupSet(setName2, tables);<a name="line.498"></a>
+<span class="sourceLineNo">499</span><a name="line.499"></a>
+<span class="sourceLineNo">500</span>      List&lt;String&gt; list = table.listBackupSets();<a name="line.500"></a>
+<span class="sourceLineNo">501</span><a name="line.501"></a>
+<span class="sourceLineNo">502</span>      assertTrue(list.size() == 2);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      assertTrue(list.get(0).equals(setName1));<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      assertTrue(list.get(1).equals(setName2));<a name="line.504"></a>
+<span class="sourceLineNo">505</span><a name="line.505"></a>
+<span class="sourceLineNo">506</span>      cleanBackupTable();<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><a name="line.509"></a>
+<span class="sourceLineNo">510</span>  private boolean compare(BackupInfo one, BackupInfo two) {<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    return one.getBackupId().equals(two.getBackupId()) &amp;&amp; one.getType().equals(two.getType())<a name="line.511"></a>
+<span class="sourceLineNo">512</span>        &amp;&amp; one.getBackupRootDir().equals(two.getBackupRootDir())<a name="line.512"></a>
+<span class="sourceLineNo">513</span>        &amp;&amp; one.getStartTs() == two.getStartTs() &amp;&amp; one.getCompleteTs() == two.getCompleteTs();<a name="line.513"></a>
+<span class="sourceLineNo">514</span>  }<a name="line.514"></a>
+<span class="sourceLineNo">515</span><a name="line.515"></a>
+<span class="sourceLineNo">516</span>  private BackupInfo createBackupInfo() {<a name="line.516"></a>
 <span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>  @AfterClass<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  public static void tearDown() throws IOException {<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    if (cluster != null) cluster.shutdown();<a name="line.520"></a>
-<span class="sourceLineNo">521</span>  }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>}<a name="line.522"></a>
+<span class="sourceLineNo">518</span>    BackupInfo ctxt =<a name="line.518"></a>
+<span class="sourceLineNo">519</span>        new BackupInfo("backup_" + System.nanoTime(), BackupType.FULL, new TableName[] {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>            TableName.valueOf("t1"), TableName.valueOf("t2"), TableName.valueOf("t3") },<a name="line.520"></a>
+<span class="sourceLineNo">521</span>            "/hbase/backup");<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    ctxt.setStartTs(System.currentTimeMillis());<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    ctxt.setCompleteTs(System.currentTimeMillis() + 1);<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    return ctxt;<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 List&lt;BackupInfo&gt; createBackupInfoList(int size) {<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    List&lt;BackupInfo&gt; list = new ArrayList&lt;BackupInfo&gt;();<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    for (int i = 0; i &lt; size; i++) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      list.add(createBackupInfo());<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      try {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>        Thread.sleep(10);<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      } catch (InterruptedException e) {<a name="line.533"></a>
+<span class="sourceLineNo">534</span>        e.printStackTrace();<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>    return list;<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>  @AfterClass<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  public static void tearDown() throws IOException {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    if (cluster != null) cluster.shutdown();<a name="line.542"></a>
+<span class="sourceLineNo">543</span>  }<a name="line.543"></a>
+<span class="sourceLineNo">544</span>}<a name="line.544"></

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html
index 0f49224..514ad87 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html
@@ -45,1938 +45,1980 @@
 <span class="sourceLineNo">037</span>import org.apache.commons.lang3.ArrayUtils;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>import org.apache.commons.lang3.StringUtils;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import org.apache.hadoop.conf.Configuration;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.fs.Path;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Cell;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.ServerName;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.TableName;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.backup.BackupInfo;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.backup.BackupInfo.BackupState;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.backup.BackupRestoreConstants;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.backup.BackupType;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.backup.util.BackupUtils;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Get;<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.ResultScanner;<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.client.SnapshotDescription;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.client.Table;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.slf4j.Logger;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.slf4j.LoggerFactory;<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.BackupProtos;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;<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> * This class provides API to access backup system table&lt;br&gt;<a name="line.75"></a>
-<span class="sourceLineNo">076</span> *<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * Backup system table schema:&lt;br&gt;<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * &lt;p&gt;&lt;ul&gt;<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * &lt;li&gt;1. Backup sessions rowkey= "session:"+backupId; value =serialized BackupInfo&lt;/li&gt;<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * &lt;li&gt;2. Backup start code rowkey = "startcode:"+backupRoot; value = startcode&lt;/li&gt;<a name="line.80"></a>
-<span class="sourceLineNo">081</span> * &lt;li&gt;3. Incremental backup set rowkey="incrbackupset:"+backupRoot; value=[list of tables]&lt;/li&gt;<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * &lt;li&gt;4. Table-RS-timestamp map rowkey="trslm:"+backupRoot+table_name;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * value = map[RS-&gt; last WAL timestamp]&lt;/li&gt;<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;li&gt;5. RS - WAL ts map rowkey="rslogts:"+backupRoot +server; value = last WAL timestamp&lt;/li&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;li&gt;6. WALs recorded rowkey="wals:"+WAL unique file name;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * value = backupId and full WAL file name&lt;/li&gt;<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * &lt;/ul&gt;&lt;/p&gt;<a name="line.87"></a>
-<span class="sourceLineNo">088</span> */<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>@InterfaceAudience.Private<a name="line.90"></a>
-<span class="sourceLineNo">091</span>public final class BackupSystemTable implements Closeable {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private static final Logger LOG = LoggerFactory.getLogger(BackupSystemTable.class);<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  static class WALItem {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    String backupId;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    String walFile;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    String backupRoot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>    WALItem(String backupId, String walFile, String backupRoot) {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      this.backupId = backupId;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      this.walFile = walFile;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      this.backupRoot = backupRoot;<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>    public String getBackupId() {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      return backupId;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>    public String getWalFile() {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      return walFile;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    }<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getBackupRoot() {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      return backupRoot;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>    @Override<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public String toString() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      return Path.SEPARATOR + backupRoot + Path.SEPARATOR + backupId + Path.SEPARATOR + walFile;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  }<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private TableName tableName;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  /**<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Stores backup sessions (contexts)<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  final static byte[] SESSIONS_FAMILY = "session".getBytes();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  /**<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * Stores other meta<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  final static byte[] META_FAMILY = "meta".getBytes();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  final static byte[] BULK_LOAD_FAMILY = "bulk".getBytes();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  /**<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * Connection to HBase cluster, shared among all instances<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   */<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private final Connection connection;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private final static String BACKUP_INFO_PREFIX = "session:";<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  private final static String START_CODE_ROW = "startcode:";<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private final static byte[] ACTIVE_SESSION_ROW = "activesession:".getBytes();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private final static byte[] ACTIVE_SESSION_COL = "c".getBytes();<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private final static byte[] ACTIVE_SESSION_YES = "yes".getBytes();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private final static byte[] ACTIVE_SESSION_NO = "no".getBytes();<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private final static String INCR_BACKUP_SET = "incrbackupset:";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private final static String TABLE_RS_LOG_MAP_PREFIX = "trslm:";<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  private final static String RS_LOG_TS_PREFIX = "rslogts:";<a name="line.149"></a>
-<span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private final static String BULK_LOAD_PREFIX = "bulk:";<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private final static byte[] BULK_LOAD_PREFIX_BYTES = BULK_LOAD_PREFIX.getBytes();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  private final static byte[] DELETE_OP_ROW = "delete_op_row".getBytes();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  private final static byte[] MERGE_OP_ROW = "merge_op_row".getBytes();<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>  final static byte[] TBL_COL = Bytes.toBytes("tbl");<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  final static byte[] FAM_COL = Bytes.toBytes("fam");<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  final static byte[] PATH_COL = Bytes.toBytes("path");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  final static byte[] STATE_COL = Bytes.toBytes("state");<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  // the two states a bulk loaded file can be<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  final static byte[] BL_PREPARE = Bytes.toBytes("R");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  final static byte[] BL_COMMIT = Bytes.toBytes("D");<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private final static String WALS_PREFIX = "wals:";<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  private final static String SET_KEY_PREFIX = "backupset:";<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>  // separator between BULK_LOAD_PREFIX and ordinals<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  protected final static String BLK_LD_DELIM = ":";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  private final static byte[] EMPTY_VALUE = new byte[] {};<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  // Safe delimiter in a string<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  private final static String NULL = "\u0000";<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public BackupSystemTable(Connection conn) throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    this.connection = conn;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    tableName = BackupSystemTable.getTableName(conn.getConfiguration());<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    checkSystemTable();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  }<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  private void checkSystemTable() throws IOException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    try (Admin admin = connection.getAdmin()) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      verifyNamespaceExists(admin);<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>      if (!admin.tableExists(tableName)) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        HTableDescriptor backupHTD =<a name="line.185"></a>
-<span class="sourceLineNo">186</span>            BackupSystemTable.getSystemTableDescriptor(connection.getConfiguration());<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        admin.createTable(backupHTD);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      }<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      waitForSystemTable(admin);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  private void verifyNamespaceExists(Admin admin) throws IOException {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    String namespaceName = tableName.getNamespaceAsString();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    NamespaceDescriptor ns = NamespaceDescriptor.create(namespaceName).build();<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    NamespaceDescriptor[] list = admin.listNamespaceDescriptors();<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    boolean exists = false;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    for (NamespaceDescriptor nsd : list) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      if (nsd.getName().equals(ns.getName())) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>        exists = true;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        break;<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>    if (!exists) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      admin.createNamespace(ns);<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><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  private void waitForSystemTable(Admin admin) throws IOException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    long TIMEOUT = 60000;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    long startTime = EnvironmentEdgeManager.currentTime();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    while (!admin.tableExists(tableName) || !admin.isTableAvailable(tableName)) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      try {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        Thread.sleep(100);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      } catch (InterruptedException e) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      if (EnvironmentEdgeManager.currentTime() - startTime &gt; TIMEOUT) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        throw new IOException("Failed to create backup system table after " + TIMEOUT + "ms");<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>    LOG.debug("Backup table exists and available");<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>  @Override<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  public void close() {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    // do nothing<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>   * Updates status (state) of a backup session in backup system table table<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * @param info backup info<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @throws IOException exception<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public void updateBackupInfo(BackupInfo info) throws IOException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    if (LOG.isTraceEnabled()) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      LOG.trace("update backup status in backup system table for: " + info.getBackupId()<a name="line.238"></a>
-<span class="sourceLineNo">239</span>          + " set status=" + info.getState());<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    try (Table table = connection.getTable(tableName)) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      Put put = createPutForBackupInfo(info);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      table.put(put);<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>  /*<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * @param backupId the backup Id<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * @return Map of rows to path of bulk loaded hfile<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  Map&lt;byte[], String&gt; readBulkLoadedFiles(String backupId) throws IOException {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    Scan scan = BackupSystemTable.createScanForBulkLoadedFiles(backupId);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    try (Table table = connection.getTable(tableName);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      Result res = null;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      Map&lt;byte[], String&gt; map = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      while ((res = scanner.next()) != null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        res.advance();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        byte[] row = CellUtil.cloneRow(res.listCells().get(0));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        for (Cell cell : res.listCells()) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.261"></a>
-<span class="sourceLineNo">262</span>            BackupSystemTable.PATH_COL.length) == 0) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>            map.put(row, Bytes.toString(CellUtil.cloneValue(cell)));<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      return map;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>  /*<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * Used during restore<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * @param backupId the backup Id<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * @param sTableList List of tables<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   * @return array of Map of family to List of Paths<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   */<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  public Map&lt;byte[], List&lt;Path&gt;&gt;[] readBulkLoadedFiles(String backupId, List&lt;TableName&gt; sTableList)<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      throws IOException {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    Scan scan = BackupSystemTable.createScanForBulkLoadedFiles(backupId);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    Map&lt;byte[], List&lt;Path&gt;&gt;[] mapForSrc = new Map[sTableList == null ? 1 : sTableList.size()];<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    try (Table table = connection.getTable(tableName);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      Result res = null;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      while ((res = scanner.next()) != null) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        res.advance();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        TableName tbl = null;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        byte[] fam = null;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        String path = null;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        for (Cell cell : res.listCells()) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          if (CellUtil.compareQualifiers(cell, BackupSystemTable.TBL_COL, 0,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            BackupSystemTable.TBL_COL.length) == 0) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            tbl = TableName.valueOf(CellUtil.cloneValue(cell));<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.FAM_COL, 0,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            BackupSystemTable.FAM_COL.length) == 0) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            fam = CellUtil.cloneValue(cell);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            BackupSystemTable.PATH_COL.length) == 0) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>            path = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        int srcIdx = IncrementalTableBackupClient.getIndex(tbl, sTableList);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        if (srcIdx == -1) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          // the table is not among the query<a name="line.303"></a>
-<span class="sourceLineNo">304</span>          continue;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        if (mapForSrc[srcIdx] == null) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>          mapForSrc[srcIdx] = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        }<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        List&lt;Path&gt; files;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        if (!mapForSrc[srcIdx].containsKey(fam)) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>          files = new ArrayList&lt;Path&gt;();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>          mapForSrc[srcIdx].put(fam, files);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        } else {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          files = mapForSrc[srcIdx].get(fam);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        files.add(new Path(path));<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        if (LOG.isDebugEnabled()) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>          LOG.debug("found bulk loaded file : " + tbl + " " + Bytes.toString(fam) + " " + path);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      }<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>      return mapForSrc;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  /*<a name="line.326"></a>
-<span class="sourceLineNo">327</span>   * @param map Map of row keys to path of bulk loaded hfile<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   */<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  void deleteBulkLoadedFiles(Map&lt;byte[], String&gt; map) throws IOException {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    try (Table table = connection.getTable(tableName)) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      List&lt;Delete&gt; dels = new ArrayList&lt;&gt;();<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      for (byte[] row : map.keySet()) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>        dels.add(new Delete(row).addFamily(BackupSystemTable.META_FAMILY));<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      table.delete(dels);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  /**<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * Deletes backup status from backup system table table<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * @param backupId backup id<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * @throws IOException exception<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>  public void deleteBackupInfo(String backupId) throws IOException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    if (LOG.isTraceEnabled()) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      LOG.trace("delete backup status in backup system table for " + backupId);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    try (Table table = connection.getTable(tableName)) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      Delete del = createDeleteForBackupInfo(backupId);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      table.delete(del);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    }<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  }<a name="line.354"></a>
-<span class="sourceLineNo">355</span><a name="line.355"></a>
-<span class="sourceLineNo">356</span>  /*<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * For postBulkLoadHFile() hook.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @param tabName table name<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @param region the region receiving hfile<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * @param finalPaths family and associated hfiles<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   */<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  public void writePathsPostBulkLoad(TableName tabName, byte[] region,<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      Map&lt;byte[], List&lt;Path&gt;&gt; finalPaths) throws IOException {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    if (LOG.isDebugEnabled()) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      LOG.debug("write bulk load descriptor to backup " + tabName + " with " + finalPaths.size()<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          + " entries");<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    try (Table table = connection.getTable(tableName)) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      List&lt;Put&gt; puts = BackupSystemTable.createPutForCommittedBulkload(tabName, region, finalPaths);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      table.put(puts);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      LOG.debug("written " + puts.size() + " rows for bulk load of " + tabName);<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><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /*<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * For preCommitStoreFile() hook<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * @param tabName table name<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @param region the region receiving hfile<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @param family column family<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   * @param pairs list of paths for hfiles<a name="line.380"></a>
-<span class="sourceLineNo">381</span>   */<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  public void writeFilesForBulkLoadPreCommit(TableName tabName, byte[] region, final byte[] family,<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      final List&lt;Pair&lt;Path, Path&gt;&gt; pairs) throws IOException {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    if (LOG.isDebugEnabled()) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      LOG.debug("write bulk load descriptor to backup " + tabName + " with " + pairs.size()<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          + " entries");<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    try (Table table = connection.getTable(tableName)) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      List&lt;Put&gt; puts =<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          BackupSystemTable.createPutForPreparedBulkload(tabName, region, family, pairs);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      table.put(puts);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      LOG.debug("written " + puts.size() + " rows for bulk load of " + tabName);<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><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  /*<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   * Removes rows recording bulk loaded hfiles from backup table<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param lst list of table names<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @param rows the rows to be deleted<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  public void removeBulkLoadedRows(List&lt;TableName&gt; lst, List&lt;byte[]&gt; rows) throws IOException {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    try (Table table = connection.getTable(tableName)) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      List&lt;Delete&gt; lstDels = new ArrayList&lt;&gt;();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      for (byte[] row : rows) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        Delete del = new Delete(row);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        lstDels.add(del);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        LOG.debug("orig deleting the row: " + Bytes.toString(row));<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      table.delete(lstDels);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      LOG.debug("deleted " + rows.size() + " original bulkload rows for " + lst.size() + " tables");<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  /*<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Reads the rows from backup table recording bulk loaded hfiles<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param tableList list of table names<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @return The keys of the Map are table, region and column family. Value of the map reflects<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * whether the hfile was recorded by preCommitStoreFile hook (true)<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   */<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  public Pair&lt;Map&lt;TableName, Map&lt;String, Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;&gt;&gt;, List&lt;byte[]&gt;&gt;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      readBulkloadRows(List&lt;TableName&gt; tableList) throws IOException {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    Map&lt;TableName, Map&lt;String, Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;&gt;&gt; map = new HashMap&lt;&gt;();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    List&lt;byte[]&gt; rows = new ArrayList&lt;&gt;();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    for (TableName tTable : tableList) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      Scan scan = BackupSystemTable.createScanForOrigBulkLoadedFiles(tTable);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      Map&lt;String, Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;&gt; tblMap = map.get(tTable);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      try (Table table = connection.getTable(tableName);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>          ResultScanner scanner = table.getScanner(scan)) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        Result res = null;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        while ((res = scanner.next()) != null) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          res.advance();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          String fam = null;<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          String path = null;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          boolean raw = false;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          byte[] row = null;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          String region = null;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          for (Cell cell : res.listCells()) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>            row = CellUtil.cloneRow(cell);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>            rows.add(row);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>            String rowStr = Bytes.toString(row);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>            region = BackupSystemTable.getRegionNameFromOrigBulkLoadRow(rowStr);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>            if (CellUtil.compareQualifiers(cell, BackupSystemTable.FAM_COL, 0,<a name="line.442"></a>
-<span class="sourceLineNo">443</span>              BackupSystemTable.FAM_COL.length) == 0) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>              fam = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.445"></a>
-<span class="sourceLineNo">446</span>              BackupSystemTable.PATH_COL.length) == 0) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>              path = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.447"></a>
-<span class="sourceLineNo">448</span>            } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.STATE_COL, 0,<a name="line.448"></a>
-<span class="sourceLineNo">449</span>              BackupSystemTable.STATE_COL.length) == 0) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>              byte[] state = CellUtil.cloneValue(cell);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>              if (Bytes.equals(BackupSystemTable.BL_PREPARE, state)) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>                raw = true;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              } else raw = false;<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>          if (map.get(tTable) == null) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>            map.put(tTable, new HashMap&lt;String, Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;&gt;());<a name="line.457"></a>
-<span class="sourceLineNo">458</span>            tblMap = map.get(tTable);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          }<a name="line.459"></a>
-<span class="sourceLineNo">460</span>          if (tblMap.get(region) == null) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>            tblMap.put(region, new HashMap&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;());<a name="line.461"></a>
-<span class="sourceLineNo">462</span>          }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>          Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt; famMap = tblMap.get(region);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          if (famMap.get(fam) == null) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            famMap.put(fam, new ArrayList&lt;Pair&lt;String, Boolean&gt;&gt;());<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          famMap.get(fam).add(new Pair&lt;&gt;(path, raw));<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          LOG.debug("found orig " + path + " for " + fam + " of table " + region);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        }<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      }<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return new Pair&lt;&gt;(map, rows);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /*<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param sTableList List of tables<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param maps array of Map of family to List of Paths<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param backupId the backup Id<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   */<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  public void writeBulkLoadedFiles(List&lt;TableName&gt; sTableList, Map&lt;byte[], List&lt;Path&gt;&gt;[] maps,<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      String backupId) throws IOException {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    try (Table table = connection.getTable(tableName)) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      long ts = EnvironmentEdgeManager.currentTime();<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      int cnt = 0;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      for (int idx = 0; idx &lt; maps.length; idx++) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        Map&lt;byte[], List&lt;Path&gt;&gt; map = maps[idx];<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        TableName tn = sTableList.get(idx);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        if (map == null) continue;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        for (Map.Entry&lt;byte[], List&lt;Path&gt;&gt; entry : map.entrySet()) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>          byte[] fam = entry.getKey();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          List&lt;Path&gt; paths = entry.getValue();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>          for (Path p : paths) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>            Put put =<a name="line.494"></a>
-<span class="sourceLineNo">495</span>                BackupSystemTable.createPutForBulkLoadedFile(tn, fam, p.toString(), backupId, ts,<a name="line.495"></a>
-<span class="sourceLineNo">496</span>                  cnt++);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>            puts.add(put);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          }<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        }<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      }<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      if (!puts.isEmpty()) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        table.put(puts);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>  }<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>  /**<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * Reads backup status object (instance of backup info) from backup system table table<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * @param backupId backup id<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * @return Current status of backup session or null<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
-<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span>  public BackupInfo readBackupInfo(String backupId) throws IOException {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    if (LOG.isTraceEnabled()) {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      LOG.trace("read backup status from backup system table for: " + backupId);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    try (Table table = connection.getTable(tableName)) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      Get get = createGetForBackupInfo(backupId);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      Result res = table.get(get);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      if (res.isEmpty()) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>        return null;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      }<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      return resultToBackupInfo(res);<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><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  /**<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * Read the last backup start code (timestamp) of last successful backup. Will return null if<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * there is no start code stored on hbase or the value is of length 0. These two cases indicate<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * there is no successful backup completed so far.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @param backupRoot directory path to backup destination<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * @return the timestamp of last successful backup<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   * @throws IOException exception<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  public String readBackupStartCode(String backupRoot) throws IOException {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    LOG.trace("read backup start code from backup system table");<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span>    try (Table table = connection.getTable(tableName)) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      Get get = createGetForStartCode(backupRoot);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      Result res = table.get(get);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      if (res.isEmpty()) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        return null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      Cell cell = res.listCells().get(0);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      byte[] val = CellUtil.cloneValue(cell);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      if (val.length == 0) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>        return null;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      }<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      return new String(val);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
-<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
-<span class="sourceLineNo">553</span><a name="line.553"></a>
-<span class="sourceLineNo">554</span>  /**<a name="line.554"></a>
-<span class="sourceLineNo">555</span>   * Write the start code (timestamp) to backup system table. If passed in null, then write 0 byte.<a name="line.555"></a>
-<span class="sourceLineNo">556</span>   * @param startCode start code<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   * @param backupRoot root directory path to backup<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * @throws IOException exception<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   */<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  public void writeBackupStartCode(Long startCode, String backupRoot) throws IOException {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    if (LOG.isTraceEnabled()) {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      LOG.trace("write backup start code to backup system table " + startCode);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    }<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    try (Table table = connection.getTable(tableName)) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      Put put = createPutForStartCode(startCode.toString(), backupRoot);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      table.put(put);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    }<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>   * Exclusive operations are:<a name="line.571"></a>
-<span class="sourceLineNo">572</span>   * create, delete, merge<a name="line.572"></a>
-<span class="sourceLineNo">573</span>   * @throws IOException<a name="line.573"></a>
-<span class="sourceLineNo">574</span>   */<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  public void startBackupExclusiveOperation() throws IOException {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    LOG.debug("Start new backup exclusive operation");<a name="line.576"></a>
-<span class="sourceLineNo">577</span><a name="line.577"></a>
-<span class="sourceLineNo">578</span>    try (Table table = connection.getTable(tableName)) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      Put put = createPutForStartBackupSession();<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      // First try to put if row does not exist<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.581"></a>
-<span class="sourceLineNo">582</span>          .ifNotExists().thenPut(put)) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        // Row exists, try to put if value == ACTIVE_SESSION_NO<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.584"></a>
-<span class="sourceLineNo">585</span>            .ifEquals(ACTIVE_SESSION_NO).thenPut(put)) {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          throw new IOException("There is an active backup exclusive operation");<a name="line.586"></a>
-<span class="sourceLineNo">587</span>        }<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    }<a name="line.589"></a>
-<span class="sourceLineNo">590</span>  }<a name="line.590"></a>
-<span class="sourceLineNo">591</span><a name="line.591"></a>
-<span class="sourceLineNo">592</span>  private Put createPutForStartBackupSession() {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Put put = new Put(ACTIVE_SESSION_ROW);<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    put.addColumn(SESSIONS_FAMILY, ACTIVE_SESSION_COL, ACTIVE_SESSION_YES);<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    return put;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  }<a name="line.596"></a>
-<span class="sourceLineNo">597</span><a name="line.597"></a>
-<span class="sourceLineNo">598</span>  public void finishBackupExclusiveOperation() throws IOException {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    LOG.debug("Finish backup exclusive operation");<a name="line.599"></a>
-<span class="sourceLineNo">600</span><a name="line.600"></a>
-<span class="sourceLineNo">601</span>    try (Table table = connection.getTable(tableName)) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      Put put = createPutForStopBackupSession();<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.603"></a>
-<span class="sourceLineNo">604</span>          .ifEquals(ACTIVE_SESSION_YES).thenPut(put)) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>        throw new IOException("There is no active backup exclusive operation");<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    }<a name="line.607"></a>
-<span class="sourceLineNo">608</span>  }<a name="line.608"></a>
-<span class="sourceLineNo">609</span><a name="line.609"></a>
-<span class="sourceLineNo">610</span>  private Put createPutForStopBackupSession() {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    Put put = new Put(ACTIVE_SESSION_ROW);<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    put.addColumn(SESSIONS_FAMILY, ACTIVE_SESSION_COL, ACTIVE_SESSION_NO);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    return put;<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>   * Get the Region Servers log information after the last log roll from backup system table.<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * @param backupRoot root directory path to backup<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * @return RS log info<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * @throws IOException exception<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   */<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  public HashMap&lt;String, Long&gt; readRegionServerLastLogRollResult(String backupRoot)<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      throws IOException {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    LOG.trace("read region server last roll log result to backup system table");<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    Scan scan = createScanForReadRegionServerLastLogRollResult(backupRoot);<a name="line.626"></a>
-<span class="sourceLineNo">627</span><a name="line.627"></a>
-<span class="sourceLineNo">628</span>    try (Table table = connection.getTable(tableName);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      Result res = null;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      HashMap&lt;String, Long&gt; rsTimestampMap = new HashMap&lt;String, Long&gt;();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      while ((res = scanner.next()) != null) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        res.advance();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>        Cell cell = res.current();<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        byte[] row = CellUtil.cloneRow(cell);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>        String server = getServerNameForReadRegionServerLastLogRollResult(row);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        byte[] data = CellUtil.cloneValue(cell);<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        rsTimestampMap.put(server, Bytes.toLong(data));<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      }<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      return rsTimestampMap;<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    }<a name="line.641"></a>
-<span class="sourceLineNo">642</span>  }<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>  /**<a name="line.644"></a>
-<span class="sourceLineNo">645</span>   * Writes Region Server last roll log result (timestamp) to backup system table table<a name="line.645"></a>
-<span class="sourceLineNo">646</span>   * @param server Region Server name<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   * @param ts last log timestamp<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * @param backupRoot root directory path to backup<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   * @throws IOException exception<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   */<a name="line.650"></a>
-<span class="sourceLineNo">651</span>  public void writeRegionServerLastLogRollResult(String server, Long ts, String backupRoot)<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      throws IOException {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    LOG.trace("write region server last roll log result to backup system table");<a name="line.653"></a>
-<span class="sourceLineNo">654</span><a name="line.654"></a>
-<span class="sourceLineNo">655</span>    try (Table table = connection.getTable(tableName)) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      Put put = createPutForRegionServerLastLogRollResult(server, ts, backupRoot);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      table.put(put);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    }<a name="line.658"></a>
-<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
-<span class="sourceLineNo">660</span><a name="line.660"></a>
-<span class="sourceLineNo">661</span>  /**<a name="line.661"></a>
-<span class="sourceLineNo">662</span>   * Get all completed backup information (in desc order by time)<a name="line.662"></a>
-<span class="sourceLineNo">663</span>   * @param onlyCompleted true, if only successfully completed sessions<a name="line.663"></a>
-<span class="sourceLineNo">664</span>   * @return history info of BackupCompleteData<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * @throws IOException exception<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   */<a name="line.666"></a>
-<span class="sourceLineNo">667</span>  public ArrayList&lt;BackupInfo&gt; getBackupHistory(boolean onlyCompleted) throws IOException {<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    LOG.trace("get backup history from backup system table");<a name="line.668"></a>
-<span class="sourceLineNo">669</span><a name="line.669"></a>
-<span class="sourceLineNo">670</span>    BackupState state = onlyCompleted ? BackupState.COMPLETE : BackupState.ANY;<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    ArrayList&lt;BackupInfo&gt; list = getBackupInfos(state);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    return BackupUtils.sortHistoryListDesc(list);<a name="line.672"></a>
-<span class="sourceLineNo">673</span>  }<a name="line.673"></a>
-<span class="sourceLineNo">674</span><a name="line.674"></a>
-<span class="sourceLineNo">675</span>  /**<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   * Get all backups history<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   * @return list of backup info<a name="line.677"></a>
-<span class="sourceLineNo">678</span>   * @throws IOException<a name="line.678"></a>
-<span class="sourceLineNo">679</span>   */<a name="line.679"></a>
-<span class="sourceLineNo">680</span>  public List&lt;BackupInfo&gt; getBackupHistory() throws IOException {<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    return getBackupHistory(false);<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>   * Get first n backup history records<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * @param n number of records, if n== -1 - max number<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   *        is ignored<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * @return list of records<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   * @throws IOException<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   */<a name="line.690"></a>
-<span class="sourceLineNo">691</span>  public List&lt;BackupInfo&gt; getHistory(int n) throws IOException {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    List&lt;BackupInfo&gt; history = getBackupHistory();<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    if (n == -1 || history.size() &lt;= n) {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      return history;<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    }<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    return Collections.unmodifiableList(history.subList(0, n));<a name="line.696"></a>
-<span class="sourceLineNo">697</span>  }<a name="line.697"></a>
-<span class="sourceLineNo">698</span><a name="line.698"></a>
-<span class="sourceLineNo">699</span>  /**<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * Get backup history records filtered by list of filters.<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   * @param n max number of records, if n == -1 , then max number<a name="line.701"></a>
-<span class="sourceLineNo">702</span>   *        is ignored<a name="line.702"></a>
-<span class="sourceLineNo">703</span>   * @param filters list of filters<a name="line.703"></a>
-<span class="sourceLineNo">704</span>   * @return backup records<a name="line.704"></a>
-<span class="sourceLineNo">705</span>   * @throws IOException<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   */<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  public List&lt;BackupInfo&gt; getBackupHistory(int n, BackupInfo.Filter... filters) throws IOException {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    if (filters.length == 0) return getHistory(n);<a name="line.708"></a>
-<span class="sourceLineNo">709</span><a name="line.709"></a>
-<span class="sourceLineNo">710</span>    List&lt;BackupInfo&gt; history = getBackupHistory();<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    List&lt;BackupInfo&gt; result = new ArrayList&lt;BackupInfo&gt;();<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    for (BackupInfo bi : history) {<a name="line.712"></a>
-<span class="sourceLineNo">713</span>      if (n &gt;= 0 &amp;&amp; result.size() == n) break;<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      boolean passed = true;<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      for (int i = 0; i &lt; filters.length; i++) {<a name="line.715"></a>
-<span class="sourceLineNo">716</span>        if (!filters[i].apply(bi)) {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>          passed = false;<a name="line.717"></a>
-<span class="sourceLineNo">718</span>          break;<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>      if (passed) {<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        result.add(bi);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>      }<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    }<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return result;<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span>  }<a name="line.727"></a>
-<span class="sourceLineNo">728</span><a name="line.728"></a>
-<span class="sourceLineNo">729</span>  /*<a name="line.729"></a>
-<span class="sourceLineNo">730</span>   * Retrieve TableName's for completed backup of given type<a name="line.730"></a>
-<span class="sourceLineNo">731</span>   * @param type backup type<a name="line.731"></a>
-<span class="sourceLineNo">732</span>   * @return List of table names<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
-<span class="sourceLineNo">734</span>  public List&lt;TableName&gt; getTablesForBackupType(BackupType type) throws IOException {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    Set&lt;TableName&gt; names = new HashSet&lt;&gt;();<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    List&lt;BackupInfo&gt; infos = getBackupHistory(true);<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    for (BackupInfo info : infos) {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      if (info.getType() == type) {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>        names.addAll(info.getTableNames());<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      }<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    }<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    return new ArrayList&lt;&gt;(names);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>  }<a name="line.743"></a>
-<span class="sourceLineNo">744</span><a name="line.744"></a>
-<span class="sourceLineNo">745</span>  /**<a name="line.745"></a>
-<span class="sourceLineNo">746</span>   * Get history for backup destination<a name="line.746"></a>
-<span class="sourceLineNo">747</span>   * @param backupRoot backup destination path<a name="line.747"></a>
-<span class="sourceLineNo">748</span>   * @return List of backup info<a name="line.748"></a>
-<span class="sourceLineNo">749</span>   * @throws IOException<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   */<a name="line.750"></a>
-<span class="sourceLineNo">751</span>  public List&lt;BackupInfo&gt; getBackupHistory(String backupRoot) throws IOException {<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    ArrayList&lt;BackupInfo&gt; history = getBackupHistory(false);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    for (Iterator&lt;BackupInfo&gt; iterator = history.iterator(); iterator.hasNext();) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      BackupInfo info = iterator.next();<a name="line.754"></a>
-<span class="sourceLineNo">755</span>      if (!backupRoot.equals(info.getBackupRootDir())) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>        iterator.remove();<a name="line.756"></a>
-<span class="sourceLineNo">757</span>      }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    }<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    return history;<a name="line.759"></a>
-<span class="sourceLineNo">760</span>  }<a name="line.760"></a>
-<span class="sourceLineNo">761</span><a name="line.761"></a>
-<span class="sourceLineNo">762</span>  /**<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   * Get history for a table<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * @param name table name<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * @return history for a table<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   * @throws IOException<a name="line.766"></a>
-<span class="sourceLineNo">767</span>   */<a name="line.767"></a>
-<span class="sourceLineNo">768</span>  public List&lt;BackupInfo&gt; getBackupHistoryForTable(TableName name) throws IOException {<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    List&lt;BackupInfo&gt; history = getBackupHistory();<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    List&lt;BackupInfo&gt; tableHistory = new ArrayList&lt;BackupInfo&gt;();<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    for (BackupInfo info : history) {<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      List&lt;TableName&gt; tables = info.getTableNames();<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      if (tables.contains(name)) {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>        tableHistory.add(info);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>      }<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    }<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    return tableHistory;<a name="line.777"></a>
-<span class="sourceLineNo">778</span>  }<a name="line.778"></a>
-<span class="sourceLineNo">779</span><a name="line.779"></a>
-<span class="sourceLineNo">780</span>  public Map&lt;TableName, ArrayList&lt;BackupInfo&gt;&gt; getBackupHistoryForTableSet(Set&lt;TableName&gt; set,<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      String backupRoot) throws IOException {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    List&lt;BackupInfo&gt; history = getBackupHistory(backupRoot);<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    Map&lt;TableName, ArrayList&lt;BackupInfo&gt;&gt; tableHistoryMap =<a name="line.783"></a>
-<span class="sourceLineNo">784</span>        new HashMap&lt;TableName, ArrayList&lt;BackupInfo&gt;&gt;();<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    for (Iterator&lt;BackupInfo&gt; iterator = history.iterator(); iterator.hasNext();) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      BackupInfo info = iterator.next();<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      if (!backupRoot.equals(info.getBackupRootDir())) {<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        continue;<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      }<a name="line.789"></a>
-<span class="sourceLineNo">790</span>      List&lt;TableName&gt; tables = info.getTableNames();<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      for (TableName tableName : tables) {<a name="line.791"></a>
-<span class="sourceLineNo">792</span>        if (set.contains(tableName)) {<a name="line.792"></a>
-<span class="sourceLineNo">793</span>          ArrayList&lt;BackupInfo&gt; list = tableHistoryMap.get(tableName);<a name="line.793"></a>
-<span class="sourceLineNo">794</span>          if (list == null) {<a name="line.794"></a>
-<span class="sourceLineNo">795</span>            list = new ArrayList&lt;BackupInfo&gt;();<a name="line.795"></a>
-<span class="sourceLineNo">796</span>            tableHistoryMap.put(tableName, list);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>          }<a name="line.797"></a>
-<span class="sourceLineNo">798</span>          list.add(info);<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        }<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      }<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    }<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    return tableHistoryMap;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>  }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>  /**<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * Get all backup sessions with a given state (in descending order by time)<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * @param state backup session state<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   * @return history info of backup info objects<a name="line.808"></a>
-<span class="sourceLineNo">809</span>   * @throws IOException exception<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   */<a name="line.810"></a>
-<span class="sourceLineNo">811</span>  public ArrayList&lt;BackupInfo&gt; getBackupInfos(BackupState state) throws IOException {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    LOG.trace("get backup infos from backup system table");<a name="line.812"></a>
-<span class="sourceLineNo">813</span><a name="line.813"></a>
-<span class="sourceLineNo">814</span>    Scan scan = createScanForBackupHistory();<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    ArrayList&lt;BackupInfo&gt; list = new ArrayList&lt;BackupInfo&gt;();<a name="line.815"></a>
-<span class="sourceLineNo">816</span><a name="line.816"></a>
-<span class="sourceLineNo">817</span>    try (Table table = connection.getTable(tableName);<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>      Result res = null;<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      while ((res = scanner.next()) != null) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>        res.advance();<a name="line.821"></a>
-<span class="sourceLineNo">822</span>        BackupInfo context = cellToBackupInfo(res.current());<a name="line.822"></a>
-<span class="sourceLineNo">823</span>        if (state != BackupState.ANY &amp;&amp; context.getState() != state) {<a name="line.823"></a>
-<span class="sourceLineNo">824</span>          continue;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>        }<a name="line.825"></a>
-<span class="sourceLineNo">826</span>        list.add(context);<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      }<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      return list;<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    }<a name="line.829"></a>
-<span class="sourceLineNo">830</span>  }<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>  /**<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   * Write the current timestamps for each regionserver to backup system table after a successful<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   * full or incremental backup. The saved timestamp is of the last log file that was backed up<a name="line.834"></a>
-<span class="sourceLineNo">835</span>   * already.<a name="line.835"></a>
-<span class="sourceLineNo">836</span>   * @param tables tables<a name="line.836"></a>
-<span class="sourceLineNo">837</span>   * @param newTimestamps timestamps<a name="line.837"></a>
-<span class="sourceLineNo">838</span>   * @param backupRoot root directory path to backup<a name="line.838"></a>
-<span class="sourceLineNo">839</span>   * @throws IOException exception<a name="line.839"></a>
-<span class="sourceLineNo">840</span>   */<a name="line.840"></a>
-<span class="sourceLineNo">841</span>  public void writeRegionServerLogTimestamp(Set&lt;TableName&gt; tables,<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      HashMap&lt;String, Long&gt; newTimestamps, String backupRoot) throws IOException {<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    if (LOG.isTraceEnabled()) {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      LOG.trace("write RS log time stamps to backup system table for tables ["<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          + StringUtils.join(tables, ",") + "]");<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    }<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    List&lt;Put&gt; puts = new ArrayList&lt;Put&gt;();<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    for (TableName table : tables) {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>      byte[] smapData = toTableServerTimestampProto(table, newTimestamps).toByteArray();<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      Put put = createPutForWriteRegionServerLogTimestamp(table, smapData, backupRoot);<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      puts.add(put);<a name="line.851"></a>
-<span class="sourceLineNo">852</span>    }<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    try (Table table = connection.getTable(tableName)) {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      table.put(puts);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    }<a name="line.855"></a>
-<span class="sourceLineNo">856</span>  }<a name="line.856"></a>
-<span class="sourceLineNo">857</span><a name="line.857"></a>
-<span class="sourceLineNo">858</span>  /**<a name="line.858"></a>
-<span class="sourceLineNo">859</span>   * Read the timestamp for each region server log after the last successful backup. Each table has<a name="line.859"></a>
-<span class="sourceLineNo">860</span>   * its own set of the timestamps. The info is stored for each table as a concatenated string of<a name="line.860"></a>
-<span class="sourceLineNo">861</span>   * rs-&gt;timestapmp<a name="line.861"></a>
-<span class="sourceLineNo">862</span>   * @param backupRoot root directory path to backup<a name="line.862"></a>
-<span class="sourceLineNo">863</span>   * @return the timestamp for each region server. key: tableName value:<a name="line.863"></a>
-<span class="sourceLineNo">864</span>   *         RegionServer,PreviousTimeStamp<a name="line.864"></a>
-<span class="sourceLineNo">865</span>   * @throws IOException exception<a name="line.865"></a>
-<span class="sourceLineNo">866</span>   */<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  public HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt; readLogTimestampMap(String backupRoot)<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      throws IOException {<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    if (LOG.isTraceEnabled()) {<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      LOG.trace("read RS log ts from backup system table for root=" + backupRoot);<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>    HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt; tableTimestampMap =<a name="line.873"></a>
-<span class="sourceLineNo">874</span>        new HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt;();<a name="line.874"></a>
-<span class="sourceLineNo">875</span><a name="line.875"></a>
-<span class="sourceLineNo">876</span>    Scan scan = createScanForReadLogTimestampMap(backupRoot);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    try (Table table = connection.getTable(tableName);<a name="line.877"></a>
-<span class="sourceLineNo">878</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      Result res = null;<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      while ((res = scanner.next()) != null) {<a name="line.880"></a>
-<span class="sourceLineNo">881</span>        res.advance();<a name="line.881"></a>
-<span class="sourceLineNo">882</span>        Cell cell = res.current();<a name="line.882"></a>
-<span class="sourceLineNo">883</span>        byte[] row = CellUtil.cloneRow(cell);<a name="line.883"></a>
-<span class="sourceLineNo">884</span>        String tabName = getTableNameForReadLogTimestampMap(row);<a name="line.884"></a>
-<span class="sourceLineNo">885</span>        TableName tn = TableName.valueOf(tabName);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>        byte[] data = CellUtil.cloneValue(cell);<a name="line.886"></a>
-<span class="sourceLineNo">887</span>        if (data == null) {<a name="line.887"></a>
-<span class="sourceLineNo">888</span>          throw new IOException("Data of last backup data from backup system table "<a name="line.888"></a>
-<span class="sourceLineNo">889</span>              + "is empty. Create a backup first.");<a name="line.889"></a>
-<span class="sourceLineNo">890</span>        }<a name="line.890"></a>
-<span class="sourceLineNo">891</span>        if (data != null &amp;&amp; data.length &gt; 0) {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>          HashMap&lt;String, Long&gt; lastBackup =<a name="line.892"></a>
-<span class="sourceLineNo">893</span>              fromTableServerTimestampProto(BackupProtos.TableServerTimestamp.parseFrom(data));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>          tableTimestampMap.put(tn, lastBackup);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        }<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span>      return tableTimestampMap;<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    }<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  }<a name="line.899"></a>
-<span class="sourceLineNo">900</span><a name="line.900"></a>
-<span class="sourceLineNo">901</span>  private BackupProtos.TableServerTimestamp toTableServerTimestampProto(TableName table,<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      Map&lt;String, Long&gt; map) {<a name="line.902"></a>
-<span class="sourceLineNo">903</span>    BackupProtos.TableServerTimestamp.Builder tstBuilder =<a name="line.903"></a>
-<span class="sourceLineNo">904</span>        BackupProtos.TableServerTimestamp.newBuilder();<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    tstBuilder.setTableName(org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil<a name="line.905"></a>
-<span class="sourceLineNo">906</span>        .toProtoTableName(table));<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>    for (Entry&lt;String, Long&gt; entry : map.entrySet()) {<a name="line.908"></a>
-<span class="sourceLineNo">909</span>      BackupProtos.ServerTimestamp.Builder builder = BackupProtos.ServerTimestamp.newBuilder();<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      HBaseProtos.ServerName.Builder snBuilder = HBaseProtos.ServerName.newBuilder();<a name="line.910"></a>
-<span class="sourceLineNo">911</span>      ServerName sn = ServerName.parseServerName(entry.getKey());<a name="line.911"></a>
-<span class="sourceLineNo">912</span>      snBuilder.setHostName(sn.getHostname());<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      snBuilder.setPort(sn.getPort());<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      builder.setServerName(snBuilder.build());<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      builder.setTimestamp(entry.getValue());<a name="line.915"></a>
-<span class="sourceLineNo">916</span>      tstBuilder.addServerTimestamp(builder.build());<a name="line.916"></a>
-<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
-<span class="sourceLineNo">918</span><a name="line.918"></a>
-<span class="sourceLineNo">919</span>    return tstBuilder.build();<a name="line.919"></a>
-<span class="sourceLineNo">920</span>  }<a name="line.920"></a>
-<span class="sourceLineNo">921</span><a name="line.921"></a>
-<span class="sourceLineNo">922</span>  private HashMap&lt;String, Long&gt; fromTableServerTimestampProto(<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      BackupProtos.TableServerTimestamp proto) {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>    HashMap&lt;String, Long&gt; map = new HashMap&lt;String, Long&gt;();<a name="line.924"></a>
-<span class="sourceLineNo">925</span>    List&lt;BackupProtos.ServerTimestamp&gt; list = proto.getServerTimestampList();<a name="line.925"></a>
-<span class="sourceLineNo">926</span>    for (BackupProtos.ServerTimestamp st : list) {<a name="line.926"></a>
-<span class="sourceLineNo">927</span>      ServerName sn =<a name="line.927"></a>
-<span class="sourceLineNo">928</span>          org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.toServerName(st.getServerName());<a name="line.928"></a>
-<span class="sourceLineNo">929</span>      map.put(sn.getHostname() + ":" + sn.getPort(), st.getTimestamp());<a name="line.929"></a>
-<span class="sourceLineNo">930</span>    }<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    return map;<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>  /**<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * Return the current tables covered by incremental backup.<a name="line.935"></a>
-<span class="sourceLineNo">936</s

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
index 06bfdb8..0e19ee6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
index 404dcf2..60968df 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
index 7683b05..28eaf8d 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
index 267f6cc..afa1d49 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
index cdf6d07..a4c4ea7 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -4193,7 +4193,7 @@ built on Jackson JSON processor</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
index 7ac47e9..cfa19fe 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
index 2b5fbeb..91c45fa 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
index 6971d17..85ce535 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
index c6e28a0..f38f804 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
index 1f00954..7114add 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
index 6090f97..ac8451e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
index 1e78ad5..1014efd 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
index a04c6b4..15baad1 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
index fac78ce..094c5c9 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
index d78ec59..c975260 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -226,7 +226,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
index f3dab87..9fd26f8 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
index e43b1ba..0579add 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
index ff22f96..6272e92 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
index 4025e7f..ce19502 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
index c3efe7d..05b458b 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/index.html b/hbase-build-configuration/hbase-archetypes/index.html
index 0f9a345..14eaf87 100644
--- a/hbase-build-configuration/hbase-archetypes/index.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -135,7 +135,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/integration.html b/hbase-build-configuration/hbase-archetypes/integration.html
index d08490f..6b20621 100644
--- a/hbase-build-configuration/hbase-archetypes/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/issue-tracking.html
index 619518f..2d57c8f 100644
--- a/hbase-build-configuration/hbase-archetypes/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/license.html b/hbase-build-configuration/hbase-archetypes/license.html
index b28fcaf..3efaa08 100644
--- a/hbase-build-configuration/hbase-archetypes/license.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/mail-lists.html b/hbase-build-configuration/hbase-archetypes/mail-lists.html
index 021f780..78ee245 100644
--- a/hbase-build-configuration/hbase-archetypes/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/plugin-management.html b/hbase-build-configuration/hbase-archetypes/plugin-management.html
index 695f7cd..c7abc0f 100644
--- a/hbase-build-configuration/hbase-archetypes/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/plugins.html b/hbase-build-configuration/hbase-archetypes/plugins.html
index 9c8231e..4fd0eb9 100644
--- a/hbase-build-configuration/hbase-archetypes/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -214,7 +214,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/project-info.html b/hbase-build-configuration/hbase-archetypes/project-info.html
index 1e7eb36..cfae39d 100644
--- a/hbase-build-configuration/hbase-archetypes/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/project-summary.html b/hbase-build-configuration/hbase-archetypes/project-summary.html
index 5f0e172..63c903b 100644
--- a/hbase-build-configuration/hbase-archetypes/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/source-repository.html b/hbase-build-configuration/hbase-archetypes/source-repository.html
index 0dfffdc..a7d93d5 100644
--- a/hbase-build-configuration/hbase-archetypes/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/team-list.html b/hbase-build-configuration/hbase-archetypes/team-list.html
index dfa7738..f7dda54 100644
--- a/hbase-build-configuration/hbase-archetypes/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/checkstyle.html b/hbase-build-configuration/hbase-spark/checkstyle.html
index f7f0ca5..e61c6d2 100644
--- a/hbase-build-configuration/hbase-spark/checkstyle.html
+++ b/hbase-build-configuration/hbase-spark/checkstyle.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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependencies.html b/hbase-build-configuration/hbase-spark/dependencies.html
index f823246..5abd227 100644
--- a/hbase-build-configuration/hbase-spark/dependencies.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -5692,7 +5692,7 @@ file comparators, endian transformation classes, and much more.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-convergence.html b/hbase-build-configuration/hbase-spark/dependency-convergence.html
index 50ba880..6c3a1ba 100644
--- a/hbase-build-configuration/hbase-spark/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-info.html b/hbase-build-configuration/hbase-spark/dependency-info.html
index 0c56e8a..70d1a9d 100644
--- a/hbase-build-configuration/hbase-spark/dependency-info.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-management.html b/hbase-build-configuration/hbase-spark/dependency-management.html
index 1aece1b..c86d591 100644
--- a/hbase-build-configuration/hbase-spark/dependency-management.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/index.html b/hbase-build-configuration/hbase-spark/index.html
index 371b412..df40edd 100644
--- a/hbase-build-configuration/hbase-spark/index.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/integration.html b/hbase-build-configuration/hbase-spark/integration.html
index 5b7d0a4..9fb18e4 100644
--- a/hbase-build-configuration/hbase-spark/integration.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/issue-tracking.html b/hbase-build-configuration/hbase-spark/issue-tracking.html
index bf36d0a..5d9ad6f 100644
--- a/hbase-build-configuration/hbase-spark/issue-tracking.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/license.html b/hbase-build-configuration/hbase-spark/license.html
index 7ed9d52..962d794 100644
--- a/hbase-build-configuration/hbase-spark/license.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/mail-lists.html b/hbase-build-configuration/hbase-spark/mail-lists.html
index 9f20d16..5a4400d 100644
--- a/hbase-build-configuration/hbase-spark/mail-lists.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/plugin-management.html b/hbase-build-configuration/hbase-spark/plugin-management.html
index 8c63fbe..8c5c5a3 100644
--- a/hbase-build-configuration/hbase-spark/plugin-management.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/plugins.html b/hbase-build-configuration/hbase-spark/plugins.html
index a8a9c80..8e25a61 100644
--- a/hbase-build-configuration/hbase-spark/plugins.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -238,7 +238,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-info.html b/hbase-build-configuration/hbase-spark/project-info.html
index cc6f967..62d39c6 100644
--- a/hbase-build-configuration/hbase-spark/project-info.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-reports.html b/hbase-build-configuration/hbase-spark/project-reports.html
index 1f3a212..5f1b3b1 100644
--- a/hbase-build-configuration/hbase-spark/project-reports.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -131,7 +131,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-summary.html b/hbase-build-configuration/hbase-spark/project-summary.html
index 68ece6d..7574c73 100644
--- a/hbase-build-configuration/hbase-spark/project-summary.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/source-repository.html b/hbase-build-configuration/hbase-spark/source-repository.html
index 57beb21..ce7dd1c 100644
--- a/hbase-build-configuration/hbase-spark/source-repository.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-spark/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/team-list.html b/hbase-build-configuration/hbase-spark/team-list.html
index 7cf4814..3eb8a1d 100644
--- a/hbase-build-configuration/hbase-spark/team-list.html
+++ b/hbase-build-configuration/hbase-spark/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/index.html b/hbase-build-configuration/index.html
index 60648ed..ea1e72a 100644
--- a/hbase-build-configuration/index.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/integration.html b/hbase-build-configuration/integration.html
index 0bbcb08..a2b2347 100644
--- a/hbase-build-configuration/integration.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/issue-tracking.html b/hbase-build-configuration/issue-tracking.html
index 794e335..35ce623 100644
--- a/hbase-build-configuration/issue-tracking.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/license.html b/hbase-build-configuration/license.html
index 982c4b9..2d7d129 100644
--- a/hbase-build-configuration/license.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/mail-lists.html b/hbase-build-configuration/mail-lists.html
index c5c260d..cb60ba3 100644
--- a/hbase-build-configuration/mail-lists.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/plugin-management.html b/hbase-build-configuration/plugin-management.html
index 516d088..471a76d 100644
--- a/hbase-build-configuration/plugin-management.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/plugins.html b/hbase-build-configuration/plugins.html
index c4347f0..848e007 100644
--- a/hbase-build-configuration/plugins.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -214,7 +214,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/project-info.html b/hbase-build-configuration/project-info.html
index eeab242..421e317 100644
--- a/hbase-build-configuration/project-info.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/project-summary.html b/hbase-build-configuration/project-summary.html
index 9e2a8f4..e678d9b 100644
--- a/hbase-build-configuration/project-summary.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/source-repository.html b/hbase-build-configuration/source-repository.html
index 1b735f0..03638ed 100644
--- a/hbase-build-configuration/source-repository.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/team-list.html b/hbase-build-configuration/team-list.html
index 89e30da..47816c2 100644
--- a/hbase-build-configuration/team-list.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/checkstyle.html b/hbase-shaded-check-invariants/checkstyle.html
index 4f5035d..7fbca65 100644
--- a/hbase-shaded-check-invariants/checkstyle.html
+++ b/hbase-shaded-check-invariants/checkstyle.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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependencies.html b/hbase-shaded-check-invariants/dependencies.html
index 242cfb3..623894e 100644
--- a/hbase-shaded-check-invariants/dependencies.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -2883,7 +2883,7 @@ Jackson JSON processor's data binding functionality.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-convergence.html b/hbase-shaded-check-invariants/dependency-convergence.html
index 0df76ec..bfa1c7a 100644
--- a/hbase-shaded-check-invariants/dependency-convergence.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-shaded-check-invariants/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-info.html b/hbase-shaded-check-invariants/dependency-info.html
index 0566a88..3dc98a6 100644
--- a/hbase-shaded-check-invariants/dependency-info.html
+++ b/hbase-shaded-check-invariants/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html b/devapidocs/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html
index afbc35b..4c00585 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html
@@ -367,7 +367,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/cleaner/BaseLo
 <ul class="blockList">
 <li class="blockList">
 <h4>setConf</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html#line.120">setConf</a>(org.apache.hadoop.conf.Configuration&nbsp;config)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html#line.124">setConf</a>(org.apache.hadoop.conf.Configuration&nbsp;config)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>setConf</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.conf.Configurable</code></dd>
@@ -382,7 +382,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/cleaner/BaseLo
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html#line.130">stop</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html#line.134">stop</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;why)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/Stoppable.html#stop-java.lang.String-">Stoppable</a></code></span></div>
 <div class="block">Stop this service.
  Implementers should favor logging errors over throwing RuntimeExceptions.</div>
@@ -398,7 +398,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/cleaner/BaseLo
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isStopped</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html#line.139">isStopped</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html#line.143">isStopped</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if <a href="../../../../../../org/apache/hadoop/hbase/Stoppable.html#stop-java.lang.String-"><code>Stoppable.stop(String)</code></a> has been closed.</dd>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html b/devapidocs/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html
index 9bf699f..f79c313 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.434">BufferedMutatorImpl.QueueRowAccess</a>
+<pre>private class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.436">BufferedMutatorImpl.QueueRowAccess</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/client/RowAccess.html" title="interface in org.apache.hadoop.hbase.client">RowAccess</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;</pre>
 </li>
@@ -231,7 +231,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RowAccess.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>remainder</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.435">remainder</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.437">remainder</a></pre>
 </li>
 </ul>
 </li>
@@ -248,7 +248,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RowAccess.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>QueueRowAccess</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.434">QueueRowAccess</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.436">QueueRowAccess</a>()</pre>
 </li>
 </ul>
 </li>
@@ -265,7 +265,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RowAccess.html
 <ul class="blockList">
 <li class="blockList">
 <h4>reset</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.437">reset</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.439">reset</a>()</pre>
 </li>
 </ul>
 <a name="iterator--">
@@ -274,7 +274,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RowAccess.html
 <ul class="blockList">
 <li class="blockList">
 <h4>iterator</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.443">iterator</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.445">iterator</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true#iterator--" title="class or interface in java.lang">iterator</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;</code></dd>
@@ -287,7 +287,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RowAccess.html
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.480">size</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.482">size</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RowAccess.html#size--">size</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RowAccess.html" title="interface in org.apache.hadoop.hbase.client">RowAccess</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;</code></dd>
@@ -302,7 +302,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RowAccess.html
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreRemainder</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.484">restoreRemainder</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.486">restoreRemainder</a>()</pre>
 </li>
 </ul>
 <a name="isEmpty--">
@@ -311,7 +311,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RowAccess.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isEmpty</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.492">isEmpty</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html#line.494">isEmpty</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RowAccess.html#isEmpty--">isEmpty</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RowAccess.html" title="interface in org.apache.hadoop.hbase.client">RowAccess</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html b/devapidocs/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html
index c574ac7..b372452 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html
@@ -203,11 +203,11 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#currentWriteBufferSize">currentWriteBufferSize</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private long</code></td>
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#executedWriteBufferPeriodicFlushes">executedWriteBufferPeriodicFlushes</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private long</code></td>
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#firstRecordInBufferTimestamp">firstRecordInBufferTimestamp</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -249,7 +249,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#writeAsyncBuffer">writeAsyncBuffer</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private long</code></td>
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#writeBufferPeriodicFlushTimeoutMs">writeBufferPeriodicFlushTimeoutMs</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -257,7 +257,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#writeBufferPeriodicFlushTimer">writeBufferPeriodicFlushTimer</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private long</code></td>
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicLong.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicLong</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#writeBufferPeriodicFlushTimerTickMs">writeBufferPeriodicFlushTimerTickMs</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -535,7 +535,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>writeBufferPeriodicFlushTimeoutMs</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.81">writeBufferPeriodicFlushTimeoutMs</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/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/client/BufferedMutatorImpl.html#line.81">writeBufferPeriodicFlushTimeoutMs</a></pre>
 </li>
 </ul>
 <a name="writeBufferPeriodicFlushTimerTickMs">
@@ -544,7 +544,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>writeBufferPeriodicFlushTimerTickMs</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.82">writeBufferPeriodicFlushTimerTickMs</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/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/client/BufferedMutatorImpl.html#line.82">writeBufferPeriodicFlushTimerTickMs</a></pre>
 </li>
 </ul>
 <a name="writeBufferPeriodicFlushTimer">
@@ -553,7 +553,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>writeBufferPeriodicFlushTimer</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Timer.html?is-external=true" title="class or interface in java.util">Timer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.83">writeBufferPeriodicFlushTimer</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Timer.html?is-external=true" title="class or interface in java.util">Timer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.84">writeBufferPeriodicFlushTimer</a></pre>
 </li>
 </ul>
 <a name="maxKeyValueSize">
@@ -562,7 +562,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>maxKeyValueSize</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.85">maxKeyValueSize</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.86">maxKeyValueSize</a></pre>
 </li>
 </ul>
 <a name="pool">
@@ -571,7 +571,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>pool</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.86">pool</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.87">pool</a></pre>
 </li>
 </ul>
 <a name="rpcTimeout">
@@ -580,7 +580,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>rpcTimeout</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.87">rpcTimeout</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.88">rpcTimeout</a></pre>
 </li>
 </ul>
 <a name="operationTimeout">
@@ -589,7 +589,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>operationTimeout</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.88">operationTimeout</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.89">operationTimeout</a></pre>
 </li>
 </ul>
 <a name="cleanupPoolOnClose">
@@ -598,7 +598,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanupPoolOnClose</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.89">cleanupPoolOnClose</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.90">cleanupPoolOnClose</a></pre>
 </li>
 </ul>
 <a name="closed">
@@ -607,7 +607,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>closed</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.90">closed</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.91">closed</a></pre>
 </li>
 </ul>
 <a name="ap">
@@ -616,7 +616,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>ap</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcess.html" title="class in org.apache.hadoop.hbase.client">AsyncProcess</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.91">ap</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcess.html" title="class in org.apache.hadoop.hbase.client">AsyncProcess</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.92">ap</a></pre>
 </li>
 </ul>
 <a name="firstRecordInBufferTimestamp">
@@ -625,7 +625,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>firstRecordInBufferTimestamp</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.220">firstRecordInBufferTimestamp</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/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/client/BufferedMutatorImpl.html#line.221">firstRecordInBufferTimestamp</a></pre>
 </li>
 </ul>
 <a name="executedWriteBufferPeriodicFlushes">
@@ -634,7 +634,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockListLast">
 <li class="blockList">
 <h4>executedWriteBufferPeriodicFlushes</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.221">executedWriteBufferPeriodicFlushes</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/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/client/BufferedMutatorImpl.html#line.222">executedWriteBufferPeriodicFlushes</a></pre>
 </li>
 </ul>
 </li>
@@ -651,7 +651,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>BufferedMutatorImpl</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.94">BufferedMutatorImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;conn,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.95">BufferedMutatorImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;conn,
                     <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutatorParams.html" title="class in org.apache.hadoop.hbase.client">BufferedMutatorParams</a>&nbsp;params,
                     <a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcess.html" title="class in org.apache.hadoop.hbase.client">AsyncProcess</a>&nbsp;ap)</pre>
 </li>
@@ -662,7 +662,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BufferedMutatorImpl</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.139">BufferedMutatorImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;conn,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.140">BufferedMutatorImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a>&nbsp;conn,
                     <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerFactory.html" title="class in org.apache.hadoop.hbase.client">RpcRetryingCallerFactory</a>&nbsp;rpcCallerFactory,
                     <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcControllerFactory.html" title="class in org.apache.hadoop.hbase.ipc">RpcControllerFactory</a>&nbsp;rpcFactory,
                     <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutatorParams.html" title="class in org.apache.hadoop.hbase.client">BufferedMutatorParams</a>&nbsp;params)</pre>
@@ -682,7 +682,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>getPool</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.147">getPool</a>()</pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html?is-external=true" title="class or interface in java.util.concurrent">ExecutorService</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.148">getPool</a>()</pre>
 </li>
 </ul>
 <a name="getAsyncProcess--">
@@ -691,7 +691,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>getAsyncProcess</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcess.html" title="class in org.apache.hadoop.hbase.client">AsyncProcess</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.152">getAsyncProcess</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcess.html" title="class in org.apache.hadoop.hbase.client">AsyncProcess</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.153">getAsyncProcess</a>()</pre>
 </li>
 </ul>
 <a name="getName--">
@@ -700,7 +700,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>getName</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.157">getName</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.158">getName</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutator.html#getName--">BufferedMutator</a></code></span></div>
 <div class="block">Gets the fully qualified table name instance of the table that this BufferedMutator writes to.</div>
 <dl>
@@ -715,7 +715,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfiguration</h4>
-<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.162">getConfiguration</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.163">getConfiguration</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutator.html#getConfiguration--">BufferedMutator</a></code></span></div>
 <div class="block">Returns the <code>Configuration</code> object used by this instance.
  <p>
@@ -733,7 +733,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>mutate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.167">mutate</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;m)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.168">mutate</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;m)
             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/InterruptedIOException.html?is-external=true" title="class or interface in java.io">InterruptedIOException</a>,
                    <a href="../../../../../org/apache/hadoop/hbase/client/RetriesExhaustedWithDetailsException.html" title="class in org.apache.hadoop.hbase.client">RetriesExhaustedWithDetailsException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutator.html#mutate-org.apache.hadoop.hbase.client.Mutation-">BufferedMutator</a></code></span></div>
@@ -756,7 +756,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>mutate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.173">mutate</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;ms)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.174">mutate</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;ms)
             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/InterruptedIOException.html?is-external=true" title="class or interface in java.io">InterruptedIOException</a>,
                    <a href="../../../../../org/apache/hadoop/hbase/client/RetriesExhaustedWithDetailsException.html" title="class in org.apache.hadoop.hbase.client">RetriesExhaustedWithDetailsException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutator.html#mutate-java.util.List-">BufferedMutator</a></code></span></div>
@@ -780,7 +780,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>getExecutedWriteBufferPeriodicFlushes</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.216">getExecutedWriteBufferPeriodicFlushes</a>()</pre>
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.217">getExecutedWriteBufferPeriodicFlushes</a>()</pre>
 </li>
 </ul>
 <a name="timerCallbackForWriteBufferPeriodicFlush--">
@@ -789,7 +789,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>timerCallbackForWriteBufferPeriodicFlush</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.223">timerCallbackForWriteBufferPeriodicFlush</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.224">timerCallbackForWriteBufferPeriodicFlush</a>()</pre>
 </li>
 </ul>
 <a name="validatePut-org.apache.hadoop.hbase.client.Put-">
@@ -798,7 +798,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>validatePut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.241">validatePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.242">validatePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put)
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -812,7 +812,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.246">close</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.247">close</a>()
            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutator.html#close--">BufferedMutator</a></code></span></div>
 <div class="block">Performs a <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutator.html#flush--"><code>BufferedMutator.flush()</code></a> and releases any resources held.</div>
@@ -834,7 +834,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>flush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.280">flush</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.281">flush</a>()
            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/InterruptedIOException.html?is-external=true" title="class or interface in java.io">InterruptedIOException</a>,
                   <a href="../../../../../org/apache/hadoop/hbase/client/RetriesExhaustedWithDetailsException.html" title="class in org.apache.hadoop.hbase.client">RetriesExhaustedWithDetailsException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutator.html#flush--">BufferedMutator</a></code></span></div>
@@ -855,7 +855,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>backgroundFlushCommits</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.295">backgroundFlushCommits</a>(boolean&nbsp;synchronous)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.296">backgroundFlushCommits</a>(boolean&nbsp;synchronous)
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/InterruptedIOException.html?is-external=true" title="class or interface in java.io">InterruptedIOException</a>,
                                     <a href="../../../../../org/apache/hadoop/hbase/client/RetriesExhaustedWithDetailsException.html" title="class in org.apache.hadoop.hbase.client">RetriesExhaustedWithDetailsException</a></pre>
 <div class="block">Send the operations in the buffer to the servers. Does not wait for the server's answer. If
@@ -877,7 +877,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>wrapAsyncProcessTask</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.html" title="class in org.apache.hadoop.hbase.client">AsyncProcessTask</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.344">wrapAsyncProcessTask</a>(<a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html" title="class in org.apache.hadoop.hbase.client">BufferedMutatorImpl.QueueRowAccess</a>&nbsp;taker)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.html" title="class in org.apache.hadoop.hbase.client">AsyncProcessTask</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.345">wrapAsyncProcessTask</a>(<a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html" title="class in org.apache.hadoop.hbase.client">BufferedMutatorImpl.QueueRowAccess</a>&nbsp;taker)</pre>
 <div class="block">Reuse the AsyncProcessTask when calling
  <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#backgroundFlushCommits-boolean-"><code>backgroundFlushCommits(boolean)</code></a>.</div>
 <dl>
@@ -894,7 +894,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>getWriteBufferSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.368">getWriteBufferSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.369">getWriteBufferSize</a>()</pre>
 <div class="block">Returns the maximum size in bytes of the write buffer for this HTable.
  <p>
  The default value comes from the configuration parameter <code>hbase.client.write.buffer</code>.</div>
@@ -912,7 +912,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>setWriteBufferPeriodicFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.373">setWriteBufferPeriodicFlush</a>(long&nbsp;timeoutMs,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.374">setWriteBufferPeriodicFlush</a>(long&nbsp;timeoutMs,
                                         long&nbsp;timerTickMs)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutator.html#setWriteBufferPeriodicFlush-long-long-">BufferedMutator</a></code></span></div>
 <div class="block">Sets the maximum time before the buffer is automatically flushed.</div>
@@ -935,7 +935,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>getWriteBufferPeriodicFlushTimeoutMs</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.405">getWriteBufferPeriodicFlushTimeoutMs</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.407">getWriteBufferPeriodicFlushTimeoutMs</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutator.html#getWriteBufferPeriodicFlushTimeoutMs--">BufferedMutator</a></code></span></div>
 <div class="block">Returns the current periodic flush timeout value in milliseconds.</div>
 <dl>
@@ -953,7 +953,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>getWriteBufferPeriodicFlushTimerTickMs</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.410">getWriteBufferPeriodicFlushTimerTickMs</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.412">getWriteBufferPeriodicFlushTimerTickMs</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutator.html#getWriteBufferPeriodicFlushTimerTickMs--">BufferedMutator</a></code></span></div>
 <div class="block">Returns the current periodic flush timertick interval in milliseconds.</div>
 <dl>
@@ -971,7 +971,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>setRpcTimeout</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.415">setRpcTimeout</a>(int&nbsp;rpcTimeout)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.417">setRpcTimeout</a>(int&nbsp;rpcTimeout)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutator.html#setRpcTimeout-int-">BufferedMutator</a></code></span></div>
 <div class="block">Set rpc timeout for this mutator instance</div>
 <dl>
@@ -986,7 +986,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>setOperationTimeout</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.420">setOperationTimeout</a>(int&nbsp;operationTimeout)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.422">setOperationTimeout</a>(int&nbsp;operationTimeout)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutator.html#setOperationTimeout-int-">BufferedMutator</a></code></span></div>
 <div class="block">Set operation timeout for this mutator instance</div>
 <dl>
@@ -1001,7 +1001,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentWriteBufferSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.425">getCurrentWriteBufferSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.427">getCurrentWriteBufferSize</a>()</pre>
 </li>
 </ul>
 <a name="size--">
@@ -1010,7 +1010,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/BufferedMutato
 <ul class="blockListLast">
 <li class="blockList">
 <h4>size</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.430">size</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.html#line.432">size</a>()</pre>
 </li>
 </ul>
 </li>

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

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

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

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

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

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

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

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

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

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


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html b/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html
index 570e7a1..f9c6b45 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":9,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":9,"i25":9,"i26":10,"i27":10,"i28":10,"i29":9,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":9,"i40":10,"i41":9,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":9,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":9,"i67":10,"i68":9,"i69":9,"i70":9,"i71":9,"i72":10,"i73":9,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":9,"i91":10,"i92":9,"i93":9,"i94":9,"i95":9,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":9,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":9,"i26":9,"i27":10,"i28":10,"i29":10,"i30":9,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":9,"i41":10,"i42":9,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":9,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":9,"i68":10,"i69":9,"i70":9,"i71":9,"i72":9,"i73":10,"i74":9,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":9,"i92":10,"i93":9,"i94":9,"i95":9,"i96":9,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109":10,"i110":10}
 ;
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.91">BackupSystemTable</a>
+public final class <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.92">BackupSystemTable</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></pre>
 <div class="block">This class provides API to access backup system table<br>
@@ -348,117 +348,123 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 </td>
 </tr>
 <tr id="i3" class="rowColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;org.apache.hadoop.fs.FileStatus,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#areWALFilesDeletable-java.lang.Iterable-">areWALFilesDeletable</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.hadoop.fs.FileStatus&gt;&nbsp;files)</code>
+<div class="block">Check if WAL file is eligible for deletion using multi-get</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#cellKeyToBackupSetName-org.apache.hadoop.hbase.Cell-">cellKeyToBackupSetName</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;current)</code>
 <div class="block">Converts cell key to backup set name.</div>
 </td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#cellToBackupInfo-org.apache.hadoop.hbase.Cell-">cellToBackupInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;current)</code>
 <div class="block">Converts cell to backup info instance.</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#cellValueToBackupSet-org.apache.hadoop.hbase.Cell-">cellValueToBackupSet</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;current)</code>
 <div class="block">Converts cell to backup set list.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#checkSystemTable--">checkSystemTable</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#close--">close</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>private byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#convertToByteArray-java.lang.String:A-">convertToByteArray</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;tables)</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createDeleteForBackupDeleteOperation--">createDeleteForBackupDeleteOperation</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createDeleteForBackupInfo-java.lang.String-">createDeleteForBackupInfo</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)</code>
 <div class="block">Creates Delete operation for a given backup id</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createDeleteForBackupMergeOperation--">createDeleteForBackupMergeOperation</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createDeleteForBackupSet-java.lang.String-">createDeleteForBackupSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Creates Delete operation to delete backup set content</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createDeleteForIncrBackupTableSet-java.lang.String-">createDeleteForIncrBackupTableSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Creates Delete for incremental backup table set</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createDeleteForOrigBulkLoad-java.util.List-">createDeleteForOrigBulkLoad</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;lst)</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createGetForBackupInfo-java.lang.String-">createGetForBackupInfo</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)</code>
 <div class="block">Creates Get operation for a given backup id</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createGetForBackupSet-java.lang.String-">createGetForBackupSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Creates Get operation to load backup set content</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createGetForCheckWALFile-java.lang.String-">createGetForCheckWALFile</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;file)</code>
 <div class="block">Creates Get operation for a given wal file name TODO: support for backup destination</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createGetForDeleteOperation--">createGetForDeleteOperation</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createGetForIncrBackupTableSet-java.lang.String-">createGetForIncrBackupTableSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Creates Get to retrieve incremental backup table set from backup system table</div>
 </td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createGetForMergeOperation--">createGetForMergeOperation</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createGetForStartCode-java.lang.String-">createGetForStartCode</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;rootPath)</code>
 <div class="block">Creates Get operation to retrieve start code from backup system table</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForBackupInfo-org.apache.hadoop.hbase.backup.BackupInfo-">createPutForBackupInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&nbsp;context)</code>
 <div class="block">Creates Put operation for a given backup info object</div>
 </td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForBackupSet-java.lang.String-java.lang.String:A-">createPutForBackupSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;tables)</code>
 <div class="block">Creates Put operation to update backup set content</div>
 </td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForBulkLoadedFile-org.apache.hadoop.hbase.TableName-byte:A-java.lang.String-java.lang.String-long-int-">createPutForBulkLoadedFile</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tn,
                           byte[]&nbsp;fam,
@@ -467,35 +473,35 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
                           long&nbsp;ts,
                           int&nbsp;idx)</code>&nbsp;</td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>(package private) static <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForCommittedBulkload-org.apache.hadoop.hbase.TableName-byte:A-java.util.Map-">createPutForCommittedBulkload</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                              byte[]&nbsp;region,
                              <a href="http://docs.oracle.com/javase/8/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/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt;&nbsp;finalPaths)</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForDeleteOperation-java.lang.String:A-">createPutForDeleteOperation</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;backupIdList)</code>&nbsp;</td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForIncrBackupTableSet-java.util.Set-java.lang.String-">createPutForIncrBackupTableSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tables,
                               <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Creates Put to store incremental backup table set</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForMergeOperation-java.lang.String:A-">createPutForMergeOperation</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;backupIdList)</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>(package private) static <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForPreparedBulkload-org.apache.hadoop.hbase.TableName-byte:A-byte:A-java.util.List-">createPutForPreparedBulkload</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                             byte[]&nbsp;region,
                             byte[]&nbsp;family,
                             <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&gt;&nbsp;pairs)</code>&nbsp;</td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForRegionServerLastLogRollResult-java.lang.String-java.lang.Long-java.lang.String-">createPutForRegionServerLastLogRollResult</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;server,
                                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;timestamp,
@@ -503,26 +509,26 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <div class="block">Creates Put to store RS last log result</div>
 </td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForStartBackupSession--">createPutForStartBackupSession</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForStartCode-java.lang.String-java.lang.String-">createPutForStartCode</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;startCode,
                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;rootPath)</code>
 <div class="block">Creates Put operation to store start code to backup system table</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForStopBackupSession--">createPutForStopBackupSession</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForUpdateTablesForMerge-java.util.List-">createPutForUpdateTablesForMerge</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tables)</code>&nbsp;</td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutForWriteRegionServerLogTimestamp-org.apache.hadoop.hbase.TableName-byte:A-java.lang.String-">createPutForWriteRegionServerLogTimestamp</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                                          byte[]&nbsp;smap,
@@ -530,7 +536,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <div class="block">Creates Put to write RS last roll log timestamp map</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createPutsForAddWALFiles-java.util.List-java.lang.String-java.lang.String-">createPutsForAddWALFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;files,
                         <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId,
@@ -538,377 +544,377 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <div class="block">Creates put list for list of WAL files</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createScanForBackupHistory--">createScanForBackupHistory</a></span>()</code>
 <div class="block">Creates Scan operation to load backup history</div>
 </td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createScanForBackupSetList--">createScanForBackupSetList</a></span>()</code>
 <div class="block">Creates Scan operation to load backup set list</div>
 </td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code>(package private) static <a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createScanForBulkLoadedFiles-java.lang.String-">createScanForBulkLoadedFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)</code>&nbsp;</td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i41" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createScanForGetWALs-java.lang.String-">createScanForGetWALs</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Creates Scan operation to load WALs</div>
 </td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code>(package private) static <a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createScanForOrigBulkLoadedFiles-org.apache.hadoop.hbase.TableName-">createScanForOrigBulkLoadedFiles</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</code>&nbsp;</td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createScanForReadLogTimestampMap-java.lang.String-">createScanForReadLogTimestampMap</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Creates Scan to load table-> { RS -> ts} map of maps</div>
 </td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#createScanForReadRegionServerLastLogRollResult-java.lang.String-">createScanForReadRegionServerLastLogRollResult</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Creates Scan operation to load last RS log roll results</div>
 </td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i45" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#deleteBackupInfo-java.lang.String-">deleteBackupInfo</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)</code>
 <div class="block">Deletes backup status from backup system table table</div>
 </td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i46" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#deleteBackupSet-java.lang.String-">deleteBackupSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Delete backup set</div>
 </td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#deleteBulkLoadedFiles-java.util.Map-">deleteBulkLoadedFiles</a></span>(<a href="http://docs.oracle.com/javase/8/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/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;map)</code>&nbsp;</td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i48" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#deleteIncrementalBackupTableSet-java.lang.String-">deleteIncrementalBackupTableSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Deletes incremental backup set for a backup destination</div>
 </td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#deleteSnapshot-org.apache.hadoop.hbase.client.Connection-">deleteSnapshot</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn)</code>&nbsp;</td>
 </tr>
-<tr id="i49" class="rowColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#describeBackupSet-java.lang.String-">describeBackupSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Get backup set description (list of tables)</div>
 </td>
 </tr>
-<tr id="i50" class="altColor">
+<tr id="i51" class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#disjoin-java.lang.String:A-java.lang.String:A-">disjoin</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;existingTables,
        <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;toRemove)</code>&nbsp;</td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#finishBackupExclusiveOperation--">finishBackupExclusiveOperation</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i53" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#finishDeleteOperation--">finishDeleteOperation</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i54" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#finishMergeOperation--">finishMergeOperation</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i55" class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#fromTableServerTimestampProto-org.apache.hadoop.hbase.shaded.protobuf.generated.BackupProtos.TableServerTimestamp-">fromTableServerTimestampProto</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.BackupProtos.TableServerTimestamp&nbsp;proto)</code>&nbsp;</td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getBackupHistory--">getBackupHistory</a></span>()</code>
 <div class="block">Get all backups history</div>
 </td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getBackupHistory-boolean-">getBackupHistory</a></span>(boolean&nbsp;onlyCompleted)</code>
 <div class="block">Get all completed backup information (in desc order by time)</div>
 </td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getBackupHistory-int-org.apache.hadoop.hbase.backup.BackupInfo.Filter...-">getBackupHistory</a></span>(int&nbsp;n,
                 <a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.Filter.html" title="interface in org.apache.hadoop.hbase.backup">BackupInfo.Filter</a>...&nbsp;filters)</code>
 <div class="block">Get backup history records filtered by list of filters.</div>
 </td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getBackupHistory-java.lang.String-">getBackupHistory</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Get history for backup destination</div>
 </td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getBackupHistoryForTable-org.apache.hadoop.hbase.TableName-">getBackupHistoryForTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name)</code>
 <div class="block">Get history for a table</div>
 </td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i61" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getBackupHistoryForTableSet-java.util.Set-java.lang.String-">getBackupHistoryForTableSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;set,
                            <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>&nbsp;</td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html?is-external=true" title="class or interface in java.util">ArrayList</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getBackupInfos-org.apache.hadoop.hbase.backup.BackupInfo.BackupState-">getBackupInfos</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup">BackupInfo.BackupState</a>&nbsp;state)</code>
 <div class="block">Get all backup sessions with a given state (in descending order by time)</div>
 </td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getHistory-int-">getHistory</a></span>(int&nbsp;n)</code>
 <div class="block">Get first n backup history records</div>
 </td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getIncrementalBackupTableSet-java.lang.String-">getIncrementalBackupTableSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Return the current tables covered by incremental backup.</div>
 </td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getListOfBackupIdsFromDeleteOperation--">getListOfBackupIdsFromDeleteOperation</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getListOfBackupIdsFromMergeOperation--">getListOfBackupIdsFromMergeOperation</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getRegionNameFromOrigBulkLoadRow-java.lang.String-">getRegionNameFromOrigBulkLoadRow</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;rowStr)</code>&nbsp;</td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getServerNameForReadRegionServerLastLogRollResult-byte:A-">getServerNameForReadRegionServerLastLogRollResult</a></span>(byte[]&nbsp;row)</code>
 <div class="block">Get server's name from rowkey</div>
 </td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getSnapshotName-org.apache.hadoop.conf.Configuration-">getSnapshotName</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/HTableDescriptor.html" title="class in org.apache.hadoop.hbase">HTableDescriptor</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getSystemTableDescriptor-org.apache.hadoop.conf.Configuration-">getSystemTableDescriptor</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Get backup system table descriptor</div>
 </td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getTableName-org.apache.hadoop.conf.Configuration-">getTableName</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code>static <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getTableNameAsString-org.apache.hadoop.conf.Configuration-">getTableNameAsString</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getTableNameForReadLogTimestampMap-byte:A-">getTableNameForReadLogTimestampMap</a></span>(byte[]&nbsp;cloneRow)</code>
 <div class="block">Get table name from rowkey</div>
 </td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i74" class="altColor">
 <td class="colFirst"><code>(package private) static <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getTableNameFromOrigBulkLoadRow-java.lang.String-">getTableNameFromOrigBulkLoadRow</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;rowStr)</code>&nbsp;</td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i75" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getTablesForBackupType-org.apache.hadoop.hbase.backup.BackupType-">getTablesForBackupType</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup">BackupType</a>&nbsp;type)</code>&nbsp;</td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i76" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupSystemTable.WALItem</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#getWALFilesIterator-java.lang.String-">getWALFilesIterator</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Register WAL files as eligible for deletion</div>
 </td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i77" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#hasBackupSessions--">hasBackupSessions</a></span>()</code>
 <div class="block">Checks if we have at least one backup session in backup system table This API is used by
  BackupLogCleaner</div>
 </td>
 </tr>
-<tr id="i77" class="rowColor">
+<tr id="i78" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#isMergeInProgress--">isMergeInProgress</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i78" class="altColor">
+<tr id="i79" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#isWALFileDeletable-java.lang.String-">isWALFileDeletable</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;file)</code>
 <div class="block">Check if WAL file is eligible for deletion Future: to support all backup destinations</div>
 </td>
 </tr>
-<tr id="i79" class="rowColor">
+<tr id="i80" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/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><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#listBackupSets--">listBackupSets</a></span>()</code>
 <div class="block">Get backup set list</div>
 </td>
 </tr>
-<tr id="i80" class="altColor">
+<tr id="i81" class="rowColor">
 <td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#merge-java.lang.String:A-java.lang.String:A-">merge</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;existingTables,
      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;newTables)</code>&nbsp;</td>
 </tr>
-<tr id="i81" class="rowColor">
+<tr id="i82" class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#readBackupInfo-java.lang.String-">readBackupInfo</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)</code>
 <div class="block">Reads backup status object (instance of backup info) from backup system table table</div>
 </td>
 </tr>
-<tr id="i82" class="altColor">
+<tr id="i83" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#readBackupStartCode-java.lang.String-">readBackupStartCode</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Read the last backup start code (timestamp) of last successful backup.</div>
 </td>
 </tr>
-<tr id="i83" class="rowColor">
+<tr id="i84" class="altColor">
 <td class="colFirst"><code>(package private) <a href="http://docs.oracle.com/javase/8/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/8/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><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#readBulkLoadedFiles-java.lang.String-">readBulkLoadedFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)</code>&nbsp;</td>
 </tr>
-<tr id="i84" class="altColor">
+<tr id="i85" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/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/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt;[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#readBulkLoadedFiles-java.lang.String-java.util.List-">readBulkLoadedFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId,
                    <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;sTableList)</code>&nbsp;</td>
 </tr>
-<tr id="i85" class="rowColor">
+<tr id="i86" class="altColor">
 <td class="colFirst"><code><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/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle
 .com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&gt;&gt;&gt;&gt;,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#readBulkloadRows-java.util.List-">readBulkloadRows</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tableList)</code>&nbsp;</td>
 </tr>
-<tr id="i86" class="altColor">
+<tr id="i87" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#readLogTimestampMap-java.lang.String-">readLogTimestampMap</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Read the timestamp for each region server log after the last successful backup.</div>
 </td>
 </tr>
-<tr id="i87" class="rowColor">
+<tr id="i88" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#readRegionServerLastLogRollResult-java.lang.String-">readRegionServerLastLogRollResult</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Get the Region Servers log information after the last log roll from backup system table.</div>
 </td>
 </tr>
-<tr id="i88" class="altColor">
+<tr id="i89" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#removeBulkLoadedRows-java.util.List-java.util.List-">removeBulkLoadedRows</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;lst,
                     <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;rows)</code>&nbsp;</td>
 </tr>
-<tr id="i89" class="rowColor">
+<tr id="i90" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#removeFromBackupSet-java.lang.String-java.lang.String:A-">removeFromBackupSet</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                    <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;toRemove)</code>
 <div class="block">Remove tables from backup set (list of tables)</div>
 </td>
 </tr>
-<tr id="i90" class="altColor">
+<tr id="i91" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#restoreFromSnapshot-org.apache.hadoop.hbase.client.Connection-">restoreFromSnapshot</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn)</code>&nbsp;</td>
 </tr>
-<tr id="i91" class="rowColor">
+<tr id="i92" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#resultToBackupInfo-org.apache.hadoop.hbase.client.Result-">resultToBackupInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;res)</code>
 <div class="block">Converts Result to BackupInfo</div>
 </td>
 </tr>
-<tr id="i92" class="altColor">
+<tr id="i93" class="rowColor">
 <td class="colFirst"><code>private static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#rowkey-java.lang.String-java.lang.String...-">rowkey</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s,
       <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;other)</code>&nbsp;</td>
 </tr>
-<tr id="i93" class="rowColor">
+<tr id="i94" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#snapshot-org.apache.hadoop.hbase.client.Connection-">snapshot</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn)</code>&nbsp;</td>
 </tr>
-<tr id="i94" class="altColor">
+<tr id="i95" class="rowColor">
 <td class="colFirst"><code>protected static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#snapshotExists-org.apache.hadoop.hbase.client.Admin-java.lang.String-">snapshotExists</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin,
               <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName)</code>&nbsp;</td>
 </tr>
-<tr id="i95" class="rowColor">
+<tr id="i96" class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#snapshotExists-org.apache.hadoop.hbase.client.Connection-">snapshotExists</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;conn)</code>&nbsp;</td>
 </tr>
-<tr id="i96" class="altColor">
+<tr id="i97" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#startBackupExclusiveOperation--">startBackupExclusiveOperation</a></span>()</code>
 <div class="block">Exclusive operations are:
  create, delete, merge</div>
 </td>
 </tr>
-<tr id="i97" class="rowColor">
+<tr id="i98" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#startDeleteOperation-java.lang.String:A-">startDeleteOperation</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;backupIdList)</code>&nbsp;</td>
 </tr>
-<tr id="i98" class="altColor">
+<tr id="i99" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#startMergeOperation-java.lang.String:A-">startMergeOperation</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;backupIdList)</code>&nbsp;</td>
 </tr>
-<tr id="i99" class="rowColor">
+<tr id="i100" class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.shaded.protobuf.generated.BackupProtos.TableServerTimestamp</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#toTableServerTimestampProto-org.apache.hadoop.hbase.TableName-java.util.Map-">toTableServerTimestampProto</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                            <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;map)</code>&nbsp;</td>
 </tr>
-<tr id="i100" class="altColor">
+<tr id="i101" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#updateBackupInfo-org.apache.hadoop.hbase.backup.BackupInfo-">updateBackupInfo</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&nbsp;info)</code>
 <div class="block">Updates status (state) of a backup session in backup system table table</div>
 </td>
 </tr>
-<tr id="i101" class="rowColor">
+<tr id="i102" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#updateProcessedTablesForMerge-java.util.List-">updateProcessedTablesForMerge</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tables)</code>&nbsp;</td>
 </tr>
-<tr id="i102" class="altColor">
+<tr id="i103" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#verifyNamespaceExists-org.apache.hadoop.hbase.client.Admin-">verifyNamespaceExists</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)</code>&nbsp;</td>
 </tr>
-<tr id="i103" class="rowColor">
+<tr id="i104" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#waitForSystemTable-org.apache.hadoop.hbase.client.Admin-">waitForSystemTable</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin)</code>&nbsp;</td>
 </tr>
-<tr id="i104" class="altColor">
+<tr id="i105" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#writeBackupStartCode-java.lang.Long-java.lang.String-">writeBackupStartCode</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;startCode,
                     <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</code>
 <div class="block">Write the start code (timestamp) to backup system table.</div>
 </td>
 </tr>
-<tr id="i105" class="rowColor">
+<tr id="i106" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#writeBulkLoadedFiles-java.util.List-java.util.Map:A-java.lang.String-">writeBulkLoadedFiles</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;sTableList,
                     <a href="http://docs.oracle.com/javase/8/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/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt;[]&nbsp;maps,
                     <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)</code>&nbsp;</td>
 </tr>
-<tr id="i106" class="altColor">
+<tr id="i107" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#writeFilesForBulkLoadPreCommit-org.apache.hadoop.hbase.TableName-byte:A-byte:A-java.util.List-">writeFilesForBulkLoadPreCommit</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tabName,
                               byte[]&nbsp;region,
                               byte[]&nbsp;family,
                               <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&gt;&nbsp;pairs)</code>&nbsp;</td>
 </tr>
-<tr id="i107" class="rowColor">
+<tr id="i108" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#writePathsPostBulkLoad-org.apache.hadoop.hbase.TableName-byte:A-java.util.Map-">writePathsPostBulkLoad</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tabName,
                       byte[]&nbsp;region,
                       <a href="http://docs.oracle.com/javase/8/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/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt;&nbsp;finalPaths)</code>&nbsp;</td>
 </tr>
-<tr id="i108" class="altColor">
+<tr id="i109" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#writeRegionServerLastLogRollResult-java.lang.String-java.lang.Long-java.lang.String-">writeRegionServerLastLogRollResult</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;server,
                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;ts,
@@ -916,7 +922,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <div class="block">Writes Region Server last roll log result (timestamp) to backup system table table</div>
 </td>
 </tr>
-<tr id="i109" class="rowColor">
+<tr id="i110" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#writeRegionServerLogTimestamp-java.util.Set-java.util.HashMap-java.lang.String-">writeRegionServerLogTimestamp</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tables,
                              <a href="http://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;newTimestamps,
@@ -953,7 +959,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.92">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.93">LOG</a></pre>
 </li>
 </ul>
 <a name="tableName">
@@ -962,7 +968,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <ul class="blockList">
 <li class="blockList">
 <h4>tableName</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.124">tableName</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.125">tableName</a></pre>
 </li>
 </ul>
 <a name="SESSIONS_FAMILY">
@@ -971,7 +977,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <ul class="blockList">
 <li class="blockList">
 <h4>SESSIONS_FAMILY</h4>
-<pre>static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.128">SESSIONS_FAMILY</a></pre>
+<pre>static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.129">SESSIONS_FAMILY</a></pre>
 <div class="block">Stores backup sessions (contexts)</div>
 </li>
 </ul>
@@ -981,7 +987,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <ul class="blockList">
 <li class="blockList">
 <h4>META_FAMILY</h4>
-<pre>static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.132">META_FAMILY</a></pre>
+<pre>static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.133">META_FAMILY</a></pre>
 <div class="block">Stores other meta</div>
 </li>
 </ul>
@@ -991,7 +997,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <ul class="blockList">
 <li class="blockList">
 <h4>BULK_LOAD_FAMILY</h4>
-<pre>static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.133">BULK_LOAD_FAMILY</a></pre>
+<pre>static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.134">BULK_LOAD_FAMILY</a></pre>
 </li>
 </ul>
 <a name="connection">
@@ -1000,7 +1006,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <ul class="blockList">
 <li class="blockList">
 <h4>connection</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.137">connection</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.138">connection</a></pre>
 <div class="block">Connection to HBase cluster, shared among all instances</div>
 </li>
 </ul>
@@ -1010,7 +1016,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <ul class="blockList">
 <li class="blockList">
 <h4>BACKUP_INFO_PREFIX</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.139">BACKUP_INFO_PREFIX</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.140">BACKUP_INFO_PREFIX</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.backup.impl.BackupSystemTable.BACKUP_INFO_PREFIX">Constant Field Values</a></dd>
@@ -1023,7 +1029,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <ul class="blockList">
 <li class="blockList">
 <h4>START_CODE_ROW</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.140">START_CODE_ROW</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.141">START_CODE_ROW</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.backup.impl.BackupSystemTable.START_CODE_ROW">Constant Field Values</a></dd>
@@ -1036,7 +1042,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.h
 <ul class="blockList">
 <li class="blockList">
 <h4>ACTIVE_SESSION_ROW</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.141">ACTIVE_SESSION_ROW</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.142">ACTIVE_SESSION_ROW</a></pre>
 </li>
 

<TRUNCATED>

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html
index d144d6b..7428468 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.51">TestCompactingToCellFlatMapMemStore</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.50">TestCompactingToCellFlatMapMemStore</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompactingMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactingMemStore</a></pre>
 <div class="block">compacted memstore test case</div>
 </li>
@@ -345,7 +345,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.56">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.55">LOG</a></pre>
 </li>
 </ul>
 <a name="toCellChunkMap">
@@ -354,7 +354,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>toCellChunkMap</h4>
-<pre>public final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.58">toCellChunkMap</a></pre>
+<pre>public final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.57">toCellChunkMap</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -363,7 +363,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockListLast">
 <li class="blockList">
 <h4>conf</h4>
-<pre>org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.59">conf</a></pre>
+<pre>org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.58">conf</a></pre>
 </li>
 </ul>
 </li>
@@ -380,7 +380,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestCompactingToCellFlatMapMemStore</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.63">TestCompactingToCellFlatMapMemStore</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;type)</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.62">TestCompactingToCellFlatMapMemStore</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;type)</pre>
 </li>
 </ul>
 </li>
@@ -397,7 +397,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>data</h4>
-<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.53">data</a>()</pre>
+<pre>public static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.52">data</a>()</pre>
 </li>
 </ul>
 <a name="tearDown--">
@@ -406,7 +406,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.71">tearDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.70">tearDown</a>()
               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -422,7 +422,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.75">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.74">setUp</a>()
            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -438,7 +438,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testCompaction1Bucket</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.93">testCompaction1Bucket</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.92">testCompaction1Bucket</a>()
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -454,7 +454,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testCompaction2Buckets</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.141">testCompaction2Buckets</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.140">testCompaction2Buckets</a>()
                             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -470,7 +470,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testCompaction3Buckets</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.203">testCompaction3Buckets</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.202">testCompaction3Buckets</a>()
                             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -486,7 +486,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testMerging</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.292">testMerging</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.291">testMerging</a>()
                  throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -500,7 +500,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testTimeRangeAfterCompaction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.362">testTimeRangeAfterCompaction</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.361">testTimeRangeAfterCompaction</a>()
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -514,7 +514,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testTimeRangeAfterMerge</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.371">testTimeRangeAfterMerge</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.370">testTimeRangeAfterMerge</a>()
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -528,7 +528,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testTimeRange</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.383">testTimeRange</a>(boolean&nbsp;isCompaction)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.382">testTimeRange</a>(boolean&nbsp;isCompaction)
                     throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -542,7 +542,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testCountOfCellsAfterFlatteningByScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.441">testCountOfCellsAfterFlatteningByScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.440">testCountOfCellsAfterFlatteningByScan</a>()
                                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -556,7 +556,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testCountOfCellsAfterFlatteningByIterator</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.465">testCountOfCellsAfterFlatteningByIterator</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.464">testCountOfCellsAfterFlatteningByIterator</a>()
                                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -570,7 +570,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>addRowsByKeysWith50Cols</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.488">addRowsByKeysWith50Cols</a>(org.apache.hadoop.hbase.regionserver.AbstractMemStore&nbsp;hmc,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.487">addRowsByKeysWith50Cols</a>(org.apache.hadoop.hbase.regionserver.AbstractMemStore&nbsp;hmc,
                                      <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;keys)</pre>
 </li>
 </ul>
@@ -580,7 +580,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testPuttingBackChunksWithOpeningScanner</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.505">testPuttingBackChunksWithOpeningScanner</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.504">testPuttingBackChunksWithOpeningScanner</a>()
                                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -596,7 +596,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testPuttingBackChunksAfterFlushing</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.577">testPuttingBackChunksAfterFlushing</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.576">testPuttingBackChunksAfterFlushing</a>()
                                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -612,7 +612,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlatteningToCellChunkMap</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.612">testFlatteningToCellChunkMap</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.611">testFlatteningToCellChunkMap</a>()
                                   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -626,7 +626,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlatteningToBigCellChunkMap</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.671">testFlatteningToBigCellChunkMap</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.670">testFlatteningToBigCellChunkMap</a>()
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">CellChunkMap Segment index requires all cell data to be written in the MSLAB Chunks.
  Even though MSLAB is enabled, cells bigger than maxAlloc
@@ -647,7 +647,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlatteningToJumboCellChunkMap</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.744">testFlatteningToJumboCellChunkMap</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.742">testFlatteningToJumboCellChunkMap</a>()
                                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">CellChunkMap Segment index requires all cell data to be written in the MSLAB Chunks.
  Even though MSLAB is enabled, cells bigger than the size of a chunk are not
@@ -668,7 +668,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>addRowsByKeysDataSize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.818">addRowsByKeysDataSize</a>(org.apache.hadoop.hbase.regionserver.AbstractMemStore&nbsp;hmc,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.817">addRowsByKeysDataSize</a>(org.apache.hadoop.hbase.regionserver.AbstractMemStore&nbsp;hmc,
                                    <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;keys)</pre>
 </li>
 </ul>
@@ -678,7 +678,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockList">
 <li class="blockList">
 <h4>cellBeforeFlushSize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.835">cellBeforeFlushSize</a>()</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.834">cellBeforeFlushSize</a>()</pre>
 </li>
 </ul>
 <a name="cellAfterFlushSize--">
@@ -687,7 +687,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCompact
 <ul class="blockListLast">
 <li class="blockList">
 <h4>cellAfterFlushSize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.846">cellAfterFlushSize</a>()</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestCompactingToCellFlatMapMemStore.html#line.845">cellAfterFlushSize</a>()</pre>
 </li>
 </ul>
 </li>

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index abdcd59..9929267 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -2890,6 +2890,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiColumnScanner</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMultiParallel</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMultiParallel.MyMasterObserver</span></a> (implements org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.hadoop.hbase.coprocessor.MasterObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestMultipleColumnPrefixFilter.html" title="class in org.apache.hadoop.hbase.filter"><span class="typeNameLink">TestMultipleColumnPrefixFilter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMultipleTimestamps</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMultiRespectsLimits</span></a></li>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/src-html/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html
index 38142ff..fd23e20 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/master/BackupLogCleaner.html
@@ -104,51 +104,55 @@
 <span class="sourceLineNo">096</span>        return files;<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>      for (FileStatus file : files) {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>        String wal = file.getPath().toString();<a name="line.100"></a>
-<span class="sourceLineNo">101</span>        boolean logInSystemTable = table.isWALFileDeletable(wal);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>        if (LOG.isDebugEnabled()) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>          if (logInSystemTable) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>            LOG.debug("Found log file in backup system table, deleting: " + wal);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>            list.add(file);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>          } else {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>            LOG.debug("Didn't find this log in backup system table, keeping: " + wal);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>          }<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        }<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      }<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      return list;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    } catch (IOException e) {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      LOG.error("Failed to get backup system table table, therefore will keep all files", e);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      // nothing to delete<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return new ArrayList&lt;FileStatus&gt;();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  }<a name="line.117"></a>
-<span class="sourceLineNo">118</span><a name="line.118"></a>
-<span class="sourceLineNo">119</span>  @Override<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  public void setConf(Configuration config) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    // If backup is disabled, keep all members null<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    super.setConf(config);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    if (!config.getBoolean(BackupRestoreConstants.BACKUP_ENABLE_KEY,<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      BackupRestoreConstants.BACKUP_ENABLE_DEFAULT)) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      LOG.warn("Backup is disabled - allowing all wals to be deleted");<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
-<span class="sourceLineNo">128</span><a name="line.128"></a>
-<span class="sourceLineNo">129</span>  @Override<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public void stop(String why) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    if (this.stopped) {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      return;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    this.stopped = true;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    LOG.info("Stopping BackupLogCleaner");<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  @Override<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public boolean isStopped() {<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    return this.stopped;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  }<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>}<a name="line.143"></a>
+<span class="sourceLineNo">099</span>      Map&lt;FileStatus, Boolean&gt; walFilesDeletableMap = table.areWALFilesDeletable(files);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      for (Map.Entry&lt;FileStatus, Boolean&gt; entry: walFilesDeletableMap.entrySet()) {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>        FileStatus file = entry.getKey();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        String wal = file.getPath().toString();<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        boolean deletable = entry.getValue();<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        if (deletable) {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>          if (LOG.isDebugEnabled()) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>            LOG.debug("Found log file in backup system table, deleting: " + wal);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>          }<a name="line.107"></a>
+<span class="sourceLineNo">108</span>          list.add(file);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        } else {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>          if (LOG.isDebugEnabled()) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>            LOG.debug("Didn't find this log in backup system table, keeping: " + wal);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>          }<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        }<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      return list;<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    } catch (IOException e) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      LOG.error("Failed to get backup system table table, therefore will keep all files", e);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      // nothing to delete<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      return new ArrayList&lt;FileStatus&gt;();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
+<span class="sourceLineNo">124</span>  public void setConf(Configuration config) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    // If backup is disabled, keep all members null<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    super.setConf(config);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    if (!config.getBoolean(BackupRestoreConstants.BACKUP_ENABLE_KEY,<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      BackupRestoreConstants.BACKUP_ENABLE_DEFAULT)) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      LOG.warn("Backup is disabled - allowing all wals to be deleted");<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>  @Override<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  public void stop(String why) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if (this.stopped) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      return;<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    this.stopped = true;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    LOG.info("Stopping BackupLogCleaner");<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>  @Override<a name="line.142"></a>
+<span class="sourceLineNo">143</span>  public boolean isStopped() {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    return this.stopped;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>}<a name="line.147"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html
index 6cf82f8..66f3dc6 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/BufferedMutatorImpl.QueueRowAccess.html
@@ -86,422 +86,424 @@
 <span class="sourceLineNo">078</span>  private final AtomicInteger undealtMutationCount = new AtomicInteger(0);<a name="line.78"></a>
 <span class="sourceLineNo">079</span>  private final long writeBufferSize;<a name="line.79"></a>
 <span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private long  writeBufferPeriodicFlushTimeoutMs;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  private long  writeBufferPeriodicFlushTimerTickMs = MIN_WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private Timer writeBufferPeriodicFlushTimer = null;<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private final int maxKeyValueSize;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  private final ExecutorService pool;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private final AtomicInteger rpcTimeout;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  private final AtomicInteger operationTimeout;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  private final boolean cleanupPoolOnClose;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  private volatile boolean closed = false;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private final AsyncProcess ap;<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>  @VisibleForTesting<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  BufferedMutatorImpl(ClusterConnection conn, BufferedMutatorParams params, AsyncProcess ap) {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    if (conn == null || conn.isClosed()) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      throw new IllegalArgumentException("Connection is null or closed.");<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    this.tableName = params.getTableName();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    this.conf = conn.getConfiguration();<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    this.listener = params.getListener();<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    if (params.getPool() == null) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      this.pool = HTable.getDefaultExecutor(conf);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      cleanupPoolOnClose = true;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    } else {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      this.pool = params.getPool();<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      cleanupPoolOnClose = false;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    ConnectionConfiguration tableConf = new ConnectionConfiguration(conf);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    this.writeBufferSize =<a name="line.109"></a>
-<span class="sourceLineNo">110</span>            params.getWriteBufferSize() != UNSET ?<a name="line.110"></a>
-<span class="sourceLineNo">111</span>            params.getWriteBufferSize() : tableConf.getWriteBufferSize();<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>    // Set via the setter because it does value validation and starts/stops the TimerTask<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    long newWriteBufferPeriodicFlushTimeoutMs =<a name="line.114"></a>
-<span class="sourceLineNo">115</span>            params.getWriteBufferPeriodicFlushTimeoutMs() != UNSET<a name="line.115"></a>
-<span class="sourceLineNo">116</span>              ? params.getWriteBufferPeriodicFlushTimeoutMs()<a name="line.116"></a>
-<span class="sourceLineNo">117</span>              : tableConf.getWriteBufferPeriodicFlushTimeoutMs();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    long newWriteBufferPeriodicFlushTimerTickMs =<a name="line.118"></a>
-<span class="sourceLineNo">119</span>            params.getWriteBufferPeriodicFlushTimerTickMs() != UNSET<a name="line.119"></a>
-<span class="sourceLineNo">120</span>              ? params.getWriteBufferPeriodicFlushTimerTickMs()<a name="line.120"></a>
-<span class="sourceLineNo">121</span>              : tableConf.getWriteBufferPeriodicFlushTimerTickMs();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    this.setWriteBufferPeriodicFlush(<a name="line.122"></a>
-<span class="sourceLineNo">123</span>            newWriteBufferPeriodicFlushTimeoutMs,<a name="line.123"></a>
-<span class="sourceLineNo">124</span>            newWriteBufferPeriodicFlushTimerTickMs);<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>    this.maxKeyValueSize =<a name="line.126"></a>
-<span class="sourceLineNo">127</span>            params.getMaxKeyValueSize() != UNSET ?<a name="line.127"></a>
-<span class="sourceLineNo">128</span>            params.getMaxKeyValueSize() : tableConf.getMaxKeyValueSize();<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    this.rpcTimeout = new AtomicInteger(<a name="line.130"></a>
-<span class="sourceLineNo">131</span>            params.getRpcTimeout() != UNSET ?<a name="line.131"></a>
-<span class="sourceLineNo">132</span>            params.getRpcTimeout() : conn.getConnectionConfiguration().getWriteRpcTimeout());<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>    this.operationTimeout = new AtomicInteger(<a name="line.134"></a>
-<span class="sourceLineNo">135</span>            params.getOperationTimeout() != UNSET ?<a name="line.135"></a>
-<span class="sourceLineNo">136</span>            params.getOperationTimeout() : conn.getConnectionConfiguration().getOperationTimeout());<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    this.ap = ap;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  BufferedMutatorImpl(ClusterConnection conn, RpcRetryingCallerFactory rpcCallerFactory,<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      RpcControllerFactory rpcFactory, BufferedMutatorParams params) {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    this(conn, params,<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      // puts need to track errors globally due to how the APIs currently work.<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      new AsyncProcess(conn, conn.getConfiguration(), rpcCallerFactory, true, rpcFactory));<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>  @VisibleForTesting<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  ExecutorService getPool() {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    return pool;<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>  @VisibleForTesting<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  AsyncProcess getAsyncProcess() {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    return ap;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  }<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>  @Override<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  public TableName getName() {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    return tableName;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  @Override<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  public Configuration getConfiguration() {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    return conf;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  @Override<a name="line.166"></a>
-<span class="sourceLineNo">167</span>  public void mutate(Mutation m) throws InterruptedIOException,<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      RetriesExhaustedWithDetailsException {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    mutate(Collections.singletonList(m));<a name="line.169"></a>
-<span class="sourceLineNo">170</span>  }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>  @Override<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  public void mutate(List&lt;? extends Mutation&gt; ms) throws InterruptedIOException,<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      RetriesExhaustedWithDetailsException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>    if (closed) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      throw new IllegalStateException("Cannot put when the BufferedMutator is closed.");<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>    long toAddSize = 0;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    int toAddCount = 0;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    for (Mutation m : ms) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      if (m instanceof Put) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>        validatePut((Put) m);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      toAddSize += m.heapSize();<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      ++toAddCount;<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 (currentWriteBufferSize.get() == 0) {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      firstRecordInBufferTimestamp = System.currentTimeMillis();<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>    // This behavior is highly non-intuitive... it does not protect us against<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // 94-incompatible behavior, which is a timing issue because hasError, the below code<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    // and setter of hasError are not synchronized. Perhaps it should be removed.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    if (ap.hasError()) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      currentWriteBufferSize.addAndGet(toAddSize);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      writeAsyncBuffer.addAll(ms);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      undealtMutationCount.addAndGet(toAddCount);<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      backgroundFlushCommits(true);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    } else {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      currentWriteBufferSize.addAndGet(toAddSize);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      writeAsyncBuffer.addAll(ms);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      undealtMutationCount.addAndGet(toAddCount);<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>    // Now try and queue what needs to be queued.<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    while (undealtMutationCount.get() != 0<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        &amp;&amp; currentWriteBufferSize.get() &gt; writeBufferSize) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      backgroundFlushCommits(false);<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  @VisibleForTesting<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  protected long getExecutedWriteBufferPeriodicFlushes() {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    return executedWriteBufferPeriodicFlushes;<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>  private long firstRecordInBufferTimestamp = 0;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  private long executedWriteBufferPeriodicFlushes = 0;<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  private void timerCallbackForWriteBufferPeriodicFlush() {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    if (currentWriteBufferSize.get() == 0) {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      return; // Nothing to flush<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    long now = System.currentTimeMillis();<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    if (firstRecordInBufferTimestamp + writeBufferPeriodicFlushTimeoutMs &gt; now) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      return; // No need to flush yet<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    // The first record in the writebuffer has been in there too long --&gt; flush<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    try {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      executedWriteBufferPeriodicFlushes++;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      flush();<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    } catch (InterruptedIOException | RetriesExhaustedWithDetailsException e) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      LOG.error("Exception during timerCallbackForWriteBufferPeriodicFlush --&gt; " + e.getMessage());<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
-<span class="sourceLineNo">238</span>  }<a name="line.238"></a>
-<span class="sourceLineNo">239</span><a name="line.239"></a>
-<span class="sourceLineNo">240</span>  // validate for well-formedness<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  public void validatePut(final Put put) throws IllegalArgumentException {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    HTable.validatePut(put, maxKeyValueSize);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>  @Override<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  public synchronized void close() throws IOException {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    try {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (this.closed) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        return;<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>      // Stop any running Periodic Flush timer.<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      disableWriteBufferPeriodicFlush();<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>      // As we can have an operation in progress even if the buffer is empty, we call<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      // backgroundFlushCommits at least one time.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      backgroundFlushCommits(true);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      if (cleanupPoolOnClose) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        this.pool.shutdown();<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        boolean terminated;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        int loopCnt = 0;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        do {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>          // wait until the pool has terminated<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          terminated = this.pool.awaitTermination(60, TimeUnit.SECONDS);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          loopCnt += 1;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          if (loopCnt &gt;= 10) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>            LOG.warn("close() failed to terminate pool after 10 minutes. Abandoning pool.");<a name="line.267"></a>
-<span class="sourceLineNo">268</span>            break;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>          }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>        } while (!terminated);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    } catch (InterruptedException e) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      LOG.warn("waitForTermination interrupted");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    } finally {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      this.closed = true;<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><a name="line.278"></a>
-<span class="sourceLineNo">279</span>  @Override<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public synchronized void flush() throws InterruptedIOException,<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      RetriesExhaustedWithDetailsException {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    // As we can have an operation in progress even if the buffer is empty, we call<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    // backgroundFlushCommits at least one time.<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    backgroundFlushCommits(true);<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>   * Send the operations in the buffer to the servers. Does not wait for the server's answer. If<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   * the is an error (max retried reach from a previous flush or bad operation), it tries to send<a name="line.289"></a>
-<span class="sourceLineNo">290</span>   * all operations in the buffer and sends an exception.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>   *<a name="line.291"></a>
-<span class="sourceLineNo">292</span>   * @param synchronous - if true, sends all the writes and wait for all of them to finish before<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   *        returning.<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   */<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  private void backgroundFlushCommits(boolean synchronous) throws<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      InterruptedIOException,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      RetriesExhaustedWithDetailsException {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    if (!synchronous &amp;&amp; writeAsyncBuffer.isEmpty()) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      return;<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>    if (!synchronous) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      QueueRowAccess taker = new QueueRowAccess();<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      AsyncProcessTask task = wrapAsyncProcessTask(taker);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      try {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        ap.submit(task);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        if (ap.hasError()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>          LOG.debug(tableName + ": One or more of the operations have failed -"<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              + " waiting for all operation in progress to finish (successfully or not)");<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      } finally {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        taker.restoreRemainder();<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    if (synchronous || ap.hasError()) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      QueueRowAccess taker = new QueueRowAccess();<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      AsyncProcessTask task = wrapAsyncProcessTask(taker);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      try {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        while (!taker.isEmpty()) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          ap.submit(task);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>          taker.reset();<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      } finally {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>        taker.restoreRemainder();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      }<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      RetriesExhaustedWithDetailsException error =<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          ap.waitForAllPreviousOpsAndReset(null, tableName);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      if (error != null) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        if (listener == null) {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          throw error;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        } else {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          this.listener.onException(error, this);<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>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
-<span class="sourceLineNo">337</span><a name="line.337"></a>
-<span class="sourceLineNo">338</span>  /**<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   * Reuse the AsyncProcessTask when calling<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * {@link BufferedMutatorImpl#backgroundFlushCommits(boolean)}.<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * @param taker access the inner buffer.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * @return An AsyncProcessTask which always returns the latest rpc and operation timeout.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   */<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private AsyncProcessTask wrapAsyncProcessTask(QueueRowAccess taker) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        .setPool(pool)<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        .setTableName(tableName)<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        .setRowAccess(taker)<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        .setSubmittedRows(AsyncProcessTask.SubmittedRows.AT_LEAST_ONE)<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        .build();<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return new AsyncProcessTask(task) {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      @Override<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      public int getRpcTimeout() {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        return rpcTimeout.get();<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>      @Override<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      public int getOperationTimeout() {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        return operationTimeout.get();<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><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  /**<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * {@inheritDoc}<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   */<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  @Override<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public long getWriteBufferSize() {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    return this.writeBufferSize;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  @Override<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  public void setWriteBufferPeriodicFlush(long timeoutMs, long timerTickMs) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    long originalTimeoutMs   = this.writeBufferPeriodicFlushTimeoutMs;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    long originalTimerTickMs = this.writeBufferPeriodicFlushTimerTickMs;<a name="line.375"></a>
-<span class="sourceLineNo">376</span><a name="line.376"></a>
-<span class="sourceLineNo">377</span>    // Both parameters have minimal values.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    this.writeBufferPeriodicFlushTimeoutMs   = Math.max(0, timeoutMs);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    this.writeBufferPeriodicFlushTimerTickMs =<a name="line.379"></a>
-<span class="sourceLineNo">380</span>            Math.max(MIN_WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS, timerTickMs);<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    // If something changed we stop the old Timer.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    if (this.writeBufferPeriodicFlushTimeoutMs   != originalTimeoutMs  ||<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        this.writeBufferPeriodicFlushTimerTickMs != originalTimerTickMs) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      if (writeBufferPeriodicFlushTimer != null) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>        writeBufferPeriodicFlushTimer.cancel();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        writeBufferPeriodicFlushTimer = null;<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      }<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    }<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>    // If we have the need for a timer and there is none we start it<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    if (writeBufferPeriodicFlushTimer == null &amp;&amp;<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        writeBufferPeriodicFlushTimeoutMs &gt; 0) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      writeBufferPeriodicFlushTimer = new Timer(true); // Create Timer running as Daemon.<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      writeBufferPeriodicFlushTimer.schedule(new TimerTask() {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        @Override<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        public void run() {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          BufferedMutatorImpl.this.timerCallbackForWriteBufferPeriodicFlush();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      }, writeBufferPeriodicFlushTimerTickMs, writeBufferPeriodicFlushTimerTickMs);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  @Override<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  public long getWriteBufferPeriodicFlushTimeoutMs() {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    return this.writeBufferPeriodicFlushTimeoutMs;<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>  @Override<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  public long getWriteBufferPeriodicFlushTimerTickMs() {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    return this.writeBufferPeriodicFlushTimerTickMs;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  @Override<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  public void setRpcTimeout(int rpcTimeout) {<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    this.rpcTimeout.set(rpcTimeout);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  }<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>  @Override<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  public void setOperationTimeout(int operationTimeout) {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    this.operationTimeout.set(operationTimeout);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  @VisibleForTesting<a name="line.424"></a>
-<span class="sourceLineNo">425</span>  long getCurrentWriteBufferSize() {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    return currentWriteBufferSize.get();<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  @VisibleForTesting<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  int size() {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return undealtMutationCount.get();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  }<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  private class QueueRowAccess implements RowAccess&lt;Row&gt; {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    private int remainder = undealtMutationCount.getAndSet(0);<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    void reset() {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      restoreRemainder();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      remainder = undealtMutationCount.getAndSet(0);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    public Iterator&lt;Row&gt; iterator() {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      return new Iterator&lt;Row&gt;() {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        private final Iterator&lt;Mutation&gt; iter = writeAsyncBuffer.iterator();<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        private int countDown = remainder;<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        private Mutation last = null;<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        @Override<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        public boolean hasNext() {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          if (countDown &lt;= 0) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>            return false;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>          return iter.hasNext();<a name="line.453"></a>
-<span class="sourceLineNo">454</span>        }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>        @Override<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        public Row next() {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>          if (!hasNext()) {<a name="line.457"></a>
-<span class="sourceLineNo">458</span>            throw new NoSuchElementException();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          }<a name="line.459"></a>
-<span class="sourceLineNo">460</span>          last = iter.next();<a name="line.460"></a>
-<span class="sourceLineNo">461</span>          if (last == null) {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>            throw new NoSuchElementException();<a name="line.462"></a>
-<span class="sourceLineNo">463</span>          }<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          --countDown;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          return last;<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        public void remove() {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          if (last == null) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>            throw new IllegalStateException();<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          iter.remove();<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          currentWriteBufferSize.addAndGet(-last.heapSize());<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          --remainder;<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><a name="line.478"></a>
-<span class="sourceLineNo">479</span>    @Override<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    public int size() {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      return remainder;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>    void restoreRemainder() {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      if (remainder &gt; 0) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        undealtMutationCount.addAndGet(remainder);<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        remainder = 0;<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>    @Override<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    public boolean isEmpty() {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return remainder &lt;= 0;<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">081</span>  private final AtomicLong writeBufferPeriodicFlushTimeoutMs = new AtomicLong(0);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  private final AtomicLong writeBufferPeriodicFlushTimerTickMs =<a name="line.82"></a>
+<span class="sourceLineNo">083</span>          new AtomicLong(MIN_WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private Timer writeBufferPeriodicFlushTimer = null;<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private final int maxKeyValueSize;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private final ExecutorService pool;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private final AtomicInteger rpcTimeout;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  private final AtomicInteger operationTimeout;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private final boolean cleanupPoolOnClose;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  private volatile boolean closed = false;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private final AsyncProcess ap;<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  @VisibleForTesting<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  BufferedMutatorImpl(ClusterConnection conn, BufferedMutatorParams params, AsyncProcess ap) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    if (conn == null || conn.isClosed()) {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      throw new IllegalArgumentException("Connection is null or closed.");<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    this.tableName = params.getTableName();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    this.conf = conn.getConfiguration();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    this.listener = params.getListener();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    if (params.getPool() == null) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      this.pool = HTable.getDefaultExecutor(conf);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      cleanupPoolOnClose = true;<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    } else {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      this.pool = params.getPool();<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      cleanupPoolOnClose = false;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    ConnectionConfiguration tableConf = new ConnectionConfiguration(conf);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    this.writeBufferSize =<a name="line.110"></a>
+<span class="sourceLineNo">111</span>            params.getWriteBufferSize() != UNSET ?<a name="line.111"></a>
+<span class="sourceLineNo">112</span>            params.getWriteBufferSize() : tableConf.getWriteBufferSize();<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>    // Set via the setter because it does value validation and starts/stops the TimerTask<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    long newWriteBufferPeriodicFlushTimeoutMs =<a name="line.115"></a>
+<span class="sourceLineNo">116</span>            params.getWriteBufferPeriodicFlushTimeoutMs() != UNSET<a name="line.116"></a>
+<span class="sourceLineNo">117</span>              ? params.getWriteBufferPeriodicFlushTimeoutMs()<a name="line.117"></a>
+<span class="sourceLineNo">118</span>              : tableConf.getWriteBufferPeriodicFlushTimeoutMs();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    long newWriteBufferPeriodicFlushTimerTickMs =<a name="line.119"></a>
+<span class="sourceLineNo">120</span>            params.getWriteBufferPeriodicFlushTimerTickMs() != UNSET<a name="line.120"></a>
+<span class="sourceLineNo">121</span>              ? params.getWriteBufferPeriodicFlushTimerTickMs()<a name="line.121"></a>
+<span class="sourceLineNo">122</span>              : tableConf.getWriteBufferPeriodicFlushTimerTickMs();<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    this.setWriteBufferPeriodicFlush(<a name="line.123"></a>
+<span class="sourceLineNo">124</span>            newWriteBufferPeriodicFlushTimeoutMs,<a name="line.124"></a>
+<span class="sourceLineNo">125</span>            newWriteBufferPeriodicFlushTimerTickMs);<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>    this.maxKeyValueSize =<a name="line.127"></a>
+<span class="sourceLineNo">128</span>            params.getMaxKeyValueSize() != UNSET ?<a name="line.128"></a>
+<span class="sourceLineNo">129</span>            params.getMaxKeyValueSize() : tableConf.getMaxKeyValueSize();<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>    this.rpcTimeout = new AtomicInteger(<a name="line.131"></a>
+<span class="sourceLineNo">132</span>            params.getRpcTimeout() != UNSET ?<a name="line.132"></a>
+<span class="sourceLineNo">133</span>            params.getRpcTimeout() : conn.getConnectionConfiguration().getWriteRpcTimeout());<a name="line.133"></a>
+<span class="sourceLineNo">134</span><a name="line.134"></a>
+<span class="sourceLineNo">135</span>    this.operationTimeout = new AtomicInteger(<a name="line.135"></a>
+<span class="sourceLineNo">136</span>            params.getOperationTimeout() != UNSET ?<a name="line.136"></a>
+<span class="sourceLineNo">137</span>            params.getOperationTimeout() : conn.getConnectionConfiguration().getOperationTimeout());<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    this.ap = ap;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>  }<a name="line.139"></a>
+<span class="sourceLineNo">140</span>  BufferedMutatorImpl(ClusterConnection conn, RpcRetryingCallerFactory rpcCallerFactory,<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      RpcControllerFactory rpcFactory, BufferedMutatorParams params) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    this(conn, params,<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      // puts need to track errors globally due to how the APIs currently work.<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      new AsyncProcess(conn, conn.getConfiguration(), rpcCallerFactory, true, rpcFactory));<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @VisibleForTesting<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  ExecutorService getPool() {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    return pool;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span><a name="line.151"></a>
+<span class="sourceLineNo">152</span>  @VisibleForTesting<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  AsyncProcess getAsyncProcess() {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    return ap;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  @Override<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  public TableName getName() {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    return tableName;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span>  @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>  public Configuration getConfiguration() {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    return conf;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
+<span class="sourceLineNo">166</span><a name="line.166"></a>
+<span class="sourceLineNo">167</span>  @Override<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  public void mutate(Mutation m) throws InterruptedIOException,<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      RetriesExhaustedWithDetailsException {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    mutate(Collections.singletonList(m));<a name="line.170"></a>
+<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
+<span class="sourceLineNo">172</span><a name="line.172"></a>
+<span class="sourceLineNo">173</span>  @Override<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  public void mutate(List&lt;? extends Mutation&gt; ms) throws InterruptedIOException,<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      RetriesExhaustedWithDetailsException {<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>    if (closed) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      throw new IllegalStateException("Cannot put when the BufferedMutator is closed.");<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>    long toAddSize = 0;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    int toAddCount = 0;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    for (Mutation m : ms) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      if (m instanceof Put) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>        validatePut((Put) m);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      toAddSize += m.heapSize();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      ++toAddCount;<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 (currentWriteBufferSize.get() == 0) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      firstRecordInBufferTimestamp.set(System.currentTimeMillis());<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>    // This behavior is highly non-intuitive... it does not protect us against<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 94-incompatible behavior, which is a timing issue because hasError, the below code<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    // and setter of hasError are not synchronized. Perhaps it should be removed.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    if (ap.hasError()) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      currentWriteBufferSize.addAndGet(toAddSize);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      writeAsyncBuffer.addAll(ms);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      undealtMutationCount.addAndGet(toAddCount);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      backgroundFlushCommits(true);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    } else {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      currentWriteBufferSize.addAndGet(toAddSize);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      writeAsyncBuffer.addAll(ms);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      undealtMutationCount.addAndGet(toAddCount);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>    // Now try and queue what needs to be queued.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    while (undealtMutationCount.get() != 0<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        &amp;&amp; currentWriteBufferSize.get() &gt; writeBufferSize) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      backgroundFlushCommits(false);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  }<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>  @VisibleForTesting<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  protected long getExecutedWriteBufferPeriodicFlushes() {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    return executedWriteBufferPeriodicFlushes.get();<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 final AtomicLong firstRecordInBufferTimestamp = new AtomicLong(0);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  private final AtomicLong executedWriteBufferPeriodicFlushes = new AtomicLong(0);<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  private void timerCallbackForWriteBufferPeriodicFlush() {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    if (currentWriteBufferSize.get() == 0) {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      return; // Nothing to flush<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    long now = System.currentTimeMillis();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    if (firstRecordInBufferTimestamp.get() + writeBufferPeriodicFlushTimeoutMs.get() &gt; now) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      return; // No need to flush yet<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    // The first record in the writebuffer has been in there too long --&gt; flush<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    try {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      executedWriteBufferPeriodicFlushes.incrementAndGet();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      flush();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    } catch (InterruptedIOException | RetriesExhaustedWithDetailsException e) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      LOG.error("Exception during timerCallbackForWriteBufferPeriodicFlush --&gt; " + e.getMessage());<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><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  // validate for well-formedness<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  public void validatePut(final Put put) throws IllegalArgumentException {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    HTable.validatePut(put, maxKeyValueSize);<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>  @Override<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  public synchronized void close() throws IOException {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    try {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      if (this.closed) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        return;<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      }<a name="line.251"></a>
+<span class="sourceLineNo">252</span><a name="line.252"></a>
+<span class="sourceLineNo">253</span>      // Stop any running Periodic Flush timer.<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      disableWriteBufferPeriodicFlush();<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>      // As we can have an operation in progress even if the buffer is empty, we call<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      // backgroundFlushCommits at least one time.<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      backgroundFlushCommits(true);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      if (cleanupPoolOnClose) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        this.pool.shutdown();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        boolean terminated;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        int loopCnt = 0;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        do {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          // wait until the pool has terminated<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          terminated = this.pool.awaitTermination(60, TimeUnit.SECONDS);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          loopCnt += 1;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          if (loopCnt &gt;= 10) {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>            LOG.warn("close() failed to terminate pool after 10 minutes. Abandoning pool.");<a name="line.268"></a>
+<span class="sourceLineNo">269</span>            break;<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        } while (!terminated);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    } catch (InterruptedException e) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      LOG.warn("waitForTermination interrupted");<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    } finally {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      this.closed = 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><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  @Override<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  public synchronized void flush() throws InterruptedIOException,<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      RetriesExhaustedWithDetailsException {<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // As we can have an operation in progress even if the buffer is empty, we call<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    // backgroundFlushCommits at least one time.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    backgroundFlushCommits(true);<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>  /**<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * Send the operations in the buffer to the servers. Does not wait for the server's answer. If<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * the is an error (max retried reach from a previous flush or bad operation), it tries to send<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * all operations in the buffer and sends an exception.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   *<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   * @param synchronous - if true, sends all the writes and wait for all of them to finish before<a name="line.293"></a>
+<span class="sourceLineNo">294</span>   *        returning.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   */<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  private void backgroundFlushCommits(boolean synchronous) throws<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      InterruptedIOException,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      RetriesExhaustedWithDetailsException {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    if (!synchronous &amp;&amp; writeAsyncBuffer.isEmpty()) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      return;<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>    if (!synchronous) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      QueueRowAccess taker = new QueueRowAccess();<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      AsyncProcessTask task = wrapAsyncProcessTask(taker);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      try {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        ap.submit(task);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        if (ap.hasError()) {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>          LOG.debug(tableName + ": One or more of the operations have failed -"<a name="line.309"></a>
+<span class="sourceLineNo">310</span>              + " waiting for all operation in progress to finish (successfully or not)");<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      } finally {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        taker.restoreRemainder();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    if (synchronous || ap.hasError()) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      QueueRowAccess taker = new QueueRowAccess();<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      AsyncProcessTask task = wrapAsyncProcessTask(taker);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      try {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        while (!taker.isEmpty()) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>          ap.submit(task);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>          taker.reset();<a name="line.322"></a>
+<span class="sourceLineNo">323</span>        }<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      } finally {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        taker.restoreRemainder();<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      RetriesExhaustedWithDetailsException error =<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          ap.waitForAllPreviousOpsAndReset(null, tableName);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      if (error != null) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        if (listener == null) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          throw error;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        } else {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          this.listener.onException(error, this);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      }<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  /**<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * Reuse the AsyncProcessTask when calling<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * {@link BufferedMutatorImpl#backgroundFlushCommits(boolean)}.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   * @param taker access the inner buffer.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * @return An AsyncProcessTask which always returns the latest rpc and operation timeout.<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  private AsyncProcessTask wrapAsyncProcessTask(QueueRowAccess taker) {<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    AsyncProcessTask task = AsyncProcessTask.newBuilder()<a name="line.346"></a>
+<span class="sourceLineNo">347</span>        .setPool(pool)<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        .setTableName(tableName)<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        .setRowAccess(taker)<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        .setSubmittedRows(AsyncProcessTask.SubmittedRows.AT_LEAST_ONE)<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        .build();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    return new AsyncProcessTask(task) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      @Override<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      public int getRpcTimeout() {<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        return rpcTimeout.get();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>      }<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>      @Override<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      public int getOperationTimeout() {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        return operationTimeout.get();<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    };<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">364</span><a name="line.364"></a>
+<span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
+<span class="sourceLineNo">366</span>   * {@inheritDoc}<a name="line.366"></a>
+<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  @Override<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  public long getWriteBufferSize() {<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    return this.writeBufferSize;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  }<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public synchronized void setWriteBufferPeriodicFlush(long timeoutMs, long timerTickMs) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    long originalTimeoutMs   = this.writeBufferPeriodicFlushTimeoutMs.get();<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    long originalTimerTickMs = this.writeBufferPeriodicFlushTimerTickMs.get();<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>    // Both parameters have minimal values.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    writeBufferPeriodicFlushTimeoutMs.set(Math.max(0, timeoutMs));<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    writeBufferPeriodicFlushTimerTickMs.set(<a name="line.380"></a>
+<span class="sourceLineNo">381</span>            Math.max(MIN_WRITE_BUFFER_PERIODIC_FLUSH_TIMERTICK_MS, timerTickMs));<a name="line.381"></a>
+<span class="sourceLineNo">382</span><a name="line.382"></a>
+<span class="sourceLineNo">383</span>    // If something changed we stop the old Timer.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    if (writeBufferPeriodicFlushTimeoutMs.get() != originalTimeoutMs ||<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        writeBufferPeriodicFlushTimerTickMs.get() != originalTimerTickMs) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      if (writeBufferPeriodicFlushTimer != null) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        writeBufferPeriodicFlushTimer.cancel();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        writeBufferPeriodicFlushTimer = null;<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><a name="line.391"></a>
+<span class="sourceLineNo">392</span>    // If we have the need for a timer and there is none we start it<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    if (writeBufferPeriodicFlushTimer == null &amp;&amp;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>        writeBufferPeriodicFlushTimeoutMs.get() &gt; 0) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      writeBufferPeriodicFlushTimer = new Timer(true); // Create Timer running as Daemon.<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      writeBufferPeriodicFlushTimer.schedule(new TimerTask() {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        @Override<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        public void run() {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>          BufferedMutatorImpl.this.timerCallbackForWriteBufferPeriodicFlush();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      }, writeBufferPeriodicFlushTimerTickMs.get(),<a name="line.401"></a>
+<span class="sourceLineNo">402</span>         writeBufferPeriodicFlushTimerTickMs.get());<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    }<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  @Override<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  public long getWriteBufferPeriodicFlushTimeoutMs() {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    return writeBufferPeriodicFlushTimeoutMs.get();<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>  @Override<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  public long getWriteBufferPeriodicFlushTimerTickMs() {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    return writeBufferPeriodicFlushTimerTickMs.get();<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  @Override<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public void setRpcTimeout(int rpcTimeout) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    this.rpcTimeout.set(rpcTimeout);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>  @Override<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  public void setOperationTimeout(int operationTimeout) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    this.operationTimeout.set(operationTimeout);<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>  @VisibleForTesting<a name="line.426"></a>
+<span class="sourceLineNo">427</span>  long getCurrentWriteBufferSize() {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    return currentWriteBufferSize.get();<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  @VisibleForTesting<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  int size() {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    return undealtMutationCount.get();<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>  private class QueueRowAccess implements RowAccess&lt;Row&gt; {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    private int remainder = undealtMutationCount.getAndSet(0);<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>    void reset() {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      restoreRemainder();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      remainder = undealtMutationCount.getAndSet(0);<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>    @Override<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    public Iterator&lt;Row&gt; iterator() {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      return new Iterator&lt;Row&gt;() {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        private final Iterator&lt;Mutation&gt; iter = writeAsyncBuffer.iterator();<a name="line.447"></a>
+<span class="sourceLineNo">448</span>        private int countDown = remainder;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        private Mutation last = null;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>        @Override<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        public boolean hasNext() {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>          if (countDown &lt;= 0) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>            return false;<a name="line.453"></a>
+<span class="sourceLineNo">454</span>          }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>          return iter.hasNext();<a name="line.455"></a>
+<span class="sourceLineNo">456</span>        }<a name="line.456"></a>
+<span class="sourceLineNo">457</span>        @Override<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        public Row next() {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>          if (!hasNext()) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>            throw new NoSuchElementException();<a name="line.460"></a>
+<span class="sourceLineNo">461</span>          }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>          last = iter.next();<a name="line.462"></a>
+<span class="sourceLineNo">463</span>          if (last == null) {<a name="line.463"></a>
+<span class="sourceLineNo">464</span>            throw new NoSuchElementException();<a name="line.464"></a>
+<span class="sourceLineNo">465</span>          }<a name="line.465"></a>
+<span class="sourceLineNo">466</span>          --countDown;<a name="line.466"></a>
+<span class="sourceLineNo">467</span>          return last;<a name="line.467"></a>
+<span class="sourceLineNo">468</span>        }<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        @Override<a name="line.469"></a>
+<span class="sourceLineNo">470</span>        public void remove() {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>          if (last == null) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>            throw new IllegalStateException();<a name="line.472"></a>
+<span class="sourceLineNo">473</span>          }<a name="line.473"></a>
+<span class="sourceLineNo">474</span>          iter.remove();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>          currentWriteBufferSize.addAndGet(-last.heapSize());<a name="line.475"></a>
+<span class="sourceLineNo">476</span>          --remainder;<a name="line.476"></a>
+<span class="sourceLineNo">477</span>        }<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      };<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>    @Override<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    public int size() {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      return remainder;<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>    void restoreRemainder() {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      if (remainder &gt; 0) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>        undealtMutationCount.addAndGet(remainder);<a name="line.488"></a>
+<span class="sourceLineNo">489</span>        remainder = 0;<a name="line.489"></a>
+<span class="sourceLineNo">490</span>      }<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    }<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span>    @Override<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    public boolean isEmpty() {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      return remainder &lt;= 0;<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    }<a name="line.496"></a>
+<span class="sourceLineNo">497</span>  }<a name="line.497"></a>
+<span class="sourceLineNo">498</span>}<a name="line.498"></a>
 
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html
new file mode 100644
index 0000000..83f3e58
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html
@@ -0,0 +1,412 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestMultiParallel.MyMasterObserver (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TestMultiParallel.MyMasterObserver (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestMultiParallel.MyMasterObserver.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/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" target="_top">Frames</a></li>
+<li><a href="TestMultiParallel.MyMasterObserver.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>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 TestMultiParallel.MyMasterObserver" class="title">Class TestMultiParallel.MyMasterObserver</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.client.TestMultiParallel.MyMasterObserver</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd>org.apache.hadoop.hbase.Coprocessor, org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.hadoop.hbase.coprocessor.MasterObserver</dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.803">TestMultiParallel.MyMasterObserver</a>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements org.apache.hadoop.hbase.coprocessor.MasterObserver, org.apache.hadoop.hbase.coprocessor.MasterCoprocessor</pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.Coprocessor">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.Coprocessor</h3>
+<code>org.apache.hadoop.hbase.Coprocessor.State</code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#postBalanceCount">postBalanceCount</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#start">start</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.Coprocessor">
+<!--   -->
+</a>
+<h3>Fields inherited from interface&nbsp;org.apache.hadoop.hbase.Coprocessor</h3>
+<code>PRIORITY_HIGHEST, PRIORITY_LOWEST, PRIORITY_SYSTEM, PRIORITY_USER, VERSION</code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#MyMasterObserver--">MyMasterObserver</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;org.apache.hadoop.hbase.coprocessor.MasterObserver&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#getMasterObserver--">getMasterObserver</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#postBalance-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-">postBalance</a></span>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
+           <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.master.RegionPlan&gt;&nbsp;plans)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#start-org.apache.hadoop.hbase.CoprocessorEnvironment-">start</a></span>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;env)</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/8/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/8/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/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/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/8/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/8/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/8/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/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.coprocessor.MasterObserver">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.coprocessor.MasterObserver</h3>
+<code>postAbortProcedure, postAddReplicationPeer, postAddRSGroup, postAssign, postBalanceRSGroup, postBalanceSwitch, postClearDeadServers, postCloneSnapshot, postCompletedCreateTableAction, postCompletedDeleteTableAction, postCompletedDisableTableAction, postCompletedEnableTableAction, postCompletedMergeRegionsAction, postCompletedModifyTableAction, postCompletedSplitRegionAction, postCompletedTruncateTableAction, postCreateNamespace, postCreateTable, postDecommissionRegionServers, postDeleteNamespace, postDeleteSnapshot, postDeleteTable, postDisableReplicationPeer, postDisableTable, postEnableReplicationPeer, postEnableTable, postGetClusterStatus, postGetLocks, postGetNamespaceDescriptor, postGetProcedures, postGetReplicationPeerConfig, postGetTableDescriptors, postGetTableNames, postListDecommissionedRegionServers, postListNamespaceDescriptors, postListReplicationPeers, postListSnapshot, postLockHeartbeat, postMergeRegions, postMergeRegionsCommitAction, postModifyNamespace, postMo
 difyTable, postMove, postMoveServers, postMoveServersAndTables, postMoveTables, postRecommissionRegionServer, postRegionOffline, postRemoveReplicationPeer, postRemoveRSGroup, postRemoveServers, postRequestLock, postRestoreSnapshot, postRollBackMergeRegionsAction, postRollBackSplitRegionAction, postSetNamespaceQuota, postSetSplitOrMergeEnabled, postSetTableQuota, postSetUserQuota, postSetUserQuota, postSetUserQuota, postSnapshot, postStartMaster, postTableFlush, postTruncateTable, postUnassign, postUpdateReplicationPeerConfig, preAbortProcedure, preAddReplicationPeer, preAddRSGroup, preAssign, preBalance, preBalanceRSGroup, preBalanceSwitch, preClearDeadServers, preCloneSnapshot, preCreateNamespace, preCreateTable, preCreateTableAction, preDecommissionRegionServers, preDeleteNamespace, preDeleteSnapshot, preDeleteTable, preDeleteTableAction, preDisableReplicationPeer, preDisableTable, preDisableTableAction, preEnableReplicationPeer, preEnableTable, preEnableTableAction, preGetCluster
 Status, preGetLocks, preGetNamespaceDescriptor, preGetProcedures, preGetReplicationPeerConfig, preGetTableDescriptors, preGetTableNames, preListDecommissionedRegionServers, preListNamespaceDescriptors, preListReplicationPeers, preListSnapshot, preLockHeartbeat, preMasterInitialization, preMergeRegions, preMergeRegionsAction, preMergeRegionsCommitAction, preModifyNamespace, preModifyTable, preModifyTableAction, preMove, preMoveServers, preMoveServersAndTables, preMoveTables, preRecommissionRegionServer, preRegionOffline, preRemoveReplicationPeer, preRemoveRSGroup, preRemoveServers, preRequestLock, preRestoreSnapshot, preSetNamespaceQuota, preSetSplitOrMergeEnabled, preSetTableQuota, preSetUserQuota, preSetUserQuota, preSetUserQuota, preShutdown, preSnapshot, preSplitRegion, preSplitRegionAction, preSplitRegionAfterMETAAction, preSplitRegionBeforeMETAAction, preStopMaster, preTableFlush, preTruncateTable, preTruncateTableAction, preUnassign, preUpdateReplicationPeerConfig</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.Coprocessor">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.Coprocessor</h3>
+<code>getServices, stop</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="postBalanceCount">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>postBalanceCount</h4>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#line.804">postBalanceCount</a></pre>
+</li>
+</ul>
+<a name="start">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>start</h4>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#line.805">start</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="MyMasterObserver--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>MyMasterObserver</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#line.803">MyMasterObserver</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="start-org.apache.hadoop.hbase.CoprocessorEnvironment-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>start</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#line.808">start</a>(org.apache.hadoop.hbase.CoprocessorEnvironment&nbsp;env)
+           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>start</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Coprocessor</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getMasterObserver--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getMasterObserver</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;org.apache.hadoop.hbase.coprocessor.MasterObserver&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#line.813">getMasterObserver</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>getMasterObserver</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.MasterCoprocessor</code></dd>
+</dl>
+</li>
+</ul>
+<a name="postBalance-org.apache.hadoop.hbase.coprocessor.ObserverContext-java.util.List-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>postBalance</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html#line.818">postBalance</a>(org.apache.hadoop.hbase.coprocessor.ObserverContext&lt;org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment&gt;&nbsp;ctx,
+                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.master.RegionPlan&gt;&nbsp;plans)
+                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code>postBalance</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.coprocessor.MasterObserver</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestMultiParallel.MyMasterObserver.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/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" target="_top">Frames</a></li>
+<li><a href="TestMultiParallel.MyMasterObserver.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>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;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/org/apache/hadoop/hbase/client/TestMultiParallel.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestMultiParallel.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestMultiParallel.html
index 3660b81..becba0b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestMultiParallel.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestMultiParallel.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestMobSnapshotFromClient.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestMultiParallel.html" target="_top">Frames</a></li>
@@ -74,7 +74,7 @@ var activeTableTab = "activeTableTab";
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&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>
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.58">TestMultiParallel</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.67">TestMultiParallel</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -117,6 +117,25 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&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>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel.MyMasterObserver</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field.summary">
@@ -335,7 +354,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.59">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.68">LOG</a></pre>
 </li>
 </ul>
 <a name="UTIL">
@@ -344,7 +363,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>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/TestMultiParallel.html#line.61">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/TestMultiParallel.html#line.70">UTIL</a></pre>
 </li>
 </ul>
 <a name="VALUE">
@@ -353,7 +372,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>VALUE</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.62">VALUE</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.71">VALUE</a></pre>
 </li>
 </ul>
 <a name="QUALIFIER">
@@ -362,7 +381,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>QUALIFIER</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.63">QUALIFIER</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.72">QUALIFIER</a></pre>
 </li>
 </ul>
 <a name="FAMILY">
@@ -371,7 +390,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILY</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.64">FAMILY</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.73">FAMILY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.TestMultiParallel.FAMILY">Constant Field Values</a></dd>
@@ -384,7 +403,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_TABLE</h4>
-<pre>private static final&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.65">TEST_TABLE</a></pre>
+<pre>private static final&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.74">TEST_TABLE</a></pre>
 </li>
 </ul>
 <a name="BYTES_FAMILY">
@@ -393,7 +412,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>BYTES_FAMILY</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.66">BYTES_FAMILY</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.75">BYTES_FAMILY</a></pre>
 </li>
 </ul>
 <a name="ONE_ROW">
@@ -402,7 +421,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>ONE_ROW</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.67">ONE_ROW</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.76">ONE_ROW</a></pre>
 </li>
 </ul>
 <a name="KEYS">
@@ -411,7 +430,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYS</h4>
-<pre>private static final&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.68">KEYS</a></pre>
+<pre>private static final&nbsp;byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.77">KEYS</a></pre>
 </li>
 </ul>
 <a name="slaves">
@@ -420,7 +439,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>slaves</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.70">slaves</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.79">slaves</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.TestMultiParallel.slaves">Constant Field Values</a></dd>
@@ -433,7 +452,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CONNECTION</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.client.Connection <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.71">CONNECTION</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.Connection <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.80">CONNECTION</a></pre>
 </li>
 </ul>
 </li>
@@ -450,7 +469,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestMultiParallel</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.58">TestMultiParallel</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.67">TestMultiParallel</a>()</pre>
 </li>
 </ul>
 </li>
@@ -467,7 +486,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>beforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.73">beforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.82">beforeClass</a>()
                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -481,7 +500,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>afterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.90">afterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.102">afterClass</a>()
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -495,7 +514,7 @@ extends <a href="http://docs.oracle.com/javase/8/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/client/TestMultiParallel.html#line.95">before</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.107">before</a>()
             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -509,7 +528,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>makeKeys</h4>
-<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.107">makeKeys</a>()</pre>
+<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.128">makeKeys</a>()</pre>
 </li>
 </ul>
 <a name="testActiveThreadsCount--">
@@ -518,7 +537,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testActiveThreadsCount</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.153">testActiveThreadsCount</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.174">testActiveThreadsCount</a>()
                             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">This is for testing the active number of threads that were used while
  doing a batch operation. It inserts one row per region via the batch
@@ -540,7 +559,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBatchWithGet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.177">testBatchWithGet</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.198">testBatchWithGet</a>()
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -554,7 +573,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBadFam</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.216">testBadFam</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.237">testBadFam</a>()
                 throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -568,7 +587,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlushCommitsNoAbort</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.246">testFlushCommitsNoAbort</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.267">testFlushCommitsNoAbort</a>()
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -582,7 +601,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testFlushCommitsWithAbort</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.258">testFlushCommitsWithAbort</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.279">testFlushCommitsWithAbort</a>()
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Only run one Multi test with a forced RegionServer abort. Otherwise, the
  unit tests will take an unnecessarily long time to run.</div>
@@ -598,7 +617,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doTestFlushCommits</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.268">doTestFlushCommits</a>(boolean&nbsp;doAbort)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.289">doTestFlushCommits</a>(boolean&nbsp;doAbort)
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Set table auto flush to false and test flushing commits</div>
 <dl>
@@ -615,7 +634,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBatchWithPut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.329">testBatchWithPut</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.350">testBatchWithPut</a>()
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -629,7 +648,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBatchWithDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.362">testBatchWithDelete</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.383">testBatchWithDelete</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -643,7 +662,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testHTableDeleteWithList</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.393">testHTableDeleteWithList</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.414">testHTableDeleteWithList</a>()
                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -657,7 +676,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBatchWithManyColsInOneRowGetAndPut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.423">testBatchWithManyColsInOneRowGetAndPut</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.444">testBatchWithManyColsInOneRowGetAndPut</a>()
                                             throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -671,7 +690,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBatchWithIncrementAndAppend</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.462">testBatchWithIncrementAndAppend</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.483">testBatchWithIncrementAndAppend</a>()
                                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -685,7 +704,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testNonceCollision</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.497">testNonceCollision</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.518">testNonceCollision</a>()
                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -699,7 +718,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testBatchWithMixedActions</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.597">testBatchWithMixedActions</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.618">testBatchWithMixedActions</a>()
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -713,7 +732,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateResult</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.700">validateResult</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;r)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.721">validateResult</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;r)</pre>
 </li>
 </ul>
 <a name="validateResult-java.lang.Object-byte:A-byte:A-">
@@ -722,7 +741,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateResult</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.704">validateResult</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;r1,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.725">validateResult</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;r1,
                             byte[]&nbsp;qual,
                             byte[]&nbsp;val)</pre>
 </li>
@@ -733,7 +752,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>constructPutRequests</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.client.Put&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.714">constructPutRequests</a>()</pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.client.Put&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.735">constructPutRequests</a>()</pre>
 </li>
 </ul>
 <a name="validateLoadedData-org.apache.hadoop.hbase.client.Table-">
@@ -742,7 +761,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateLoadedData</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.724">validateLoadedData</a>(org.apache.hadoop.hbase.client.Table&nbsp;table)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.745">validateLoadedData</a>(org.apache.hadoop.hbase.client.Table&nbsp;table)
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -756,7 +775,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>validateEmpty</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.768">validateEmpty</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;r1)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.789">validateEmpty</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;r1)</pre>
 </li>
 </ul>
 <a name="validateSizeAndEmpty-java.lang.Object:A-int-">
@@ -765,7 +784,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>validateSizeAndEmpty</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.774">validateSizeAndEmpty</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;results,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html#line.795">validateSizeAndEmpty</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&nbsp;results,
                                   int&nbsp;expectedSize)</pre>
 </li>
 </ul>
@@ -798,7 +817,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestMobSnapshotFromClient.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestMultiParallel.html" target="_top">Frames</a></li>
@@ -822,7 +841,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/org/apache/hadoop/hbase/client/TestMultipleTimestamps.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestMultipleTimestamps.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestMultipleTimestamps.html
index bc07839..34cf6ed 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestMultipleTimestamps.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestMultipleTimestamps.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -764,7 +764,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestMultiParallel.MyMasterObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestMultiParallel.MyMasterObserver.html b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestMultiParallel.MyMasterObserver.html
new file mode 100644
index 0000000..9fdb8ac
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestMultiParallel.MyMasterObserver.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.client.TestMultiParallel.MyMasterObserver (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.client.TestMultiParallel.MyMasterObserver (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.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/TestMultiParallel.MyMasterObserver.html" target="_top">Frames</a></li>
+<li><a href="TestMultiParallel.MyMasterObserver.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.client.TestMultiParallel.MyMasterObserver" class="title">Uses of Class<br>org.apache.hadoop.hbase.client.TestMultiParallel.MyMasterObserver</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.client.TestMultiParallel.MyMasterObserver</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.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/TestMultiParallel.MyMasterObserver.html" target="_top">Frames</a></li>
+<li><a href="TestMultiParallel.MyMasterObserver.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/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 83f8d1b..93668d6 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
@@ -187,6 +187,7 @@
 <li><a href="TestMobSnapshotCloneIndependence.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMobSnapshotCloneIndependence</a></li>
 <li><a href="TestMobSnapshotFromClient.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMobSnapshotFromClient</a></li>
 <li><a href="TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMultiParallel</a></li>
+<li><a href="TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMultiParallel.MyMasterObserver</a></li>
 <li><a href="TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMultipleTimestamps</a></li>
 <li><a href="TestMultiRespectsLimits.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMultiRespectsLimits</a></li>
 <li><a href="TestMutation.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestMutation</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/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 e5ebc29..ec0b93c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
@@ -902,218 +902,222 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client">TestMultiParallel.MyMasterObserver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client">TestMultipleTimestamps</a></td>
 <td class="colLast">
 <div class="block">Run tests related to <code>TimestampsFilter</code> using HBase client APIs.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html" title="class in org.apache.hadoop.hbase.client">TestMultiRespectsLimits</a></td>
 <td class="colLast">
 <div class="block">This test sets the multi size WAAAAAY low and then checks to make sure that gets will still make
  progress.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMutation.html" title="class in org.apache.hadoop.hbase.client">TestMutation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestMvccConsistentScanner.html" title="class in org.apache.hadoop.hbase.client">TestMvccConsistentScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestOperation.html" title="class in org.apache.hadoop.hbase.client">TestOperation</a></td>
 <td class="colLast">
 <div class="block">Run tests that use the functionality of the Operation superclass for
  Puts, Gets, Deletes, Scans, and MultiPuts.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestProcedureFuture.html" title="class in org.apache.hadoop.hbase.client">TestProcedureFuture</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestProcedureFuture.TestFuture.html" title="class in org.apache.hadoop.hbase.client">TestProcedureFuture.TestFuture</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutDeleteEtcCellIteration.html" title="class in org.apache.hadoop.hbase.client">TestPutDeleteEtcCellIteration</a></td>
 <td class="colLast">
 <div class="block">Test that I can Iterate Client Actions that hold Cells (Get does not have Cells).</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutDotHas.html" title="class in org.apache.hadoop.hbase.client">TestPutDotHas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutWithDelete.html" title="class in org.apache.hadoop.hbase.client">TestPutWithDelete</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutWriteToWal.html" title="class in org.apache.hadoop.hbase.client">TestPutWriteToWal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncScanCursor.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncScanCursor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncTableLimitedScanWithFilter</a></td>
 <td class="colLast">
 <div class="block">With filter we may stop at a middle of row and think that we still have more cells for the
  current row but actually all the remaining cells will be filtered out by the filter.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTablePartialScan.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncTablePartialScan</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableScan.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncTableScan</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRegionInfoDisplay.html" title="class in org.apache.hadoop.hbase.client">TestRegionInfoDisplay</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicasClient.html" title="class in org.apache.hadoop.hbase.client">TestReplicasClient</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/client/TestReplicasClient.SlowMeCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicasClient.SlowMeCopro</a></td>
 <td class="colLast">
 <div class="block">This copro is used to synchronize the tests.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicationShell.html" title="class in org.apache.hadoop.hbase.client">TestReplicationShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.RegionServerHostingPrimayMetaRegionSlowOrStopCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster.RegionServerHostingPrimayMetaRegionSlowOrStopCopro</a></td>
 <td class="colLast">
 <div class="block">This copro is used to slow down the primary meta region scan a bit</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.RegionServerStoppedCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster.RegionServerStoppedCopro</a></td>
 <td class="colLast">
 <div class="block">This copro is used to simulate region server down exception for Get and Scan</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.SlowMeCopro.html" title="class in org.apache.hadoop.hbase.client">TestReplicaWithCluster.SlowMeCopro</a></td>
 <td class="colLast">
 <div class="block">This copro is used to synchronize the tests.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClient.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClient</a></td>
 <td class="colLast">
 <div class="block">Test restore snapshots from the client</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientWithRegionReplicas.html" title="class in org.apache.hadoop.hbase.client">TestRestoreSnapshotFromClientWithRegionReplicas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResult.html" title="class in org.apache.hadoop.hbase.client">TestResult</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultFromCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestResultFromCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultFromCoprocessor.MyObserver.html" title="class in org.apache.hadoop.hbase.client">TestResultFromCoprocessor.MyObserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultScannerCursor.html" title="class in org.apache.hadoop.hbase.client">TestResultScannerCursor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultSizeEstimation.html" title="class in org.apache.hadoop.hbase.client">TestResultSizeEstimation</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRetriesExhaustedWithDetailsException.html" title="class in org.apache.hadoop.hbase.client">TestRetriesExhaustedWithDetailsException</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestReversedScannerCallable.html" title="class in org.apache.hadoop.hbase.client">TestReversedScannerCallable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRowComparator.html" title="class in org.apache.hadoop.hbase.client">TestRowComparator</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.html" title="class in org.apache.hadoop.hbase.client">TestRpcControllerFactory</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.CountingRpcController.html" title="class in org.apache.hadoop.hbase.client">TestRpcControllerFactory.CountingRpcController</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.StaticRpcControllerFactory.html" title="class in org.apache.hadoop.hbase.client">TestRpcControllerFactory.StaticRpcControllerFactory</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScan.html" title="class in org.apache.hadoop.hbase.client">TestScan</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide</a></td>
 <td class="colLast">
 <div class="block">A client-side test, mostly testing scanners with various parameters.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide2.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide2</a></td>
 <td class="colLast">
 <div class="block">Testcase for newly added feature in HBASE-17143, such as startRow and stopRow
  inclusive/exclusive, limit for rows, etc.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannerTimeout.html" title="class in org.apache.hadoop.hbase.client">TestScannerTimeout</a></td>
 <td class="colLast">
 <div class="block">Test various scanner timeout issues.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" title="class in org.apache.hadoop.hbase.client">TestScanWithoutFetchingData</a></td>
 <td class="colLast">
 <div class="block">Testcase to make sure that we do not close scanners if ScanRequest.numberOfRows is zero.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException</a></td>
 <td class="colLast">
 <div class="block">This class is for testing HBaseConnectionManager ServerBusyException.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.SleepLongerAtFirstCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepLongerAtFirstCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerLoadDurability.html" title="class in org.apache.hadoop.hbase.client">TestServerLoadDurability</a></td>
 <td class="colLast">
 <div class="block">HBASE-19496 noticed that the RegionLoad/ServerLoad may be corrupted if rpc server
@@ -1121,99 +1125,99 @@
  invoke HMaster to iterate all stored server/region loads.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestShell.html" title="class in org.apache.hadoop.hbase.client">TestShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestShellNoCluster.html" title="class in org.apache.hadoop.hbase.client">TestShellNoCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestShortCircuitConnection.html" title="class in org.apache.hadoop.hbase.client">TestShortCircuitConnection</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSimpleRequestController.html" title="class in org.apache.hadoop.hbase.client">TestSimpleRequestController</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSizeFailures.html" title="class in org.apache.hadoop.hbase.client">TestSizeFailures</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSmallReversedScanner.html" title="class in org.apache.hadoop.hbase.client">TestSmallReversedScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotCloneIndependence</a></td>
 <td class="colLast">
 <div class="block">Test to verify that the cloned table is independent of the table from which it was cloned</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromAdmin.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotFromAdmin</a></td>
 <td class="colLast">
 <div class="block">Test snapshot logic from the client</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClient.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotFromClient</a></td>
 <td class="colLast">
 <div class="block">Test create/using/deleting snapshots from the client</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClientWithRegionReplicas.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotFromClientWithRegionReplicas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotMetadata.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotMetadata</a></td>
 <td class="colLast">
 <div class="block">Test class to verify that metadata is consistent before and after a snapshot attempt.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotWithAcl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotWithAcl.AccessReadAction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotWithAcl.AccessWriteAction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.html" title="class in org.apache.hadoop.hbase.client">TestSplitOrMergeStatus</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TestTableDescriptorBuilder</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/client/TestTableFavoredNodes.html" title="class in org.apache.hadoop.hbase.client">TestTableFavoredNodes</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html" title="class in org.apache.hadoop.hbase.client">TestTableSnapshotScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTimestampsFilter.html" title="class in org.apache.hadoop.hbase.client">TestTimestampsFilter</a></td>
 <td class="colLast">
 <div class="block">Run tests related to <code>TimestampsFilter</code> using HBase client APIs.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestUpdateConfiguration.html" title="class in org.apache.hadoop.hbase.client">TestUpdateConfiguration</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">TestZKAsyncRegistry</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/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 6712261..6171375 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -414,6 +414,7 @@
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestMetricsConnection.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMetricsConnection</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClient.DelayFlushCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMobCloneSnapshotFromClient.DelayFlushCoprocessor</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMultiParallel</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.MyMasterObserver.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMultiParallel.MyMasterObserver</span></a> (implements org.apache.hadoop.hbase.coprocessor.MasterCoprocessor, org.apache.hadoop.hbase.coprocessor.MasterObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMultipleTimestamps</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMultiRespectsLimits</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestMutation.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestMutation</span></a></li>


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

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


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

Branch: refs/heads/asf-site
Commit: 25f2bbc0b6a6c1fcb4b593de4d39a9e8bb7bf310
Parents: 30a1f62
Author: jenkins <bu...@apache.org>
Authored: Tue Jan 2 15:17:59 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Tue Jan 2 15:17:59 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |    4 +-
 apache_hbase_reference_guide.pdf                |    6 +-
 book.html                                       |    2 +-
 bulk-loads.html                                 |    4 +-
 checkstyle-aggregate.html                       |  138 +-
 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                 |    6 +-
 devapidocs/index-all.html                       |    4 +
 .../backup/impl/BackupSystemTable.WALItem.html  |   18 +-
 .../hbase/backup/impl/BackupSystemTable.html    |  524 +--
 .../hbase/backup/master/BackupLogCleaner.html   |    6 +-
 .../hadoop/hbase/backup/package-tree.html       |    6 +-
 .../BufferedMutatorImpl.QueueRowAccess.html     |   16 +-
 .../hbase/client/BufferedMutatorImpl.html       |   78 +-
 .../hadoop/hbase/client/package-tree.html       |   22 +-
 .../hadoop/hbase/filter/package-tree.html       |   10 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    6 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |    2 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |    4 +-
 .../hbase/master/balancer/package-tree.html     |    2 +-
 .../hadoop/hbase/master/package-tree.html       |    4 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   18 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    2 +-
 .../hadoop/hbase/quotas/package-tree.html       |    6 +-
 .../hadoop/hbase/regionserver/package-tree.html |   14 +-
 .../regionserver/querymatcher/package-tree.html |    2 +-
 .../hbase/regionserver/wal/package-tree.html    |    2 +-
 .../replication/regionserver/package-tree.html  |    2 +-
 .../hbase/security/access/package-tree.html     |    2 +-
 .../hadoop/hbase/thrift/package-tree.html       |    2 +-
 .../apache/hadoop/hbase/util/package-tree.html  |   10 +-
 .../org/apache/hadoop/hbase/Version.html        |    6 +-
 .../backup/impl/BackupSystemTable.WALItem.html  | 3850 +++++++++---------
 .../hbase/backup/impl/BackupSystemTable.html    | 3850 +++++++++---------
 .../hbase/backup/master/BackupLogCleaner.html   |   94 +-
 .../BufferedMutatorImpl.QueueRowAccess.html     |  834 ++--
 .../hbase/client/BufferedMutatorImpl.html       |  834 ++--
 .../master/cleaner/CleanerChore.Action.html     |   12 +-
 .../cleaner/CleanerChore.CleanerTask.html       |   12 +-
 .../hbase/master/cleaner/CleanerChore.html      |   12 +-
 export_control.html                             |    4 +-
 hbase-annotations/checkstyle.html               |    4 +-
 hbase-annotations/dependencies.html             |    4 +-
 hbase-annotations/dependency-convergence.html   |    4 +-
 hbase-annotations/dependency-info.html          |    4 +-
 hbase-annotations/dependency-management.html    |    4 +-
 hbase-annotations/index.html                    |    4 +-
 hbase-annotations/integration.html              |    4 +-
 hbase-annotations/issue-tracking.html           |    4 +-
 hbase-annotations/license.html                  |    4 +-
 hbase-annotations/mail-lists.html               |    4 +-
 hbase-annotations/plugin-management.html        |    4 +-
 hbase-annotations/plugins.html                  |    4 +-
 hbase-annotations/project-info.html             |    4 +-
 hbase-annotations/project-reports.html          |    4 +-
 hbase-annotations/project-summary.html          |    4 +-
 hbase-annotations/source-repository.html        |    4 +-
 hbase-annotations/team-list.html                |    4 +-
 hbase-build-configuration/dependencies.html     |    4 +-
 .../dependency-convergence.html                 |    4 +-
 hbase-build-configuration/dependency-info.html  |    4 +-
 .../dependency-management.html                  |    4 +-
 .../hbase-archetypes/dependencies.html          |    4 +-
 .../dependency-convergence.html                 |    4 +-
 .../hbase-archetypes/dependency-info.html       |    4 +-
 .../hbase-archetypes/dependency-management.html |    4 +-
 .../hbase-archetype-builder/dependencies.html   |    4 +-
 .../dependency-convergence.html                 |    4 +-
 .../dependency-info.html                        |    4 +-
 .../dependency-management.html                  |    4 +-
 .../hbase-archetype-builder/index.html          |    4 +-
 .../hbase-archetype-builder/integration.html    |    4 +-
 .../hbase-archetype-builder/issue-tracking.html |    4 +-
 .../hbase-archetype-builder/license.html        |    4 +-
 .../hbase-archetype-builder/mail-lists.html     |    4 +-
 .../plugin-management.html                      |    4 +-
 .../hbase-archetype-builder/plugins.html        |    4 +-
 .../hbase-archetype-builder/project-info.html   |    4 +-
 .../project-summary.html                        |    4 +-
 .../source-repository.html                      |    4 +-
 .../hbase-archetype-builder/team-list.html      |    4 +-
 .../hbase-client-project/checkstyle.html        |    4 +-
 .../hbase-client-project/dependencies.html      |    6 +-
 .../dependency-convergence.html                 |    4 +-
 .../hbase-client-project/dependency-info.html   |    4 +-
 .../dependency-management.html                  |    4 +-
 .../hbase-client-project/index.html             |    4 +-
 .../hbase-client-project/integration.html       |    4 +-
 .../hbase-client-project/issue-tracking.html    |    4 +-
 .../hbase-client-project/license.html           |    4 +-
 .../hbase-client-project/mail-lists.html        |    4 +-
 .../hbase-client-project/plugin-management.html |    4 +-
 .../hbase-client-project/plugins.html           |    4 +-
 .../hbase-client-project/project-info.html      |    4 +-
 .../hbase-client-project/project-reports.html   |    4 +-
 .../hbase-client-project/project-summary.html   |    4 +-
 .../hbase-client-project/source-repository.html |    4 +-
 .../hbase-client-project/team-list.html         |    4 +-
 .../hbase-shaded-client-project/checkstyle.html |    4 +-
 .../dependencies.html                           |    4 +-
 .../dependency-convergence.html                 |    4 +-
 .../dependency-info.html                        |    4 +-
 .../dependency-management.html                  |    4 +-
 .../hbase-shaded-client-project/index.html      |    4 +-
 .../integration.html                            |    4 +-
 .../issue-tracking.html                         |    4 +-
 .../hbase-shaded-client-project/license.html    |    4 +-
 .../hbase-shaded-client-project/mail-lists.html |    4 +-
 .../plugin-management.html                      |    4 +-
 .../hbase-shaded-client-project/plugins.html    |    4 +-
 .../project-info.html                           |    4 +-
 .../project-reports.html                        |    4 +-
 .../project-summary.html                        |    4 +-
 .../source-repository.html                      |    4 +-
 .../hbase-shaded-client-project/team-list.html  |    4 +-
 .../hbase-archetypes/index.html                 |    4 +-
 .../hbase-archetypes/integration.html           |    4 +-
 .../hbase-archetypes/issue-tracking.html        |    4 +-
 .../hbase-archetypes/license.html               |    4 +-
 .../hbase-archetypes/mail-lists.html            |    4 +-
 .../hbase-archetypes/plugin-management.html     |    4 +-
 .../hbase-archetypes/plugins.html               |    4 +-
 .../hbase-archetypes/project-info.html          |    4 +-
 .../hbase-archetypes/project-summary.html       |    4 +-
 .../hbase-archetypes/source-repository.html     |    4 +-
 .../hbase-archetypes/team-list.html             |    4 +-
 .../hbase-spark/checkstyle.html                 |    4 +-
 .../hbase-spark/dependencies.html               |    4 +-
 .../hbase-spark/dependency-convergence.html     |    4 +-
 .../hbase-spark/dependency-info.html            |    4 +-
 .../hbase-spark/dependency-management.html      |    4 +-
 .../hbase-spark/index.html                      |    4 +-
 .../hbase-spark/integration.html                |    4 +-
 .../hbase-spark/issue-tracking.html             |    4 +-
 .../hbase-spark/license.html                    |    4 +-
 .../hbase-spark/mail-lists.html                 |    4 +-
 .../hbase-spark/plugin-management.html          |    4 +-
 .../hbase-spark/plugins.html                    |    4 +-
 .../hbase-spark/project-info.html               |    4 +-
 .../hbase-spark/project-reports.html            |    4 +-
 .../hbase-spark/project-summary.html            |    4 +-
 .../hbase-spark/source-repository.html          |    4 +-
 .../hbase-spark/team-list.html                  |    4 +-
 hbase-build-configuration/index.html            |    4 +-
 hbase-build-configuration/integration.html      |    4 +-
 hbase-build-configuration/issue-tracking.html   |    4 +-
 hbase-build-configuration/license.html          |    4 +-
 hbase-build-configuration/mail-lists.html       |    4 +-
 .../plugin-management.html                      |    4 +-
 hbase-build-configuration/plugins.html          |    4 +-
 hbase-build-configuration/project-info.html     |    4 +-
 hbase-build-configuration/project-summary.html  |    4 +-
 .../source-repository.html                      |    4 +-
 hbase-build-configuration/team-list.html        |    4 +-
 hbase-shaded-check-invariants/checkstyle.html   |    4 +-
 hbase-shaded-check-invariants/dependencies.html |    4 +-
 .../dependency-convergence.html                 |    4 +-
 .../dependency-info.html                        |    4 +-
 .../dependency-management.html                  |    4 +-
 hbase-shaded-check-invariants/index.html        |    4 +-
 hbase-shaded-check-invariants/integration.html  |    4 +-
 .../issue-tracking.html                         |    4 +-
 hbase-shaded-check-invariants/license.html      |    4 +-
 hbase-shaded-check-invariants/mail-lists.html   |    4 +-
 .../plugin-management.html                      |    4 +-
 hbase-shaded-check-invariants/plugins.html      |    4 +-
 hbase-shaded-check-invariants/project-info.html |    4 +-
 .../project-reports.html                        |    4 +-
 .../project-summary.html                        |    4 +-
 .../source-repository.html                      |    4 +-
 hbase-shaded-check-invariants/team-list.html    |    4 +-
 index.html                                      |    4 +-
 integration.html                                |    4 +-
 issue-tracking.html                             |    4 +-
 license.html                                    |    4 +-
 mail-lists.html                                 |    4 +-
 metrics.html                                    |    4 +-
 old_news.html                                   |    4 +-
 plugin-management.html                          |    4 +-
 plugins.html                                    |    4 +-
 poweredbyhbase.html                             |    4 +-
 project-info.html                               |    4 +-
 project-reports.html                            |    4 +-
 project-summary.html                            |    4 +-
 pseudo-distributed.html                         |    4 +-
 replication.html                                |    4 +-
 resources.html                                  |    4 +-
 source-repository.html                          |    4 +-
 sponsors.html                                   |    4 +-
 supportingprojects.html                         |    4 +-
 team-list.html                                  |    4 +-
 testdevapidocs/allclasses-frame.html            |    1 +
 testdevapidocs/allclasses-noframe.html          |    1 +
 testdevapidocs/index-all.html                   |   14 +
 .../hbase/backup/TestBackupSystemTable.html     |   60 +-
 .../TestMultiParallel.MyMasterObserver.html     |  412 ++
 .../hadoop/hbase/client/TestMultiParallel.html  |   99 +-
 .../hbase/client/TestMultipleTimestamps.html    |    4 +-
 .../TestMultiParallel.MyMasterObserver.html     |  125 +
 .../hadoop/hbase/client/package-frame.html      |    1 +
 .../hadoop/hbase/client/package-summary.html    |  134 +-
 .../hadoop/hbase/client/package-tree.html       |    1 +
 .../org/apache/hadoop/hbase/package-tree.html   |    8 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    2 +-
 .../TestCompactingToCellFlatMapMemStore.html    |   52 +-
 .../hadoop/hbase/regionserver/package-tree.html |    4 +-
 .../apache/hadoop/hbase/test/package-tree.html  |    4 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    2 +-
 testdevapidocs/overview-tree.html               |    1 +
 .../hbase/backup/TestBackupSystemTable.html     |  900 ++--
 .../TestMultiParallel.MyMasterObserver.html     |  897 ++++
 .../hadoop/hbase/client/TestMultiParallel.html  | 1522 +++----
 .../TestCompactingToCellFlatMapMemStore.html    | 1645 ++++----
 218 files changed, 9304 insertions(+), 7641 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 588d0d3..f91f1db 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -606,7 +606,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 50d5668..9f2b0c6 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20180101144730+00'00')
-/CreationDate (D:20180101144730+00'00')
+/ModDate (D:20180102144702+00'00')
+/CreationDate (D:20180102144702+00'00')
 >>
 endobj
 2 0 obj
@@ -28014,7 +28014,7 @@ endobj
 endobj
 136 0 obj
 << /Limits [(__anchor-top) (adding.new.node)]
-/Names [(__anchor-top) 25 0 R (__indexterm-7402832) 3448 0 R (__indexterm-7405082) 3450 0 R (__indexterm-7407144) 3451 0 R (__indexterm-7409018) 3452 0 R (acid) 911 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3547 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3548 0 R (add.metrics) 3545 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 3789 0 R (adding.new.node) 3014 0 R]
+/Names [(__anchor-top) 25 0 R (__indexterm-7402834) 3448 0 R (__indexterm-7405084) 3450 0 R (__indexterm-7407146) 3451 0 R (__indexterm-7409020) 3452 0 R (acid) 911 0 R (add-metric-name-and-function-to-hadoop-compat-interface) 3547 0 R (add-the-implementation-to-both-hadoop-1-and-hadoop-2-compat-modules) 3548 0 R (add.metrics) 3545 0 R (adding-a-new-chapter-to-the-hbase-reference-guide) 3789 0 R (adding.new.node) 3014 0 R]
 >>
 endobj
 137 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 7f5df5a..fd7f564 100644
--- a/book.html
+++ b/book.html
@@ -37140,7 +37140,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-01-01 14:29:48 UTC
+Last updated 2018-01-02 14:29:35 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index bd96d79..34abb3b 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -311,7 +311,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index afb5325..204f394 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -11872,12 +11872,12 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation">JavadocTagContinuationIndentation</a>
 <ul>
 <li>offset: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>810</td>
+<td>826</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>4144</td>
+<td>4128</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>misc</td>
@@ -16425,7 +16425,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 26 has parse error. Missed HTML close tag 'arg'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>43</td></tr></table></div>
 <div class="section">
@@ -17070,7 +17070,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 4 has parse error. Missed HTML close tag 'pre'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>59</td></tr></table></div>
 <div class="section">
@@ -19212,7 +19212,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 19 has parse error. Details: no viable alternative at input '&lt;code&gt;\n   *   List&lt;Future&lt;' while parsing HTML_TAG</td>
 <td>165</td></tr></table></div>
 <div class="section">
@@ -22293,7 +22293,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 2 has parse error. Unrecognized error from ANTLR parser: null</td>
 <td>83</td></tr>
 <tr class="b">
@@ -23102,13 +23102,13 @@
 <td>indentation</td>
 <td>Indentation</td>
 <td>'try' child have incorrect indentation level 5, expected level should be 6.</td>
-<td>441</td></tr>
+<td>463</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>520</td></tr></table></div>
+<td>542</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.backup.TestFullBackupSet.java">org/apache/hadoop/hbase/backup/TestFullBackupSet.java</h3>
 <table border="0" class="table table-striped">
@@ -23682,7 +23682,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 43 has parse error. Missed HTML close tag 'TableName'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>179</td></tr>
 <tr class="b">
@@ -24164,127 +24164,127 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'else' construct must use '{}'s.</td>
-<td>453</td></tr>
+<td>454</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>489</td></tr>
+<td>490</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>573</td></tr>
+<td>574</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>678</td></tr>
+<td>679</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>689</td></tr>
+<td>690</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>705</td></tr>
+<td>706</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>708</td></tr>
+<td>709</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>713</td></tr>
+<td>714</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>749</td></tr>
+<td>750</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>766</td></tr>
+<td>767</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>1080</td></tr>
+<td>1081</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>1121</td></tr>
+<td>1163</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>1154</td></tr>
+<td>1196</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>1165</td></tr>
+<td>1207</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>1181</td></tr>
+<td>1223</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>1207</td></tr>
+<td>1249</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>1256</td></tr>
+<td>1298</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>1543</td></tr>
+<td>1585</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>1849</td></tr>
+<td>1891</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>1942</td></tr>
+<td>1984</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>1956</td></tr></table></div>
+<td>1998</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.backup.impl.FullTableBackupClient.java">org/apache/hadoop/hbase/backup/impl/FullTableBackupClient.java</h3>
 <table border="0" class="table table-striped">
@@ -36842,55 +36842,55 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>147</td></tr>
+<td>168</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>148</td></tr>
+<td>169</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>149</td></tr>
+<td>170</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>150</td></tr>
+<td>171</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>255</td></tr>
+<td>276</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>266</td></tr>
+<td>287</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
-<td>302</td></tr>
+<td>323</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>515</td></tr>
+<td>536</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
-<td>592</td></tr></table></div>
+<td>613</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.TestMultipleTimestamps.java">org/apache/hadoop/hbase/client/TestMultipleTimestamps.java</h3>
 <table border="0" class="table table-striped">
@@ -39852,7 +39852,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 37 has parse error. Details: no viable alternative at input '&lt;ColumnFamily,' while parsing HTML_ELEMENT</td>
 <td>29</td></tr></table></div>
 <div class="section">
@@ -57819,7 +57819,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 24 has parse error. Details: no viable alternative at input '&lt;key,' while parsing HTML_ELEMENT</td>
 <td>25</td></tr>
 <tr class="a">
@@ -61608,7 +61608,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 2 has parse error. Unrecognized error from ANTLR parser: null</td>
 <td>583</td></tr>
 <tr class="b">
@@ -85089,7 +85089,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 60 has parse error. Missed HTML close tag 'Comparable'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>28</td></tr>
 <tr class="b">
@@ -89742,7 +89742,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 0 has parse error. Unrecognized error from ANTLR parser: null</td>
 <td>74</td></tr>
 <tr class="a">
@@ -101024,103 +101024,103 @@
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.IOException' import.</td>
-<td>43</td></tr>
+<td>42</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
-<td>126</td></tr>
+<td>125</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
-<td>160</td></tr>
+<td>159</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
-<td>183</td></tr>
+<td>182</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
-<td>317</td></tr>
+<td>316</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
-<td>328</td></tr>
+<td>327</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
-<td>336</td></tr>
+<td>335</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
-<td>351</td></tr>
+<td>350</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td>396</td></tr>
+<td>395</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'lambda arguments' have incorrect indentation level 8, expected level should be 6.</td>
-<td>398</td></tr>
+<td>397</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'lambda arguments' have incorrect indentation level 8, expected level should be 6.</td>
-<td>400</td></tr>
+<td>399</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td>416</td></tr>
+<td>415</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'lambda arguments' have incorrect indentation level 8, expected level should be 6.</td>
-<td>418</td></tr>
+<td>417</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'lambda arguments' have incorrect indentation level 8, expected level should be 6.</td>
-<td>420</td></tr>
+<td>419</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td>433</td></tr>
+<td>432</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'lambda arguments' have incorrect indentation level 8, expected level should be 6.</td>
-<td>435</td></tr>
+<td>434</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'lambda arguments' have incorrect indentation level 8, expected level should be 6.</td>
-<td>437</td></tr></table></div>
+<td>436</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.TestCompaction.java">org/apache/hadoop/hbase/regionserver/TestCompaction.java</h3>
 <table border="0" class="table table-striped">
@@ -101346,7 +101346,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 33 has parse error. Missed HTML close tag 'number'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>124</td></tr>
 <tr class="b">
@@ -138768,7 +138768,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 23 has parse error. Details: no viable alternative at input '&lt;expected,' while parsing HTML_ELEMENT</td>
 <td>143</td></tr>
 <tr class="a">
@@ -138978,7 +138978,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 78 has parse error. Details: no viable alternative at input '&lt;Object&gt;, Map&lt;String,' while parsing HTML_TAG</td>
 <td>33</td></tr>
 <tr class="b">
@@ -139605,7 +139605,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 35 has parse error. Missed HTML close tag 'index'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>796</td></tr>
 <tr class="a">
@@ -143718,7 +143718,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 58 has parse error. Details: no viable alternative at input '&lt;byte[' while parsing HTML_ELEMENT</td>
 <td>421</td></tr>
 <tr class="a">
@@ -144534,7 +144534,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 25 has parse error. Details: no viable alternative at input '&lt;returncode,' while parsing HTML_ELEMENT</td>
 <td>83</td></tr>
 <tr class="b">
@@ -147144,7 +147144,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 4875e25..89c456b 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -380,7 +380,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/cygwin.html
----------------------------------------------------------------------
diff --git a/cygwin.html b/cygwin.html
index 171814f..55d9085 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -679,7 +679,7 @@ Now your <b>HBase </b>server is running, <b>start coding</b> and build that next
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index c79caef..70bfd19 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -445,7 +445,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 8761173..fded26d 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -1082,7 +1082,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 66304fe..e79b185 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -318,7 +318,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index ef5c3c7..14fef63 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <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" />
@@ -980,7 +980,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 220aa33..2ca7152 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3747,21 +3747,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Mon Jan  1 14:42:00 UTC 2018"</code></td>
+<td class="colLast"><code>"Tue Jan  2 14:41:36 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"6c2aa4c9ccea04ccf5c9c84de9677bd6232856e1"</code></td>
+<td class="colLast"><code>"9c2a35542f3434ea8b4f278bb4e4bf7dcd1db604"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"51047680d257b9bedaa4299f65bfb29b"</code></td>
+<td class="colLast"><code>"533cd22faf0c4ec6357512eafd4ddab5"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 669c66a..ac76696 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -3463,6 +3463,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html#areSyncFuturesReleased--">areSyncFuturesReleased()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html" title="class in org.apache.hadoop.hbase.regionserver.wal">FSHLog.SyncRunner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#areWALFilesDeletable-java.lang.Iterable-">areWALFilesDeletable(Iterable&lt;FileStatus&gt;)</a></span> - Method in class org.apache.hadoop.hbase.backup.impl.<a href="org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupSystemTable</a></dt>
+<dd>
+<div class="block">Check if WAL file is eligible for deletion using multi-get</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#areWritesEnabled--">areWritesEnabled()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStore.html#areWritesEnabled--">areWritesEnabled()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html b/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html
index 2f04aee..2e74fe8 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.94">BackupSystemTable.WALItem</a>
+<pre>static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.95">BackupSystemTable.WALItem</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -223,7 +223,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>backupId</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.95">backupId</a></pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.96">backupId</a></pre>
 </li>
 </ul>
 <a name="walFile">
@@ -232,7 +232,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>walFile</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.96">walFile</a></pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.97">walFile</a></pre>
 </li>
 </ul>
 <a name="backupRoot">
@@ -241,7 +241,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>backupRoot</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.97">backupRoot</a></pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.98">backupRoot</a></pre>
 </li>
 </ul>
 </li>
@@ -258,7 +258,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>WALItem</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.99">WALItem</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.100">WALItem</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId,
         <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;walFile,
         <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</pre>
 </li>
@@ -277,7 +277,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackupId</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.105">getBackupId</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.106">getBackupId</a>()</pre>
 </li>
 </ul>
 <a name="getWalFile--">
@@ -286,7 +286,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getWalFile</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.109">getWalFile</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.110">getWalFile</a>()</pre>
 </li>
 </ul>
 <a name="getBackupRoot--">
@@ -295,7 +295,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackupRoot</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.113">getBackupRoot</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.114">getBackupRoot</a>()</pre>
 </li>
 </ul>
 <a name="toString--">
@@ -304,7 +304,7 @@ extends <a href="http://docs.oracle.com/javase/8/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/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.118">toString</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html#line.119">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html
index 0f49224..514ad87 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html
@@ -45,1938 +45,1980 @@
 <span class="sourceLineNo">037</span>import org.apache.commons.lang3.ArrayUtils;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>import org.apache.commons.lang3.StringUtils;<a name="line.38"></a>
 <span class="sourceLineNo">039</span>import org.apache.hadoop.conf.Configuration;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.fs.Path;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.Cell;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.ServerName;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.TableName;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.backup.BackupInfo;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.backup.BackupInfo.BackupState;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.backup.BackupRestoreConstants;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.backup.BackupType;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.backup.util.BackupUtils;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.client.Delete;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.client.Get;<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.ResultScanner;<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.client.SnapshotDescription;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.client.Table;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.slf4j.Logger;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.slf4j.LoggerFactory;<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.BackupProtos;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;<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> * This class provides API to access backup system table&lt;br&gt;<a name="line.75"></a>
-<span class="sourceLineNo">076</span> *<a name="line.76"></a>
-<span class="sourceLineNo">077</span> * Backup system table schema:&lt;br&gt;<a name="line.77"></a>
-<span class="sourceLineNo">078</span> * &lt;p&gt;&lt;ul&gt;<a name="line.78"></a>
-<span class="sourceLineNo">079</span> * &lt;li&gt;1. Backup sessions rowkey= "session:"+backupId; value =serialized BackupInfo&lt;/li&gt;<a name="line.79"></a>
-<span class="sourceLineNo">080</span> * &lt;li&gt;2. Backup start code rowkey = "startcode:"+backupRoot; value = startcode&lt;/li&gt;<a name="line.80"></a>
-<span class="sourceLineNo">081</span> * &lt;li&gt;3. Incremental backup set rowkey="incrbackupset:"+backupRoot; value=[list of tables]&lt;/li&gt;<a name="line.81"></a>
-<span class="sourceLineNo">082</span> * &lt;li&gt;4. Table-RS-timestamp map rowkey="trslm:"+backupRoot+table_name;<a name="line.82"></a>
-<span class="sourceLineNo">083</span> * value = map[RS-&gt; last WAL timestamp]&lt;/li&gt;<a name="line.83"></a>
-<span class="sourceLineNo">084</span> * &lt;li&gt;5. RS - WAL ts map rowkey="rslogts:"+backupRoot +server; value = last WAL timestamp&lt;/li&gt;<a name="line.84"></a>
-<span class="sourceLineNo">085</span> * &lt;li&gt;6. WALs recorded rowkey="wals:"+WAL unique file name;<a name="line.85"></a>
-<span class="sourceLineNo">086</span> * value = backupId and full WAL file name&lt;/li&gt;<a name="line.86"></a>
-<span class="sourceLineNo">087</span> * &lt;/ul&gt;&lt;/p&gt;<a name="line.87"></a>
-<span class="sourceLineNo">088</span> */<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>@InterfaceAudience.Private<a name="line.90"></a>
-<span class="sourceLineNo">091</span>public final class BackupSystemTable implements Closeable {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private static final Logger LOG = LoggerFactory.getLogger(BackupSystemTable.class);<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  static class WALItem {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    String backupId;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    String walFile;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    String backupRoot;<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>    WALItem(String backupId, String walFile, String backupRoot) {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      this.backupId = backupId;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      this.walFile = walFile;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      this.backupRoot = backupRoot;<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>    public String getBackupId() {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      return backupId;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>    public String getWalFile() {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      return walFile;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    }<a name="line.111"></a>
-<span class="sourceLineNo">112</span><a name="line.112"></a>
-<span class="sourceLineNo">113</span>    public String getBackupRoot() {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      return backupRoot;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>    @Override<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    public String toString() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      return Path.SEPARATOR + backupRoot + Path.SEPARATOR + backupId + Path.SEPARATOR + walFile;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>  }<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  private TableName tableName;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  /**<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * Stores backup sessions (contexts)<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  final static byte[] SESSIONS_FAMILY = "session".getBytes();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  /**<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * Stores other meta<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  final static byte[] META_FAMILY = "meta".getBytes();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  final static byte[] BULK_LOAD_FAMILY = "bulk".getBytes();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  /**<a name="line.134"></a>
-<span class="sourceLineNo">135</span>   * Connection to HBase cluster, shared among all instances<a name="line.135"></a>
-<span class="sourceLineNo">136</span>   */<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private final Connection connection;<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  private final static String BACKUP_INFO_PREFIX = "session:";<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  private final static String START_CODE_ROW = "startcode:";<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  private final static byte[] ACTIVE_SESSION_ROW = "activesession:".getBytes();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private final static byte[] ACTIVE_SESSION_COL = "c".getBytes();<a name="line.142"></a>
-<span class="sourceLineNo">143</span><a name="line.143"></a>
-<span class="sourceLineNo">144</span>  private final static byte[] ACTIVE_SESSION_YES = "yes".getBytes();<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private final static byte[] ACTIVE_SESSION_NO = "no".getBytes();<a name="line.145"></a>
-<span class="sourceLineNo">146</span><a name="line.146"></a>
-<span class="sourceLineNo">147</span>  private final static String INCR_BACKUP_SET = "incrbackupset:";<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  private final static String TABLE_RS_LOG_MAP_PREFIX = "trslm:";<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  private final static String RS_LOG_TS_PREFIX = "rslogts:";<a name="line.149"></a>
-<span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private final static String BULK_LOAD_PREFIX = "bulk:";<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private final static byte[] BULK_LOAD_PREFIX_BYTES = BULK_LOAD_PREFIX.getBytes();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  private final static byte[] DELETE_OP_ROW = "delete_op_row".getBytes();<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  private final static byte[] MERGE_OP_ROW = "merge_op_row".getBytes();<a name="line.154"></a>
-<span class="sourceLineNo">155</span><a name="line.155"></a>
-<span class="sourceLineNo">156</span>  final static byte[] TBL_COL = Bytes.toBytes("tbl");<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  final static byte[] FAM_COL = Bytes.toBytes("fam");<a name="line.157"></a>
-<span class="sourceLineNo">158</span>  final static byte[] PATH_COL = Bytes.toBytes("path");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  final static byte[] STATE_COL = Bytes.toBytes("state");<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  // the two states a bulk loaded file can be<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  final static byte[] BL_PREPARE = Bytes.toBytes("R");<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  final static byte[] BL_COMMIT = Bytes.toBytes("D");<a name="line.162"></a>
-<span class="sourceLineNo">163</span><a name="line.163"></a>
-<span class="sourceLineNo">164</span>  private final static String WALS_PREFIX = "wals:";<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  private final static String SET_KEY_PREFIX = "backupset:";<a name="line.165"></a>
-<span class="sourceLineNo">166</span><a name="line.166"></a>
-<span class="sourceLineNo">167</span>  // separator between BULK_LOAD_PREFIX and ordinals<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  protected final static String BLK_LD_DELIM = ":";<a name="line.168"></a>
-<span class="sourceLineNo">169</span>  private final static byte[] EMPTY_VALUE = new byte[] {};<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>  // Safe delimiter in a string<a name="line.171"></a>
-<span class="sourceLineNo">172</span>  private final static String NULL = "\u0000";<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public BackupSystemTable(Connection conn) throws IOException {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    this.connection = conn;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    tableName = BackupSystemTable.getTableName(conn.getConfiguration());<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    checkSystemTable();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  }<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  private void checkSystemTable() throws IOException {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    try (Admin admin = connection.getAdmin()) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      verifyNamespaceExists(admin);<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>      if (!admin.tableExists(tableName)) {<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        HTableDescriptor backupHTD =<a name="line.185"></a>
-<span class="sourceLineNo">186</span>            BackupSystemTable.getSystemTableDescriptor(connection.getConfiguration());<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        admin.createTable(backupHTD);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      }<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      waitForSystemTable(admin);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  private void verifyNamespaceExists(Admin admin) throws IOException {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    String namespaceName = tableName.getNamespaceAsString();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    NamespaceDescriptor ns = NamespaceDescriptor.create(namespaceName).build();<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    NamespaceDescriptor[] list = admin.listNamespaceDescriptors();<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    boolean exists = false;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    for (NamespaceDescriptor nsd : list) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      if (nsd.getName().equals(ns.getName())) {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>        exists = true;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        break;<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>    if (!exists) {<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      admin.createNamespace(ns);<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><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  private void waitForSystemTable(Admin admin) throws IOException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    long TIMEOUT = 60000;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    long startTime = EnvironmentEdgeManager.currentTime();<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    while (!admin.tableExists(tableName) || !admin.isTableAvailable(tableName)) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      try {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>        Thread.sleep(100);<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      } catch (InterruptedException e) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      }<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      if (EnvironmentEdgeManager.currentTime() - startTime &gt; TIMEOUT) {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        throw new IOException("Failed to create backup system table after " + TIMEOUT + "ms");<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>    LOG.debug("Backup table exists and available");<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>  @Override<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  public void close() {<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    // do nothing<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>   * Updates status (state) of a backup session in backup system table table<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * @param info backup info<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   * @throws IOException exception<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   */<a name="line.234"></a>
-<span class="sourceLineNo">235</span>  public void updateBackupInfo(BackupInfo info) throws IOException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span><a name="line.236"></a>
-<span class="sourceLineNo">237</span>    if (LOG.isTraceEnabled()) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      LOG.trace("update backup status in backup system table for: " + info.getBackupId()<a name="line.238"></a>
-<span class="sourceLineNo">239</span>          + " set status=" + info.getState());<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    try (Table table = connection.getTable(tableName)) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      Put put = createPutForBackupInfo(info);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      table.put(put);<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>  /*<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * @param backupId the backup Id<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * @return Map of rows to path of bulk loaded hfile<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   */<a name="line.250"></a>
-<span class="sourceLineNo">251</span>  Map&lt;byte[], String&gt; readBulkLoadedFiles(String backupId) throws IOException {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    Scan scan = BackupSystemTable.createScanForBulkLoadedFiles(backupId);<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    try (Table table = connection.getTable(tableName);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      Result res = null;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      Map&lt;byte[], String&gt; map = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      while ((res = scanner.next()) != null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        res.advance();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        byte[] row = CellUtil.cloneRow(res.listCells().get(0));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        for (Cell cell : res.listCells()) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.261"></a>
-<span class="sourceLineNo">262</span>            BackupSystemTable.PATH_COL.length) == 0) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>            map.put(row, Bytes.toString(CellUtil.cloneValue(cell)));<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      return map;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  }<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>  /*<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * Used during restore<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * @param backupId the backup Id<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * @param sTableList List of tables<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   * @return array of Map of family to List of Paths<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   */<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  public Map&lt;byte[], List&lt;Path&gt;&gt;[] readBulkLoadedFiles(String backupId, List&lt;TableName&gt; sTableList)<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      throws IOException {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    Scan scan = BackupSystemTable.createScanForBulkLoadedFiles(backupId);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    Map&lt;byte[], List&lt;Path&gt;&gt;[] mapForSrc = new Map[sTableList == null ? 1 : sTableList.size()];<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    try (Table table = connection.getTable(tableName);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      Result res = null;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      while ((res = scanner.next()) != null) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        res.advance();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        TableName tbl = null;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        byte[] fam = null;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        String path = null;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        for (Cell cell : res.listCells()) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          if (CellUtil.compareQualifiers(cell, BackupSystemTable.TBL_COL, 0,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>            BackupSystemTable.TBL_COL.length) == 0) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>            tbl = TableName.valueOf(CellUtil.cloneValue(cell));<a name="line.292"></a>
-<span class="sourceLineNo">293</span>          } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.FAM_COL, 0,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            BackupSystemTable.FAM_COL.length) == 0) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>            fam = CellUtil.cloneValue(cell);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            BackupSystemTable.PATH_COL.length) == 0) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>            path = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        }<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        int srcIdx = IncrementalTableBackupClient.getIndex(tbl, sTableList);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        if (srcIdx == -1) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          // the table is not among the query<a name="line.303"></a>
-<span class="sourceLineNo">304</span>          continue;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        if (mapForSrc[srcIdx] == null) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>          mapForSrc[srcIdx] = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        }<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        List&lt;Path&gt; files;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        if (!mapForSrc[srcIdx].containsKey(fam)) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>          files = new ArrayList&lt;Path&gt;();<a name="line.311"></a>
-<span class="sourceLineNo">312</span>          mapForSrc[srcIdx].put(fam, files);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        } else {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          files = mapForSrc[srcIdx].get(fam);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>        files.add(new Path(path));<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        if (LOG.isDebugEnabled()) {<a name="line.317"></a>
-<span class="sourceLineNo">318</span>          LOG.debug("found bulk loaded file : " + tbl + " " + Bytes.toString(fam) + " " + path);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      }<a name="line.320"></a>
-<span class="sourceLineNo">321</span><a name="line.321"></a>
-<span class="sourceLineNo">322</span>      return mapForSrc;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  }<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  /*<a name="line.326"></a>
-<span class="sourceLineNo">327</span>   * @param map Map of row keys to path of bulk loaded hfile<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   */<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  void deleteBulkLoadedFiles(Map&lt;byte[], String&gt; map) throws IOException {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    try (Table table = connection.getTable(tableName)) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      List&lt;Delete&gt; dels = new ArrayList&lt;&gt;();<a name="line.331"></a>
-<span class="sourceLineNo">332</span>      for (byte[] row : map.keySet()) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>        dels.add(new Delete(row).addFamily(BackupSystemTable.META_FAMILY));<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      table.delete(dels);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    }<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  }<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  /**<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   * Deletes backup status from backup system table table<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * @param backupId backup id<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * @throws IOException exception<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>  public void deleteBackupInfo(String backupId) throws IOException {<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>    if (LOG.isTraceEnabled()) {<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      LOG.trace("delete backup status in backup system table for " + backupId);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    try (Table table = connection.getTable(tableName)) {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      Delete del = createDeleteForBackupInfo(backupId);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      table.delete(del);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    }<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  }<a name="line.354"></a>
-<span class="sourceLineNo">355</span><a name="line.355"></a>
-<span class="sourceLineNo">356</span>  /*<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * For postBulkLoadHFile() hook.<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @param tabName table name<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @param region the region receiving hfile<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   * @param finalPaths family and associated hfiles<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   */<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  public void writePathsPostBulkLoad(TableName tabName, byte[] region,<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      Map&lt;byte[], List&lt;Path&gt;&gt; finalPaths) throws IOException {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    if (LOG.isDebugEnabled()) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      LOG.debug("write bulk load descriptor to backup " + tabName + " with " + finalPaths.size()<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          + " entries");<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    try (Table table = connection.getTable(tableName)) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      List&lt;Put&gt; puts = BackupSystemTable.createPutForCommittedBulkload(tabName, region, finalPaths);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>      table.put(puts);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      LOG.debug("written " + puts.size() + " rows for bulk load of " + tabName);<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><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /*<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * For preCommitStoreFile() hook<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * @param tabName table name<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @param region the region receiving hfile<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @param family column family<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   * @param pairs list of paths for hfiles<a name="line.380"></a>
-<span class="sourceLineNo">381</span>   */<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  public void writeFilesForBulkLoadPreCommit(TableName tabName, byte[] region, final byte[] family,<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      final List&lt;Pair&lt;Path, Path&gt;&gt; pairs) throws IOException {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    if (LOG.isDebugEnabled()) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      LOG.debug("write bulk load descriptor to backup " + tabName + " with " + pairs.size()<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          + " entries");<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    try (Table table = connection.getTable(tableName)) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      List&lt;Put&gt; puts =<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          BackupSystemTable.createPutForPreparedBulkload(tabName, region, family, pairs);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      table.put(puts);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      LOG.debug("written " + puts.size() + " rows for bulk load of " + tabName);<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><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  /*<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   * Removes rows recording bulk loaded hfiles from backup table<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * @param lst list of table names<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * @param rows the rows to be deleted<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   */<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  public void removeBulkLoadedRows(List&lt;TableName&gt; lst, List&lt;byte[]&gt; rows) throws IOException {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    try (Table table = connection.getTable(tableName)) {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      List&lt;Delete&gt; lstDels = new ArrayList&lt;&gt;();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      for (byte[] row : rows) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>        Delete del = new Delete(row);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        lstDels.add(del);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        LOG.debug("orig deleting the row: " + Bytes.toString(row));<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      table.delete(lstDels);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      LOG.debug("deleted " + rows.size() + " original bulkload rows for " + lst.size() + " tables");<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  /*<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Reads the rows from backup table recording bulk loaded hfiles<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param tableList list of table names<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @return The keys of the Map are table, region and column family. Value of the map reflects<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * whether the hfile was recorded by preCommitStoreFile hook (true)<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   */<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  public Pair&lt;Map&lt;TableName, Map&lt;String, Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;&gt;&gt;, List&lt;byte[]&gt;&gt;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      readBulkloadRows(List&lt;TableName&gt; tableList) throws IOException {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    Map&lt;TableName, Map&lt;String, Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;&gt;&gt; map = new HashMap&lt;&gt;();<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    List&lt;byte[]&gt; rows = new ArrayList&lt;&gt;();<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    for (TableName tTable : tableList) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      Scan scan = BackupSystemTable.createScanForOrigBulkLoadedFiles(tTable);<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      Map&lt;String, Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;&gt; tblMap = map.get(tTable);<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      try (Table table = connection.getTable(tableName);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>          ResultScanner scanner = table.getScanner(scan)) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        Result res = null;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        while ((res = scanner.next()) != null) {<a name="line.430"></a>
-<span class="sourceLineNo">431</span>          res.advance();<a name="line.431"></a>
-<span class="sourceLineNo">432</span>          String fam = null;<a name="line.432"></a>
-<span class="sourceLineNo">433</span>          String path = null;<a name="line.433"></a>
-<span class="sourceLineNo">434</span>          boolean raw = false;<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          byte[] row = null;<a name="line.435"></a>
-<span class="sourceLineNo">436</span>          String region = null;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          for (Cell cell : res.listCells()) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>            row = CellUtil.cloneRow(cell);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>            rows.add(row);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>            String rowStr = Bytes.toString(row);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>            region = BackupSystemTable.getRegionNameFromOrigBulkLoadRow(rowStr);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>            if (CellUtil.compareQualifiers(cell, BackupSystemTable.FAM_COL, 0,<a name="line.442"></a>
-<span class="sourceLineNo">443</span>              BackupSystemTable.FAM_COL.length) == 0) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>              fam = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.445"></a>
-<span class="sourceLineNo">446</span>              BackupSystemTable.PATH_COL.length) == 0) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>              path = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.447"></a>
-<span class="sourceLineNo">448</span>            } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.STATE_COL, 0,<a name="line.448"></a>
-<span class="sourceLineNo">449</span>              BackupSystemTable.STATE_COL.length) == 0) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>              byte[] state = CellUtil.cloneValue(cell);<a name="line.450"></a>
-<span class="sourceLineNo">451</span>              if (Bytes.equals(BackupSystemTable.BL_PREPARE, state)) {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>                raw = true;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              } else raw = false;<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>          if (map.get(tTable) == null) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>            map.put(tTable, new HashMap&lt;String, Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;&gt;());<a name="line.457"></a>
-<span class="sourceLineNo">458</span>            tblMap = map.get(tTable);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>          }<a name="line.459"></a>
-<span class="sourceLineNo">460</span>          if (tblMap.get(region) == null) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>            tblMap.put(region, new HashMap&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;());<a name="line.461"></a>
-<span class="sourceLineNo">462</span>          }<a name="line.462"></a>
-<span class="sourceLineNo">463</span>          Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt; famMap = tblMap.get(region);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>          if (famMap.get(fam) == null) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            famMap.put(fam, new ArrayList&lt;Pair&lt;String, Boolean&gt;&gt;());<a name="line.465"></a>
-<span class="sourceLineNo">466</span>          }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          famMap.get(fam).add(new Pair&lt;&gt;(path, raw));<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          LOG.debug("found orig " + path + " for " + fam + " of table " + region);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        }<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      }<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    return new Pair&lt;&gt;(map, rows);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  /*<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @param sTableList List of tables<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * @param maps array of Map of family to List of Paths<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * @param backupId the backup Id<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   */<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  public void writeBulkLoadedFiles(List&lt;TableName&gt; sTableList, Map&lt;byte[], List&lt;Path&gt;&gt;[] maps,<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      String backupId) throws IOException {<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    try (Table table = connection.getTable(tableName)) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      long ts = EnvironmentEdgeManager.currentTime();<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      int cnt = 0;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      for (int idx = 0; idx &lt; maps.length; idx++) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        Map&lt;byte[], List&lt;Path&gt;&gt; map = maps[idx];<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        TableName tn = sTableList.get(idx);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        if (map == null) continue;<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        for (Map.Entry&lt;byte[], List&lt;Path&gt;&gt; entry : map.entrySet()) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>          byte[] fam = entry.getKey();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          List&lt;Path&gt; paths = entry.getValue();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>          for (Path p : paths) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>            Put put =<a name="line.494"></a>
-<span class="sourceLineNo">495</span>                BackupSystemTable.createPutForBulkLoadedFile(tn, fam, p.toString(), backupId, ts,<a name="line.495"></a>
-<span class="sourceLineNo">496</span>                  cnt++);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>            puts.add(put);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>          }<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        }<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      }<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      if (!puts.isEmpty()) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>        table.put(puts);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>  }<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>  /**<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * Reads backup status object (instance of backup info) from backup system table table<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * @param backupId backup id<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * @return Current status of backup session or null<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
-<span class="sourceLineNo">512</span><a name="line.512"></a>
-<span class="sourceLineNo">513</span>  public BackupInfo readBackupInfo(String backupId) throws IOException {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    if (LOG.isTraceEnabled()) {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      LOG.trace("read backup status from backup system table for: " + backupId);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    try (Table table = connection.getTable(tableName)) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      Get get = createGetForBackupInfo(backupId);<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      Result res = table.get(get);<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      if (res.isEmpty()) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>        return null;<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      }<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      return resultToBackupInfo(res);<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><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  /**<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * Read the last backup start code (timestamp) of last successful backup. Will return null if<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * there is no start code stored on hbase or the value is of length 0. These two cases indicate<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * there is no successful backup completed so far.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * @param backupRoot directory path to backup destination<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * @return the timestamp of last successful backup<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   * @throws IOException exception<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  public String readBackupStartCode(String backupRoot) throws IOException {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    LOG.trace("read backup start code from backup system table");<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span>    try (Table table = connection.getTable(tableName)) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>      Get get = createGetForStartCode(backupRoot);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      Result res = table.get(get);<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      if (res.isEmpty()) {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        return null;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      }<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      Cell cell = res.listCells().get(0);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      byte[] val = CellUtil.cloneValue(cell);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      if (val.length == 0) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>        return null;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      }<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      return new String(val);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
-<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
-<span class="sourceLineNo">553</span><a name="line.553"></a>
-<span class="sourceLineNo">554</span>  /**<a name="line.554"></a>
-<span class="sourceLineNo">555</span>   * Write the start code (timestamp) to backup system table. If passed in null, then write 0 byte.<a name="line.555"></a>
-<span class="sourceLineNo">556</span>   * @param startCode start code<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   * @param backupRoot root directory path to backup<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * @throws IOException exception<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   */<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  public void writeBackupStartCode(Long startCode, String backupRoot) throws IOException {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    if (LOG.isTraceEnabled()) {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      LOG.trace("write backup start code to backup system table " + startCode);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    }<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    try (Table table = connection.getTable(tableName)) {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      Put put = createPutForStartCode(startCode.toString(), backupRoot);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      table.put(put);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    }<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>   * Exclusive operations are:<a name="line.571"></a>
-<span class="sourceLineNo">572</span>   * create, delete, merge<a name="line.572"></a>
-<span class="sourceLineNo">573</span>   * @throws IOException<a name="line.573"></a>
-<span class="sourceLineNo">574</span>   */<a name="line.574"></a>
-<span class="sourceLineNo">575</span>  public void startBackupExclusiveOperation() throws IOException {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    LOG.debug("Start new backup exclusive operation");<a name="line.576"></a>
-<span class="sourceLineNo">577</span><a name="line.577"></a>
-<span class="sourceLineNo">578</span>    try (Table table = connection.getTable(tableName)) {<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      Put put = createPutForStartBackupSession();<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      // First try to put if row does not exist<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.581"></a>
-<span class="sourceLineNo">582</span>          .ifNotExists().thenPut(put)) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        // Row exists, try to put if value == ACTIVE_SESSION_NO<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.584"></a>
-<span class="sourceLineNo">585</span>            .ifEquals(ACTIVE_SESSION_NO).thenPut(put)) {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          throw new IOException("There is an active backup exclusive operation");<a name="line.586"></a>
-<span class="sourceLineNo">587</span>        }<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    }<a name="line.589"></a>
-<span class="sourceLineNo">590</span>  }<a name="line.590"></a>
-<span class="sourceLineNo">591</span><a name="line.591"></a>
-<span class="sourceLineNo">592</span>  private Put createPutForStartBackupSession() {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Put put = new Put(ACTIVE_SESSION_ROW);<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    put.addColumn(SESSIONS_FAMILY, ACTIVE_SESSION_COL, ACTIVE_SESSION_YES);<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    return put;<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  }<a name="line.596"></a>
-<span class="sourceLineNo">597</span><a name="line.597"></a>
-<span class="sourceLineNo">598</span>  public void finishBackupExclusiveOperation() throws IOException {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    LOG.debug("Finish backup exclusive operation");<a name="line.599"></a>
-<span class="sourceLineNo">600</span><a name="line.600"></a>
-<span class="sourceLineNo">601</span>    try (Table table = connection.getTable(tableName)) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      Put put = createPutForStopBackupSession();<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.603"></a>
-<span class="sourceLineNo">604</span>          .ifEquals(ACTIVE_SESSION_YES).thenPut(put)) {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>        throw new IOException("There is no active backup exclusive operation");<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      }<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    }<a name="line.607"></a>
-<span class="sourceLineNo">608</span>  }<a name="line.608"></a>
-<span class="sourceLineNo">609</span><a name="line.609"></a>
-<span class="sourceLineNo">610</span>  private Put createPutForStopBackupSession() {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    Put put = new Put(ACTIVE_SESSION_ROW);<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    put.addColumn(SESSIONS_FAMILY, ACTIVE_SESSION_COL, ACTIVE_SESSION_NO);<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    return put;<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>   * Get the Region Servers log information after the last log roll from backup system table.<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * @param backupRoot root directory path to backup<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * @return RS log info<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * @throws IOException exception<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   */<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  public HashMap&lt;String, Long&gt; readRegionServerLastLogRollResult(String backupRoot)<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      throws IOException {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    LOG.trace("read region server last roll log result to backup system table");<a name="line.624"></a>
-<span class="sourceLineNo">625</span><a name="line.625"></a>
-<span class="sourceLineNo">626</span>    Scan scan = createScanForReadRegionServerLastLogRollResult(backupRoot);<a name="line.626"></a>
-<span class="sourceLineNo">627</span><a name="line.627"></a>
-<span class="sourceLineNo">628</span>    try (Table table = connection.getTable(tableName);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      Result res = null;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      HashMap&lt;String, Long&gt; rsTimestampMap = new HashMap&lt;String, Long&gt;();<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      while ((res = scanner.next()) != null) {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        res.advance();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>        Cell cell = res.current();<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        byte[] row = CellUtil.cloneRow(cell);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>        String server = getServerNameForReadRegionServerLastLogRollResult(row);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        byte[] data = CellUtil.cloneValue(cell);<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        rsTimestampMap.put(server, Bytes.toLong(data));<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      }<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      return rsTimestampMap;<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    }<a name="line.641"></a>
-<span class="sourceLineNo">642</span>  }<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>  /**<a name="line.644"></a>
-<span class="sourceLineNo">645</span>   * Writes Region Server last roll log result (timestamp) to backup system table table<a name="line.645"></a>
-<span class="sourceLineNo">646</span>   * @param server Region Server name<a name="line.646"></a>
-<span class="sourceLineNo">647</span>   * @param ts last log timestamp<a name="line.647"></a>
-<span class="sourceLineNo">648</span>   * @param backupRoot root directory path to backup<a name="line.648"></a>
-<span class="sourceLineNo">649</span>   * @throws IOException exception<a name="line.649"></a>
-<span class="sourceLineNo">650</span>   */<a name="line.650"></a>
-<span class="sourceLineNo">651</span>  public void writeRegionServerLastLogRollResult(String server, Long ts, String backupRoot)<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      throws IOException {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    LOG.trace("write region server last roll log result to backup system table");<a name="line.653"></a>
-<span class="sourceLineNo">654</span><a name="line.654"></a>
-<span class="sourceLineNo">655</span>    try (Table table = connection.getTable(tableName)) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      Put put = createPutForRegionServerLastLogRollResult(server, ts, backupRoot);<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      table.put(put);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    }<a name="line.658"></a>
-<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
-<span class="sourceLineNo">660</span><a name="line.660"></a>
-<span class="sourceLineNo">661</span>  /**<a name="line.661"></a>
-<span class="sourceLineNo">662</span>   * Get all completed backup information (in desc order by time)<a name="line.662"></a>
-<span class="sourceLineNo">663</span>   * @param onlyCompleted true, if only successfully completed sessions<a name="line.663"></a>
-<span class="sourceLineNo">664</span>   * @return history info of BackupCompleteData<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * @throws IOException exception<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   */<a name="line.666"></a>
-<span class="sourceLineNo">667</span>  public ArrayList&lt;BackupInfo&gt; getBackupHistory(boolean onlyCompleted) throws IOException {<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    LOG.trace("get backup history from backup system table");<a name="line.668"></a>
-<span class="sourceLineNo">669</span><a name="line.669"></a>
-<span class="sourceLineNo">670</span>    BackupState state = onlyCompleted ? BackupState.COMPLETE : BackupState.ANY;<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    ArrayList&lt;BackupInfo&gt; list = getBackupInfos(state);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    return BackupUtils.sortHistoryListDesc(list);<a name="line.672"></a>
-<span class="sourceLineNo">673</span>  }<a name="line.673"></a>
-<span class="sourceLineNo">674</span><a name="line.674"></a>
-<span class="sourceLineNo">675</span>  /**<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   * Get all backups history<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   * @return list of backup info<a name="line.677"></a>
-<span class="sourceLineNo">678</span>   * @throws IOException<a name="line.678"></a>
-<span class="sourceLineNo">679</span>   */<a name="line.679"></a>
-<span class="sourceLineNo">680</span>  public List&lt;BackupInfo&gt; getBackupHistory() throws IOException {<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    return getBackupHistory(false);<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>   * Get first n backup history records<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * @param n number of records, if n== -1 - max number<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   *        is ignored<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * @return list of records<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   * @throws IOException<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   */<a name="line.690"></a>
-<span class="sourceLineNo">691</span>  public List&lt;BackupInfo&gt; getHistory(int n) throws IOException {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    List&lt;BackupInfo&gt; history = getBackupHistory();<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    if (n == -1 || history.size() &lt;= n) {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      return history;<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    }<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    return Collections.unmodifiableList(history.subList(0, n));<a name="line.696"></a>
-<span class="sourceLineNo">697</span>  }<a name="line.697"></a>
-<span class="sourceLineNo">698</span><a name="line.698"></a>
-<span class="sourceLineNo">699</span>  /**<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   * Get backup history records filtered by list of filters.<a name="line.700"></a>
-<span class="sourceLineNo">701</span>   * @param n max number of records, if n == -1 , then max number<a name="line.701"></a>
-<span class="sourceLineNo">702</span>   *        is ignored<a name="line.702"></a>
-<span class="sourceLineNo">703</span>   * @param filters list of filters<a name="line.703"></a>
-<span class="sourceLineNo">704</span>   * @return backup records<a name="line.704"></a>
-<span class="sourceLineNo">705</span>   * @throws IOException<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   */<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  public List&lt;BackupInfo&gt; getBackupHistory(int n, BackupInfo.Filter... filters) throws IOException {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    if (filters.length == 0) return getHistory(n);<a name="line.708"></a>
-<span class="sourceLineNo">709</span><a name="line.709"></a>
-<span class="sourceLineNo">710</span>    List&lt;BackupInfo&gt; history = getBackupHistory();<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    List&lt;BackupInfo&gt; result = new ArrayList&lt;BackupInfo&gt;();<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    for (BackupInfo bi : history) {<a name="line.712"></a>
-<span class="sourceLineNo">713</span>      if (n &gt;= 0 &amp;&amp; result.size() == n) break;<a name="line.713"></a>
-<span class="sourceLineNo">714</span>      boolean passed = true;<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      for (int i = 0; i &lt; filters.length; i++) {<a name="line.715"></a>
-<span class="sourceLineNo">716</span>        if (!filters[i].apply(bi)) {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>          passed = false;<a name="line.717"></a>
-<span class="sourceLineNo">718</span>          break;<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>      if (passed) {<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        result.add(bi);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>      }<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    }<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return result;<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span>  }<a name="line.727"></a>
-<span class="sourceLineNo">728</span><a name="line.728"></a>
-<span class="sourceLineNo">729</span>  /*<a name="line.729"></a>
-<span class="sourceLineNo">730</span>   * Retrieve TableName's for completed backup of given type<a name="line.730"></a>
-<span class="sourceLineNo">731</span>   * @param type backup type<a name="line.731"></a>
-<span class="sourceLineNo">732</span>   * @return List of table names<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
-<span class="sourceLineNo">734</span>  public List&lt;TableName&gt; getTablesForBackupType(BackupType type) throws IOException {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    Set&lt;TableName&gt; names = new HashSet&lt;&gt;();<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    List&lt;BackupInfo&gt; infos = getBackupHistory(true);<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    for (BackupInfo info : infos) {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      if (info.getType() == type) {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>        names.addAll(info.getTableNames());<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      }<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    }<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    return new ArrayList&lt;&gt;(names);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>  }<a name="line.743"></a>
-<span class="sourceLineNo">744</span><a name="line.744"></a>
-<span class="sourceLineNo">745</span>  /**<a name="line.745"></a>
-<span class="sourceLineNo">746</span>   * Get history for backup destination<a name="line.746"></a>
-<span class="sourceLineNo">747</span>   * @param backupRoot backup destination path<a name="line.747"></a>
-<span class="sourceLineNo">748</span>   * @return List of backup info<a name="line.748"></a>
-<span class="sourceLineNo">749</span>   * @throws IOException<a name="line.749"></a>
-<span class="sourceLineNo">750</span>   */<a name="line.750"></a>
-<span class="sourceLineNo">751</span>  public List&lt;BackupInfo&gt; getBackupHistory(String backupRoot) throws IOException {<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    ArrayList&lt;BackupInfo&gt; history = getBackupHistory(false);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    for (Iterator&lt;BackupInfo&gt; iterator = history.iterator(); iterator.hasNext();) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      BackupInfo info = iterator.next();<a name="line.754"></a>
-<span class="sourceLineNo">755</span>      if (!backupRoot.equals(info.getBackupRootDir())) {<a name="line.755"></a>
-<span class="sourceLineNo">756</span>        iterator.remove();<a name="line.756"></a>
-<span class="sourceLineNo">757</span>      }<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    }<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    return history;<a name="line.759"></a>
-<span class="sourceLineNo">760</span>  }<a name="line.760"></a>
-<span class="sourceLineNo">761</span><a name="line.761"></a>
-<span class="sourceLineNo">762</span>  /**<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   * Get history for a table<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * @param name table name<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   * @return history for a table<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   * @throws IOException<a name="line.766"></a>
-<span class="sourceLineNo">767</span>   */<a name="line.767"></a>
-<span class="sourceLineNo">768</span>  public List&lt;BackupInfo&gt; getBackupHistoryForTable(TableName name) throws IOException {<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    List&lt;BackupInfo&gt; history = getBackupHistory();<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    List&lt;BackupInfo&gt; tableHistory = new ArrayList&lt;BackupInfo&gt;();<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    for (BackupInfo info : history) {<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      List&lt;TableName&gt; tables = info.getTableNames();<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      if (tables.contains(name)) {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>        tableHistory.add(info);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>      }<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    }<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    return tableHistory;<a name="line.777"></a>
-<span class="sourceLineNo">778</span>  }<a name="line.778"></a>
-<span class="sourceLineNo">779</span><a name="line.779"></a>
-<span class="sourceLineNo">780</span>  public Map&lt;TableName, ArrayList&lt;BackupInfo&gt;&gt; getBackupHistoryForTableSet(Set&lt;TableName&gt; set,<a name="line.780"></a>
-<span class="sourceLineNo">781</span>      String backupRoot) throws IOException {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    List&lt;BackupInfo&gt; history = getBackupHistory(backupRoot);<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    Map&lt;TableName, ArrayList&lt;BackupInfo&gt;&gt; tableHistoryMap =<a name="line.783"></a>
-<span class="sourceLineNo">784</span>        new HashMap&lt;TableName, ArrayList&lt;BackupInfo&gt;&gt;();<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    for (Iterator&lt;BackupInfo&gt; iterator = history.iterator(); iterator.hasNext();) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      BackupInfo info = iterator.next();<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      if (!backupRoot.equals(info.getBackupRootDir())) {<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        continue;<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      }<a name="line.789"></a>
-<span class="sourceLineNo">790</span>      List&lt;TableName&gt; tables = info.getTableNames();<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      for (TableName tableName : tables) {<a name="line.791"></a>
-<span class="sourceLineNo">792</span>        if (set.contains(tableName)) {<a name="line.792"></a>
-<span class="sourceLineNo">793</span>          ArrayList&lt;BackupInfo&gt; list = tableHistoryMap.get(tableName);<a name="line.793"></a>
-<span class="sourceLineNo">794</span>          if (list == null) {<a name="line.794"></a>
-<span class="sourceLineNo">795</span>            list = new ArrayList&lt;BackupInfo&gt;();<a name="line.795"></a>
-<span class="sourceLineNo">796</span>            tableHistoryMap.put(tableName, list);<a name="line.796"></a>
-<span class="sourceLineNo">797</span>          }<a name="line.797"></a>
-<span class="sourceLineNo">798</span>          list.add(info);<a name="line.798"></a>
-<span class="sourceLineNo">799</span>        }<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      }<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    }<a name="line.801"></a>
-<span class="sourceLineNo">802</span>    return tableHistoryMap;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>  }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>  /**<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * Get all backup sessions with a given state (in descending order by time)<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * @param state backup session state<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   * @return history info of backup info objects<a name="line.808"></a>
-<span class="sourceLineNo">809</span>   * @throws IOException exception<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   */<a name="line.810"></a>
-<span class="sourceLineNo">811</span>  public ArrayList&lt;BackupInfo&gt; getBackupInfos(BackupState state) throws IOException {<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    LOG.trace("get backup infos from backup system table");<a name="line.812"></a>
-<span class="sourceLineNo">813</span><a name="line.813"></a>
-<span class="sourceLineNo">814</span>    Scan scan = createScanForBackupHistory();<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    ArrayList&lt;BackupInfo&gt; list = new ArrayList&lt;BackupInfo&gt;();<a name="line.815"></a>
-<span class="sourceLineNo">816</span><a name="line.816"></a>
-<span class="sourceLineNo">817</span>    try (Table table = connection.getTable(tableName);<a name="line.817"></a>
-<span class="sourceLineNo">818</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>      Result res = null;<a name="line.819"></a>
-<span class="sourceLineNo">820</span>      while ((res = scanner.next()) != null) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>        res.advance();<a name="line.821"></a>
-<span class="sourceLineNo">822</span>        BackupInfo context = cellToBackupInfo(res.current());<a name="line.822"></a>
-<span class="sourceLineNo">823</span>        if (state != BackupState.ANY &amp;&amp; context.getState() != state) {<a name="line.823"></a>
-<span class="sourceLineNo">824</span>          continue;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>        }<a name="line.825"></a>
-<span class="sourceLineNo">826</span>        list.add(context);<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      }<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      return list;<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    }<a name="line.829"></a>
-<span class="sourceLineNo">830</span>  }<a name="line.830"></a>
-<span class="sourceLineNo">831</span><a name="line.831"></a>
-<span class="sourceLineNo">832</span>  /**<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   * Write the current timestamps for each regionserver to backup system table after a successful<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   * full or incremental backup. The saved timestamp is of the last log file that was backed up<a name="line.834"></a>
-<span class="sourceLineNo">835</span>   * already.<a name="line.835"></a>
-<span class="sourceLineNo">836</span>   * @param tables tables<a name="line.836"></a>
-<span class="sourceLineNo">837</span>   * @param newTimestamps timestamps<a name="line.837"></a>
-<span class="sourceLineNo">838</span>   * @param backupRoot root directory path to backup<a name="line.838"></a>
-<span class="sourceLineNo">839</span>   * @throws IOException exception<a name="line.839"></a>
-<span class="sourceLineNo">840</span>   */<a name="line.840"></a>
-<span class="sourceLineNo">841</span>  public void writeRegionServerLogTimestamp(Set&lt;TableName&gt; tables,<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      HashMap&lt;String, Long&gt; newTimestamps, String backupRoot) throws IOException {<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    if (LOG.isTraceEnabled()) {<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      LOG.trace("write RS log time stamps to backup system table for tables ["<a name="line.844"></a>
-<span class="sourceLineNo">845</span>          + StringUtils.join(tables, ",") + "]");<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    }<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    List&lt;Put&gt; puts = new ArrayList&lt;Put&gt;();<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    for (TableName table : tables) {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>      byte[] smapData = toTableServerTimestampProto(table, newTimestamps).toByteArray();<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      Put put = createPutForWriteRegionServerLogTimestamp(table, smapData, backupRoot);<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      puts.add(put);<a name="line.851"></a>
-<span class="sourceLineNo">852</span>    }<a name="line.852"></a>
-<span class="sourceLineNo">853</span>    try (Table table = connection.getTable(tableName)) {<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      table.put(puts);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    }<a name="line.855"></a>
-<span class="sourceLineNo">856</span>  }<a name="line.856"></a>
-<span class="sourceLineNo">857</span><a name="line.857"></a>
-<span class="sourceLineNo">858</span>  /**<a name="line.858"></a>
-<span class="sourceLineNo">859</span>   * Read the timestamp for each region server log after the last successful backup. Each table has<a name="line.859"></a>
-<span class="sourceLineNo">860</span>   * its own set of the timestamps. The info is stored for each table as a concatenated string of<a name="line.860"></a>
-<span class="sourceLineNo">861</span>   * rs-&gt;timestapmp<a name="line.861"></a>
-<span class="sourceLineNo">862</span>   * @param backupRoot root directory path to backup<a name="line.862"></a>
-<span class="sourceLineNo">863</span>   * @return the timestamp for each region server. key: tableName value:<a name="line.863"></a>
-<span class="sourceLineNo">864</span>   *         RegionServer,PreviousTimeStamp<a name="line.864"></a>
-<span class="sourceLineNo">865</span>   * @throws IOException exception<a name="line.865"></a>
-<span class="sourceLineNo">866</span>   */<a name="line.866"></a>
-<span class="sourceLineNo">867</span>  public HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt; readLogTimestampMap(String backupRoot)<a name="line.867"></a>
-<span class="sourceLineNo">868</span>      throws IOException {<a name="line.868"></a>
-<span class="sourceLineNo">869</span>    if (LOG.isTraceEnabled()) {<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      LOG.trace("read RS log ts from backup system table for root=" + backupRoot);<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>    HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt; tableTimestampMap =<a name="line.873"></a>
-<span class="sourceLineNo">874</span>        new HashMap&lt;TableName, HashMap&lt;String, Long&gt;&gt;();<a name="line.874"></a>
-<span class="sourceLineNo">875</span><a name="line.875"></a>
-<span class="sourceLineNo">876</span>    Scan scan = createScanForReadLogTimestampMap(backupRoot);<a name="line.876"></a>
-<span class="sourceLineNo">877</span>    try (Table table = connection.getTable(tableName);<a name="line.877"></a>
-<span class="sourceLineNo">878</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      Result res = null;<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      while ((res = scanner.next()) != null) {<a name="line.880"></a>
-<span class="sourceLineNo">881</span>        res.advance();<a name="line.881"></a>
-<span class="sourceLineNo">882</span>        Cell cell = res.current();<a name="line.882"></a>
-<span class="sourceLineNo">883</span>        byte[] row = CellUtil.cloneRow(cell);<a name="line.883"></a>
-<span class="sourceLineNo">884</span>        String tabName = getTableNameForReadLogTimestampMap(row);<a name="line.884"></a>
-<span class="sourceLineNo">885</span>        TableName tn = TableName.valueOf(tabName);<a name="line.885"></a>
-<span class="sourceLineNo">886</span>        byte[] data = CellUtil.cloneValue(cell);<a name="line.886"></a>
-<span class="sourceLineNo">887</span>        if (data == null) {<a name="line.887"></a>
-<span class="sourceLineNo">888</span>          throw new IOException("Data of last backup data from backup system table "<a name="line.888"></a>
-<span class="sourceLineNo">889</span>              + "is empty. Create a backup first.");<a name="line.889"></a>
-<span class="sourceLineNo">890</span>        }<a name="line.890"></a>
-<span class="sourceLineNo">891</span>        if (data != null &amp;&amp; data.length &gt; 0) {<a name="line.891"></a>
-<span class="sourceLineNo">892</span>          HashMap&lt;String, Long&gt; lastBackup =<a name="line.892"></a>
-<span class="sourceLineNo">893</span>              fromTableServerTimestampProto(BackupProtos.TableServerTimestamp.parseFrom(data));<a name="line.893"></a>
-<span class="sourceLineNo">894</span>          tableTimestampMap.put(tn, lastBackup);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>        }<a name="line.895"></a>
-<span class="sourceLineNo">896</span>      }<a name="line.896"></a>
-<span class="sourceLineNo">897</span>      return tableTimestampMap;<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    }<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  }<a name="line.899"></a>
-<span class="sourceLineNo">900</span><a name="line.900"></a>
-<span class="sourceLineNo">901</span>  private BackupProtos.TableServerTimestamp toTableServerTimestampProto(TableName table,<a name="line.901"></a>
-<span class="sourceLineNo">902</span>      Map&lt;String, Long&gt; map) {<a name="line.902"></a>
-<span class="sourceLineNo">903</span>    BackupProtos.TableServerTimestamp.Builder tstBuilder =<a name="line.903"></a>
-<span class="sourceLineNo">904</span>        BackupProtos.TableServerTimestamp.newBuilder();<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    tstBuilder.setTableName(org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil<a name="line.905"></a>
-<span class="sourceLineNo">906</span>        .toProtoTableName(table));<a name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>    for (Entry&lt;String, Long&gt; entry : map.entrySet()) {<a name="line.908"></a>
-<span class="sourceLineNo">909</span>      BackupProtos.ServerTimestamp.Builder builder = BackupProtos.ServerTimestamp.newBuilder();<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      HBaseProtos.ServerName.Builder snBuilder = HBaseProtos.ServerName.newBuilder();<a name="line.910"></a>
-<span class="sourceLineNo">911</span>      ServerName sn = ServerName.parseServerName(entry.getKey());<a name="line.911"></a>
-<span class="sourceLineNo">912</span>      snBuilder.setHostName(sn.getHostname());<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      snBuilder.setPort(sn.getPort());<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      builder.setServerName(snBuilder.build());<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      builder.setTimestamp(entry.getValue());<a name="line.915"></a>
-<span class="sourceLineNo">916</span>      tstBuilder.addServerTimestamp(builder.build());<a name="line.916"></a>
-<span class="sourceLineNo">917</span>    }<a name="line.917"></a>
-<span class="sourceLineNo">918</span><a name="line.918"></a>
-<span class="sourceLineNo">919</span>    return tstBuilder.build();<a name="line.919"></a>
-<span class="sourceLineNo">920</span>  }<a name="line.920"></a>
-<span class="sourceLineNo">921</span><a name="line.921"></a>
-<span class="sourceLineNo">922</span>  private HashMap&lt;String, Long&gt; fromTableServerTimestampProto(<a name="line.922"></a>
-<span class="sourceLineNo">923</span>      BackupProtos.TableServerTimestamp proto) {<a name="line.923"></a>
-<span class="sourceLineNo">924</span>    HashMap&lt;String, Long&gt; map = new HashMap&lt;String, Long&gt;();<a name="line.924"></a>
-<span class="sourceLineNo">925</span>    List&lt;BackupProtos.ServerTimestamp&gt; list = proto.getServerTimestampList();<a name="line.925"></a>
-<span class="sourceLineNo">926</span>    for (BackupProtos.ServerTimestamp st : list) {<a name="line.926"></a>
-<span class="sourceLineNo">927</span>      ServerName sn =<a name="line.927"></a>
-<span class="sourceLineNo">928</span>          org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.toServerName(st.getServerName());<a name="line.928"></a>
-<span class="sourceLineNo">929</span>      map.put(sn.getHostname() + ":" + sn.getPort(), st.getTimestamp());<a name="line.929"></a>
-<span class="sourceLineNo">930</span>    }<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    return map;<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>  /**<a name="line.934"></a>
-<span class="sourceLineNo">935</span>   * Return the current tables covered by incremental backup.<a name="line.935"></a>
-<span class="sourceLineNo">936</span>   * @param backupRoot root director

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html
index cfde5ff..e781962 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestMultiParallel.html
@@ -35,758 +35,802 @@
 <span class="sourceLineNo">027</span>import java.util.ArrayList;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>import java.util.HashSet;<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.concurrent.CountDownLatch;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.Cell;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.CellUtil;<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.HConstants;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.ServerName;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.TableName;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.Waiter;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.codec.KeyValueCodec;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.master.LoadBalancer;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.testclassification.FlakeyTests;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.JVMClusterUtil;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.junit.AfterClass;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.junit.Assert;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.junit.Before;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.junit.BeforeClass;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.junit.Test;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.junit.experimental.categories.Category;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.slf4j.Logger;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.slf4j.LoggerFactory;<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>@Category({MediumTests.class, FlakeyTests.class})<a name="line.57"></a>
-<span class="sourceLineNo">058</span>public class TestMultiParallel {<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMultiParallel.class);<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private static final byte[] VALUE = Bytes.toBytes("value");<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private static final byte[] QUALIFIER = Bytes.toBytes("qual");<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private static final String FAMILY = "family";<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final TableName TEST_TABLE = TableName.valueOf("multi_test_table");<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private static final byte[] BYTES_FAMILY = Bytes.toBytes(FAMILY);<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private static final byte[] ONE_ROW = Bytes.toBytes("xxx");<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private static final byte [][] KEYS = makeKeys();<a name="line.68"></a>
+<span class="sourceLineNo">030</span>import java.util.Optional;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.CountDownLatch;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.concurrent.ThreadPoolExecutor;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.atomic.AtomicInteger;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.Cell;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.CoprocessorEnvironment;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HConstants;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.ServerName;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.TableName;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.Waiter;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.codec.KeyValueCodec;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.coprocessor.MasterCoprocessor;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.coprocessor.MasterCoprocessorEnvironment;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.coprocessor.MasterObserver;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.coprocessor.ObserverContext;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.master.LoadBalancer;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.master.RegionPlan;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.testclassification.FlakeyTests;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.JVMClusterUtil;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.junit.AfterClass;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.junit.Assert;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.junit.Before;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.junit.BeforeClass;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.junit.Test;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.junit.experimental.categories.Category;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.slf4j.Logger;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.slf4j.LoggerFactory;<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>@Category({MediumTests.class, FlakeyTests.class})<a name="line.66"></a>
+<span class="sourceLineNo">067</span>public class TestMultiParallel {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMultiParallel.class);<a name="line.68"></a>
 <span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private static final int slaves = 5; // also used for testing HTable pool size<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static Connection CONNECTION;<a name="line.71"></a>
-<span class="sourceLineNo">072</span><a name="line.72"></a>
-<span class="sourceLineNo">073</span>  @BeforeClass public static void beforeClass() throws Exception {<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    // Uncomment the following lines if more verbosity is needed for<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    // debugging (see HBASE-12285 for details).<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    //((Log4JLogger)RpcServer.LOG).getLogger().setLevel(Level.ALL);<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    //((Log4JLogger)RpcClient.LOG).getLogger().setLevel(Level.ALL);<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    //((Log4JLogger)ScannerCallable.LOG).getLogger().setLevel(Level.ALL);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    UTIL.getConfiguration().set(HConstants.RPC_CODEC_CONF_KEY,<a name="line.79"></a>
-<span class="sourceLineNo">080</span>        KeyValueCodec.class.getCanonicalName());<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    UTIL.getConfiguration().setBoolean(LoadBalancer.TABLES_ON_MASTER, true);<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    UTIL.getConfiguration().setBoolean(LoadBalancer.SYSTEM_TABLES_ON_MASTER, true);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    UTIL.startMiniCluster(slaves);<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    Table t = UTIL.createMultiRegionTable(TEST_TABLE, Bytes.toBytes(FAMILY));<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    UTIL.waitTableEnabled(TEST_TABLE);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    t.close();<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    CONNECTION = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>  @AfterClass public static void afterClass() throws Exception {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    CONNECTION.close();<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    UTIL.shutdownMiniCluster();<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>  @Before public void before() throws Exception {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    LOG.info("before");<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    if (UTIL.ensureSomeRegionServersAvailable(slaves)) {<a name="line.97"></a>
-<span class="sourceLineNo">098</span>      // Distribute regions<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      UTIL.getMiniHBaseCluster().getMaster().balance();<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>      // Wait until completing balance<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      UTIL.waitFor(15 * 1000, UTIL.predicateNoRegionsInTransition());<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    LOG.info("before done");<a name="line.104"></a>
+<span class="sourceLineNo">070</span>  private static final HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private static final byte[] VALUE = Bytes.toBytes("value");<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private static final byte[] QUALIFIER = Bytes.toBytes("qual");<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private static final String FAMILY = "family";<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private static final TableName TEST_TABLE = TableName.valueOf("multi_test_table");<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private static final byte[] BYTES_FAMILY = Bytes.toBytes(FAMILY);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private static final byte[] ONE_ROW = Bytes.toBytes("xxx");<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private static final byte [][] KEYS = makeKeys();<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private static final int slaves = 5; // also used for testing HTable pool size<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private static Connection CONNECTION;<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  @BeforeClass public static void beforeClass() throws Exception {<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    // Uncomment the following lines if more verbosity is needed for<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    // debugging (see HBASE-12285 for details).<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    //((Log4JLogger)RpcServer.LOG).getLogger().setLevel(Level.ALL);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    //((Log4JLogger)RpcClient.LOG).getLogger().setLevel(Level.ALL);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    //((Log4JLogger)ScannerCallable.LOG).getLogger().setLevel(Level.ALL);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    UTIL.getConfiguration().set(HConstants.RPC_CODEC_CONF_KEY,<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        KeyValueCodec.class.getCanonicalName());<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    UTIL.getConfiguration().setBoolean(LoadBalancer.TABLES_ON_MASTER, true);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    UTIL.getConfiguration().setBoolean(LoadBalancer.SYSTEM_TABLES_ON_MASTER, true);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    UTIL.getConfiguration()<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        .set(CoprocessorHost.MASTER_COPROCESSOR_CONF_KEY, MyMasterObserver.class.getName());<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    UTIL.startMiniCluster(slaves);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    Table t = UTIL.createMultiRegionTable(TEST_TABLE, Bytes.toBytes(FAMILY));<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    UTIL.waitTableEnabled(TEST_TABLE);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    t.close();<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    CONNECTION = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    assertTrue(MyMasterObserver.start.get());<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>  @AfterClass public static void afterClass() throws Exception {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    CONNECTION.close();<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    UTIL.shutdownMiniCluster();<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>  private static byte[][] makeKeys() {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    byte [][] starterKeys = HBaseTestingUtility.KEYS;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    // Create a "non-uniform" test set with the following characteristics:<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    // a) Unequal number of keys per region<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>    // Don't use integer as a multiple, so that we have a number of keys that is<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    // not a multiple of the number of regions<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    int numKeys = (int) (starterKeys.length * 10.33F);<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>    List&lt;byte[]&gt; keys = new ArrayList&lt;&gt;();<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    for (int i = 0; i &lt; numKeys; i++) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      int kIdx = i % starterKeys.length;<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      byte[] k = starterKeys[kIdx];<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      byte[] cp = new byte[k.length + 1];<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      System.arraycopy(k, 0, cp, 0, k.length);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      cp[k.length] = new Integer(i % 256).byteValue();<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      keys.add(cp);<a name="line.123"></a>
+<span class="sourceLineNo">107</span>  @Before public void before() throws Exception {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    final int balanceCount = MyMasterObserver.postBalanceCount.get();<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    LOG.info("before");<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    if (UTIL.ensureSomeRegionServersAvailable(slaves)) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      // Distribute regions<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      UTIL.getMiniHBaseCluster().getMaster().balance();<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      // Some plans are created.<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      if (MyMasterObserver.postBalanceCount.get() &gt; balanceCount) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        // It is necessary to wait the move procedure to start.<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        // Otherwise, the next wait may pass immediately.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        UTIL.waitFor(3 * 1000, 100, false, () -&gt;<a name="line.117"></a>
+<span class="sourceLineNo">118</span>            UTIL.getMiniHBaseCluster().getMaster().getAssignmentManager().hasRegionsInTransition()<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        );<a name="line.119"></a>
+<span class="sourceLineNo">120</span>      }<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>      // Wait until completing balance<a name="line.122"></a>
+<span class="sourceLineNo">123</span>      UTIL.waitUntilAllRegionsAssigned(TEST_TABLE);<a name="line.123"></a>
 <span class="sourceLineNo">124</span>    }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>    // b) Same duplicate keys (showing multiple Gets/Puts to the same row, which<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    // should work)<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    // c) keys are not in sorted order (within a region), to ensure that the<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    // sorting code and index mapping doesn't break the functionality<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    for (int i = 0; i &lt; 100; i++) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      int kIdx = i % starterKeys.length;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      byte[] k = starterKeys[kIdx];<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      byte[] cp = new byte[k.length + 1];<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      System.arraycopy(k, 0, cp, 0, k.length);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      cp[k.length] = new Integer(i % 256).byteValue();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      keys.add(cp);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    }<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    return keys.toArray(new byte [][] {new byte [] {}});<a name="line.138"></a>
-<span class="sourceLineNo">139</span>  }<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  /**<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * This is for testing the active number of threads that were used while<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * doing a batch operation. It inserts one row per region via the batch<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * operation, and then checks the number of active threads.<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * For HBASE-3553<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @throws IOException<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @throws InterruptedException<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   * @throws NoSuchFieldException<a name="line.149"></a>
-<span class="sourceLineNo">150</span>   * @throws SecurityException<a name="line.150"></a>
-<span class="sourceLineNo">151</span>   */<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  @Test(timeout=300000)<a name="line.152"></a>
-<span class="sourceLineNo">153</span>  public void testActiveThreadsCount() throws Exception {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    UTIL.getConfiguration().setLong("hbase.htable.threads.coresize", slaves + 1);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    try (Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration())) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      ThreadPoolExecutor executor = HTable.getDefaultExecutor(UTIL.getConfiguration());<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      try {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        try (Table t = connection.getTable(TEST_TABLE, executor)) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>          List&lt;Put&gt; puts = constructPutRequests(); // creates a Put for every region<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          t.batch(puts, null);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          HashSet&lt;ServerName&gt; regionservers = new HashSet&lt;&gt;();<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          try (RegionLocator locator = connection.getRegionLocator(TEST_TABLE)) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>            for (Row r : puts) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>              HRegionLocation location = locator.getRegionLocation(r.getRow());<a name="line.164"></a>
-<span class="sourceLineNo">165</span>              regionservers.add(location.getServerName());<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>          assertEquals(regionservers.size(), executor.getLargestPoolSize());<a name="line.168"></a>
-<span class="sourceLineNo">169</span>        }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      } finally {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        executor.shutdownNow();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    }<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  }<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>  @Test(timeout=300000)<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  public void testBatchWithGet() throws Exception {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    LOG.info("test=testBatchWithGet");<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.179"></a>
-<span class="sourceLineNo">180</span><a name="line.180"></a>
-<span class="sourceLineNo">181</span>    // load test data<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    table.batch(puts, null);<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>    // create a list of gets and run it<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    List&lt;Row&gt; gets = new ArrayList&lt;&gt;();<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    for (byte[] k : KEYS) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      Get get = new Get(k);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      gets.add(get);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    Result[] multiRes = new Result[gets.size()];<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    table.batch(gets, multiRes);<a name="line.193"></a>
-<span class="sourceLineNo">194</span><a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // Same gets using individual call API<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    List&lt;Result&gt; singleRes = new ArrayList&lt;&gt;();<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    for (Row get : gets) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      singleRes.add(table.get((Get) get));<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    // Compare results<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    Assert.assertEquals(singleRes.size(), multiRes.length);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (int i = 0; i &lt; singleRes.size(); i++) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      Assert.assertTrue(singleRes.get(i).containsColumn(BYTES_FAMILY, QUALIFIER));<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      Cell[] singleKvs = singleRes.get(i).rawCells();<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      Cell[] multiKvs = multiRes[i].rawCells();<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      for (int j = 0; j &lt; singleKvs.length; j++) {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>        Assert.assertEquals(singleKvs[j], multiKvs[j]);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        Assert.assertEquals(0, Bytes.compareTo(CellUtil.cloneValue(singleKvs[j]),<a name="line.208"></a>
-<span class="sourceLineNo">209</span>            CellUtil.cloneValue(multiKvs[j])));<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>    table.close();<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
-<span class="sourceLineNo">214</span><a name="line.214"></a>
-<span class="sourceLineNo">215</span>  @Test<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  public void testBadFam() throws Exception {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    LOG.info("test=testBadFam");<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.218"></a>
-<span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    List&lt;Row&gt; actions = new ArrayList&lt;&gt;();<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    Put p = new Put(Bytes.toBytes("row1"));<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    p.addColumn(Bytes.toBytes("bad_family"), Bytes.toBytes("qual"), Bytes.toBytes("value"));<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    actions.add(p);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    p = new Put(Bytes.toBytes("row2"));<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    p.addColumn(BYTES_FAMILY, Bytes.toBytes("qual"), Bytes.toBytes("value"));<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    actions.add(p);<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>    // row1 and row2 should be in the same region.<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>    Object [] r = new Object[actions.size()];<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    try {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      table.batch(actions, r);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      fail();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    } catch (RetriesExhaustedWithDetailsException ex) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      LOG.debug(ex.toString(), ex);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      // good!<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      assertFalse(ex.mayHaveClusterIssues());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    assertEquals(2, r.length);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    assertTrue(r[0] instanceof Throwable);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    assertTrue(r[1] instanceof Result);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    table.close();<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>  @Test (timeout=300000)<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  public void testFlushCommitsNoAbort() throws Exception {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    LOG.info("test=testFlushCommitsNoAbort");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    doTestFlushCommits(false);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
+<span class="sourceLineNo">125</span>    LOG.info("before done");<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private static byte[][] makeKeys() {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    byte [][] starterKeys = HBaseTestingUtility.KEYS;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    // Create a "non-uniform" test set with the following characteristics:<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    // a) Unequal number of keys per region<a name="line.131"></a>
+<span class="sourceLineNo">132</span><a name="line.132"></a>
+<span class="sourceLineNo">133</span>    // Don't use integer as a multiple, so that we have a number of keys that is<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    // not a multiple of the number of regions<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    int numKeys = (int) (starterKeys.length * 10.33F);<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>    List&lt;byte[]&gt; keys = new ArrayList&lt;&gt;();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    for (int i = 0; i &lt; numKeys; i++) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      int kIdx = i % starterKeys.length;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      byte[] k = starterKeys[kIdx];<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      byte[] cp = new byte[k.length + 1];<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      System.arraycopy(k, 0, cp, 0, k.length);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      cp[k.length] = new Integer(i % 256).byteValue();<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      keys.add(cp);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>    // b) Same duplicate keys (showing multiple Gets/Puts to the same row, which<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    // should work)<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // c) keys are not in sorted order (within a region), to ensure that the<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    // sorting code and index mapping doesn't break the functionality<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    for (int i = 0; i &lt; 100; i++) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      int kIdx = i % starterKeys.length;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      byte[] k = starterKeys[kIdx];<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      byte[] cp = new byte[k.length + 1];<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      System.arraycopy(k, 0, cp, 0, k.length);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>      cp[k.length] = new Integer(i % 256).byteValue();<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      keys.add(cp);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    return keys.toArray(new byte [][] {new byte [] {}});<a name="line.159"></a>
+<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
+<span class="sourceLineNo">161</span><a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * This is for testing the active number of threads that were used while<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * doing a batch operation. It inserts one row per region via the batch<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   * operation, and then checks the number of active threads.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * For HBASE-3553<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   * @throws IOException<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   * @throws InterruptedException<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   * @throws NoSuchFieldException<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   * @throws SecurityException<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   */<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  @Test(timeout=300000)<a name="line.173"></a>
+<span class="sourceLineNo">174</span>  public void testActiveThreadsCount() throws Exception {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    UTIL.getConfiguration().setLong("hbase.htable.threads.coresize", slaves + 1);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    try (Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration())) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      ThreadPoolExecutor executor = HTable.getDefaultExecutor(UTIL.getConfiguration());<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      try {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        try (Table t = connection.getTable(TEST_TABLE, executor)) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>          List&lt;Put&gt; puts = constructPutRequests(); // creates a Put for every region<a name="line.180"></a>
+<span class="sourceLineNo">181</span>          t.batch(puts, null);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          HashSet&lt;ServerName&gt; regionservers = new HashSet&lt;&gt;();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          try (RegionLocator locator = connection.getRegionLocator(TEST_TABLE)) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>            for (Row r : puts) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>              HRegionLocation location = locator.getRegionLocation(r.getRow());<a name="line.185"></a>
+<span class="sourceLineNo">186</span>              regionservers.add(location.getServerName());<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>          assertEquals(regionservers.size(), executor.getLargestPoolSize());<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        }<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      } finally {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        executor.shutdownNow();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      }<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  }<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>  @Test(timeout=300000)<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public void testBatchWithGet() throws Exception {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    LOG.info("test=testBatchWithGet");<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    // load test data<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    table.batch(puts, null);<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>    // create a list of gets and run it<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    List&lt;Row&gt; gets = new ArrayList&lt;&gt;();<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    for (byte[] k : KEYS) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      Get get = new Get(k);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      gets.add(get);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    Result[] multiRes = new Result[gets.size()];<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    table.batch(gets, multiRes);<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>    // Same gets using individual call API<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    List&lt;Result&gt; singleRes = new ArrayList&lt;&gt;();<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    for (Row get : gets) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      singleRes.add(table.get((Get) get));<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    // Compare results<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    Assert.assertEquals(singleRes.size(), multiRes.length);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    for (int i = 0; i &lt; singleRes.size(); i++) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      Assert.assertTrue(singleRes.get(i).containsColumn(BYTES_FAMILY, QUALIFIER));<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      Cell[] singleKvs = singleRes.get(i).rawCells();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      Cell[] multiKvs = multiRes[i].rawCells();<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      for (int j = 0; j &lt; singleKvs.length; j++) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        Assert.assertEquals(singleKvs[j], multiKvs[j]);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        Assert.assertEquals(0, Bytes.compareTo(CellUtil.cloneValue(singleKvs[j]),<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            CellUtil.cloneValue(multiKvs[j])));<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>    table.close();<a name="line.233"></a>
+<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>  @Test<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  public void testBadFam() throws Exception {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    LOG.info("test=testBadFam");<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>    List&lt;Row&gt; actions = new ArrayList&lt;&gt;();<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    Put p = new Put(Bytes.toBytes("row1"));<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    p.addColumn(Bytes.toBytes("bad_family"), Bytes.toBytes("qual"), Bytes.toBytes("value"));<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    actions.add(p);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    p = new Put(Bytes.toBytes("row2"));<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    p.addColumn(BYTES_FAMILY, Bytes.toBytes("qual"), Bytes.toBytes("value"));<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    actions.add(p);<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>    // row1 and row2 should be in the same region.<a name="line.249"></a>
 <span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  /**<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * Only run one Multi test with a forced RegionServer abort. Otherwise, the<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * unit tests will take an unnecessarily long time to run.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   *<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @throws Exception<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  @Test (timeout=360000)<a name="line.257"></a>
-<span class="sourceLineNo">258</span>  public void testFlushCommitsWithAbort() throws Exception {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    LOG.info("test=testFlushCommitsWithAbort");<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    doTestFlushCommits(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>  /**<a name="line.263"></a>
-<span class="sourceLineNo">264</span>   * Set table auto flush to false and test flushing commits<a name="line.264"></a>
-<span class="sourceLineNo">265</span>   * @param doAbort true if abort one regionserver in the testing<a name="line.265"></a>
-<span class="sourceLineNo">266</span>   * @throws Exception<a name="line.266"></a>
-<span class="sourceLineNo">267</span>   */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  private void doTestFlushCommits(boolean doAbort) throws Exception {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    // Load the data<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    LOG.info("get new table");<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    LOG.info("constructPutRequests");<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    table.put(puts);<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    LOG.info("puts");<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    final int liveRScount = UTIL.getMiniHBaseCluster().getLiveRegionServerThreads()<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        .size();<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    assert liveRScount &gt; 0;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    JVMClusterUtil.RegionServerThread liveRS = UTIL.getMiniHBaseCluster()<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        .getLiveRegionServerThreads().get(0);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    if (doAbort) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      liveRS.getRegionServer().abort("Aborting for tests",<a name="line.283"></a>
-<span class="sourceLineNo">284</span>          new Exception("doTestFlushCommits"));<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      // If we wait for no regions being online after we abort the server, we<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // could ensure the master has re-assigned the regions on killed server<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      // after writing successfully. It means the server we aborted is dead<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      // and detected by matser<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      while (liveRS.getRegionServer().getNumberOfOnlineRegions() != 0) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        Thread.sleep(100);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // try putting more keys after the abort. same key/qual... just validating<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      // no exceptions thrown<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      puts = constructPutRequests();<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      table.put(puts);<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>    LOG.info("validating loaded data");<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    validateLoadedData(table);<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    // Validate server and region count<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    List&lt;JVMClusterUtil.RegionServerThread&gt; liveRSs = UTIL.getMiniHBaseCluster().getLiveRegionServerThreads();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    int count = 0;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    for (JVMClusterUtil.RegionServerThread t: liveRSs) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      count++;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      LOG.info("Count=" + count + ", Alive=" + t.getRegionServer());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    LOG.info("Count=" + count);<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    Assert.assertEquals("Server count=" + count + ", abort=" + doAbort,<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        (doAbort ? (liveRScount - 1) : liveRScount), count);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    if (doAbort) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      UTIL.getMiniHBaseCluster().waitOnRegionServer(0);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      UTIL.waitFor(15 * 1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        @Override<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        public boolean evaluate() throws Exception {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>          // Master is also a regionserver, so the count is liveRScount<a name="line.316"></a>
-<span class="sourceLineNo">317</span>          return UTIL.getMiniHBaseCluster().getMaster()<a name="line.317"></a>
-<span class="sourceLineNo">318</span>              .getClusterStatus().getServersSize() == liveRScount;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      });<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      UTIL.waitFor(15 * 1000, UTIL.predicateNoRegionsInTransition());<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>    table.close();<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    LOG.info("done");<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 (timeout=300000)<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public void testBatchWithPut() throws Exception {<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    LOG.info("test=testBatchWithPut");<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    Table table = CONNECTION.getTable(TEST_TABLE);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    // put multiple rows using a batch<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>    Object[] results = new Object[puts.size()];<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    table.batch(puts, results);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>    if (true) {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      int liveRScount = UTIL.getMiniHBaseCluster().getLiveRegionServerThreads().size();<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      assert liveRScount &gt; 0;<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      JVMClusterUtil.RegionServerThread liveRS =<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        UTIL.getMiniHBaseCluster().getLiveRegionServerThreads().get(0);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      liveRS.getRegionServer().abort("Aborting for tests", new Exception("testBatchWithPut"));<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      puts = constructPutRequests();<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      try {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        results = new Object[puts.size()];<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        table.batch(puts, results);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      } catch (RetriesExhaustedWithDetailsException ree) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        LOG.info(ree.getExhaustiveDescription());<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        table.close();<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        throw ree;<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      }<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      validateSizeAndEmpty(results, KEYS.length);<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>    validateLoadedData(table);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    table.close();<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  }<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  @Test(timeout=300000)<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  public void testBatchWithDelete() throws Exception {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    LOG.info("test=testBatchWithDelete");<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>    // Load some data<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    Object[] results = new Object[puts.size()];<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    table.batch(puts, results);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // Deletes<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    List&lt;Row&gt; deletes = new ArrayList&lt;&gt;();<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    for (int i = 0; i &lt; KEYS.length; i++) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      Delete delete = new Delete(KEYS[i]);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      delete.addFamily(BYTES_FAMILY);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      deletes.add(delete);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    results= new Object[deletes.size()];<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    table.batch(deletes, results);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>    // Get to make sure ...<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    for (byte[] k : KEYS) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      Get get = new Get(k);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      Assert.assertFalse(table.exists(get));<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    }<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    table.close();<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>  @Test(timeout=300000)<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public void testHTableDeleteWithList() throws Exception {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    LOG.info("test=testHTableDeleteWithList");<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>    // Load some data<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    Object[] results = new Object[puts.size()];<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    table.batch(puts, results);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>    // Deletes<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    ArrayList&lt;Delete&gt; deletes = new ArrayList&lt;&gt;();<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    for (int i = 0; i &lt; KEYS.length; i++) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      Delete delete = new Delete(KEYS[i]);<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      delete.addFamily(BYTES_FAMILY);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      deletes.add(delete);<a name="line.408"></a>
+<span class="sourceLineNo">251</span>    Object [] r = new Object[actions.size()];<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    try {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      table.batch(actions, r);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      fail();<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    } catch (RetriesExhaustedWithDetailsException ex) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      LOG.debug(ex.toString(), ex);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      // good!<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      assertFalse(ex.mayHaveClusterIssues());<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    assertEquals(2, r.length);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    assertTrue(r[0] instanceof Throwable);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    assertTrue(r[1] instanceof Result);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    table.close();<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>  @Test (timeout=300000)<a name="line.266"></a>
+<span class="sourceLineNo">267</span>  public void testFlushCommitsNoAbort() throws Exception {<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    LOG.info("test=testFlushCommitsNoAbort");<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    doTestFlushCommits(false);<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>   * Only run one Multi test with a forced RegionServer abort. Otherwise, the<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   * unit tests will take an unnecessarily long time to run.<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   *<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   * @throws Exception<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   */<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @Test (timeout=360000)<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  public void testFlushCommitsWithAbort() throws Exception {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    LOG.info("test=testFlushCommitsWithAbort");<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    doTestFlushCommits(true);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>  }<a name="line.282"></a>
+<span class="sourceLineNo">283</span><a name="line.283"></a>
+<span class="sourceLineNo">284</span>  /**<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * Set table auto flush to false and test flushing commits<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * @param doAbort true if abort one regionserver in the testing<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * @throws Exception<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   */<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  private void doTestFlushCommits(boolean doAbort) throws Exception {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    // Load the data<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    LOG.info("get new table");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    LOG.info("constructPutRequests");<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    table.put(puts);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    LOG.info("puts");<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    final int liveRScount = UTIL.getMiniHBaseCluster().getLiveRegionServerThreads()<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        .size();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    assert liveRScount &gt; 0;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    JVMClusterUtil.RegionServerThread liveRS = UTIL.getMiniHBaseCluster()<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        .getLiveRegionServerThreads().get(0);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    if (doAbort) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      liveRS.getRegionServer().abort("Aborting for tests",<a name="line.304"></a>
+<span class="sourceLineNo">305</span>          new Exception("doTestFlushCommits"));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      // If we wait for no regions being online after we abort the server, we<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      // could ensure the master has re-assigned the regions on killed server<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      // after writing successfully. It means the server we aborted is dead<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      // and detected by matser<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      while (liveRS.getRegionServer().getNumberOfOnlineRegions() != 0) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        Thread.sleep(100);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      // try putting more keys after the abort. same key/qual... just validating<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      // no exceptions thrown<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      puts = constructPutRequests();<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      table.put(puts);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>    LOG.info("validating loaded data");<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    validateLoadedData(table);<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>    // Validate server and region count<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    List&lt;JVMClusterUtil.RegionServerThread&gt; liveRSs = UTIL.getMiniHBaseCluster().getLiveRegionServerThreads();<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    int count = 0;<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    for (JVMClusterUtil.RegionServerThread t: liveRSs) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      count++;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      LOG.info("Count=" + count + ", Alive=" + t.getRegionServer());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    LOG.info("Count=" + count);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    Assert.assertEquals("Server count=" + count + ", abort=" + doAbort,<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        (doAbort ? (liveRScount - 1) : liveRScount), count);<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    if (doAbort) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      UTIL.getMiniHBaseCluster().waitOnRegionServer(0);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      UTIL.waitFor(15 * 1000, new Waiter.Predicate&lt;Exception&gt;() {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        @Override<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        public boolean evaluate() throws Exception {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          // Master is also a regionserver, so the count is liveRScount<a name="line.337"></a>
+<span class="sourceLineNo">338</span>          return UTIL.getMiniHBaseCluster().getMaster()<a name="line.338"></a>
+<span class="sourceLineNo">339</span>              .getClusterStatus().getServersSize() == liveRScount;<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>      UTIL.waitFor(15 * 1000, UTIL.predicateNoRegionsInTransition());<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>    table.close();<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    LOG.info("done");<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 (timeout=300000)<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public void testBatchWithPut() throws Exception {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    LOG.info("test=testBatchWithPut");<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    Table table = CONNECTION.getTable(TEST_TABLE);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    // put multiple rows using a batch<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.354"></a>
+<span class="sourceLineNo">355</span><a name="line.355"></a>
+<span class="sourceLineNo">356</span>    Object[] results = new Object[puts.size()];<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    table.batch(puts, results);<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>    if (true) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      int liveRScount = UTIL.getMiniHBaseCluster().getLiveRegionServerThreads().size();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      assert liveRScount &gt; 0;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      JVMClusterUtil.RegionServerThread liveRS =<a name="line.363"></a>
+<span class="sourceLineNo">364</span>        UTIL.getMiniHBaseCluster().getLiveRegionServerThreads().get(0);<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      liveRS.getRegionServer().abort("Aborting for tests", new Exception("testBatchWithPut"));<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      puts = constructPutRequests();<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      try {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        results = new Object[puts.size()];<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        table.batch(puts, results);<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      } catch (RetriesExhaustedWithDetailsException ree) {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        LOG.info(ree.getExhaustiveDescription());<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        table.close();<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        throw ree;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      }<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      validateSizeAndEmpty(results, KEYS.length);<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    }<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>    validateLoadedData(table);<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>  @Test(timeout=300000)<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  public void testBatchWithDelete() throws Exception {<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    LOG.info("test=testBatchWithDelete");<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>    // Load some data<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    Object[] results = new Object[puts.size()];<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    table.batch(puts, results);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.391"></a>
+<span class="sourceLineNo">392</span><a name="line.392"></a>
+<span class="sourceLineNo">393</span>    // Deletes<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    List&lt;Row&gt; deletes = new ArrayList&lt;&gt;();<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    for (int i = 0; i &lt; KEYS.length; i++) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      Delete delete = new Delete(KEYS[i]);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      delete.addFamily(BYTES_FAMILY);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      deletes.add(delete);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    results= new Object[deletes.size()];<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    table.batch(deletes, results);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>    // Get to make sure ...<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    for (byte[] k : KEYS) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>      Get get = new Get(k);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      Assert.assertFalse(table.exists(get));<a name="line.408"></a>
 <span class="sourceLineNo">409</span>    }<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    table.delete(deletes);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    Assert.assertTrue(deletes.isEmpty());<a name="line.411"></a>
+<span class="sourceLineNo">410</span>    table.close();<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>    // Get to make sure ...<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    for (byte[] k : KEYS) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      Get get = new Get(k);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      Assert.assertFalse(table.exists(get));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    table.close();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  }<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  @Test(timeout=300000)<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  public void testBatchWithManyColsInOneRowGetAndPut() throws Exception {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    LOG.info("test=testBatchWithManyColsInOneRowGetAndPut");<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.425"></a>
-<span class="sourceLineNo">426</span><a name="line.426"></a>
-<span class="sourceLineNo">427</span>    List&lt;Row&gt; puts = new ArrayList&lt;&gt;();<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    for (int i = 0; i &lt; 100; i++) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      Put put = new Put(ONE_ROW);<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      byte[] qual = Bytes.toBytes("column" + i);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      put.addColumn(BYTES_FAMILY, qual, VALUE);<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      puts.add(put);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    Object[] results = new Object[puts.size()];<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    table.batch(puts, results);<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    // validate<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    validateSizeAndEmpty(results, 100);<a name="line.438"></a>
-<span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>    // get the data back and validate that it is correct<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    List&lt;Row&gt; gets = new ArrayList&lt;&gt;();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    for (int i = 0; i &lt; 100; i++) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      Get get = new Get(ONE_ROW);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      byte[] qual = Bytes.toBytes("column" + i);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      get.addColumn(BYTES_FAMILY, qual);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      gets.add(get);<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>    Object[] multiRes = new Object[gets.size()];<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    table.batch(gets, multiRes);<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>    int idx = 0;<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    for (Object r : multiRes) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      byte[] qual = Bytes.toBytes("column" + idx);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>      validateResult(r, qual, VALUE);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      idx++;<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    }<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    table.close();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  }<a name="line.459"></a>
+<span class="sourceLineNo">413</span>  @Test(timeout=300000)<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  public void testHTableDeleteWithList() throws Exception {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    LOG.info("test=testHTableDeleteWithList");<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.416"></a>
+<span class="sourceLineNo">417</span><a name="line.417"></a>
+<span class="sourceLineNo">418</span>    // Load some data<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    List&lt;Put&gt; puts = constructPutRequests();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>    Object[] results = new Object[puts.size()];<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    table.batch(puts, results);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    validateSizeAndEmpty(results, KEYS.length);<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>    // Deletes<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    ArrayList&lt;Delete&gt; deletes = new ArrayList&lt;&gt;();<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    for (int i = 0; i &lt; KEYS.length; i++) {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      Delete delete = new Delete(KEYS[i]);<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      delete.addFamily(BYTES_FAMILY);<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      deletes.add(delete);<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    table.delete(deletes);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    Assert.assertTrue(deletes.isEmpty());<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    // Get to make sure ...<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    for (byte[] k : KEYS) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>      Get get = new Get(k);<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      get.addColumn(BYTES_FAMILY, QUALIFIER);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      Assert.assertFalse(table.exists(get));<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    table.close();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  @Test(timeout=300000)<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  public void testBatchWithManyColsInOneRowGetAndPut() throws Exception {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    LOG.info("test=testBatchWithManyColsInOneRowGetAndPut");<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>    List&lt;Row&gt; puts = new ArrayList&lt;&gt;();<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    for (int i = 0; i &lt; 100; i++) {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      Put put = new Put(ONE_ROW);<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      byte[] qual = Bytes.toBytes("column" + i);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      put.addColumn(BYTES_FAMILY, qual, VALUE);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      puts.add(put);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    }<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    Object[] results = new Object[puts.size()];<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    table.batch(puts, results);<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>    // validate<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    validateSizeAndEmpty(results, 100);<a name="line.459"></a>
 <span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  @Test(timeout=300000)<a name="line.461"></a>
-<span class="sourceLineNo">462</span>  public void testBatchWithIncrementAndAppend() throws Exception {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>    LOG.info("test=testBatchWithIncrementAndAppend");<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    final byte[] QUAL1 = Bytes.toBytes("qual1");<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    final byte[] QUAL2 = Bytes.toBytes("qual2");<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    final byte[] QUAL3 = Bytes.toBytes("qual3");<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    final byte[] QUAL4 = Bytes.toBytes("qual4");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    Table table = UTIL.getConnection().getTable(TEST_TABLE);<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    Delete d = new Delete(ONE_ROW);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    table.delete(d);<a name="line.470"></a>
-<span class="sourceLineNo">471</span>    Put put = new Put(ONE_ROW);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    put.addColumn(BYTES_FAMILY, QUAL1, Bytes.toBytes("abc"));<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    put.addColumn(BYTES_FAMILY, QUAL2, Bytes.toBytes(1L));<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    table.put(put);<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>    Increment inc = new Increment(ONE_ROW);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    inc.addColumn(BYTES_FAMILY, QUAL2, 1);<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    inc.addColumn(BYTES_FAMILY, QUAL3, 1);<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>    Append a = new Append(ONE_ROW);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    a.addColumn(BYTES_FAMILY, QUAL1, Bytes.toBytes("def"));<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    a.addColumn(BYTES_FAMILY, QUAL4, Bytes.toBytes("xyz"));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    List&lt;Row&gt; actions = new ArrayList&lt;&gt;();<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    actions.add(inc);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    actions.add(a);<a name="line.485"></a>
-<span class="sourceLineNo">486</span><a name="line.486"></a>
-<span class="sourceLineNo">487</span>    Object[] multiRes = new Object[actions.size()];<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    table.batch(actions, multiRes);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    validateResult(multiRes[1], QUAL1, Bytes.toBytes("abcdef"));<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    validateResult(multiRes[1], QUAL4, Bytes.toBytes("xyz"));<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    validateResult(multiRes[0], QUAL2, Bytes.toBytes(2L));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    validateResult(multiRes[0], QUAL3, Bytes.toBytes(1L));<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    table.close();<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>  @Test(timeout=300000)<a name="line.496"></a>
-<span class="sourceLineNo">497</span>  public void testNonceCollision() throws Exception {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    LOG.info("test=testNonceCollision");<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    final Connection connection = ConnectionFactory.createConnection(UTIL.getConfiguration());<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    Table table = connection.getTable(TEST_TABLE);<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    Put put = new Put(ONE_ROW);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    put.addColumn(BYTES_FAMILY, QUALIFIER, Bytes.toBytes(0L));<a name="line.502"></a>
-<span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>    // Replace nonce manager with the one that returns each nonce twice.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    NonceGenerator cnm = new NonceGenerator() {<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      private final PerClientRandomNonceGenerator delegate = PerClientRandomNonceGenerator.get();<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>      private long lastNonce = -1;<a name="line.509"></a>
-<span class="

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html
index 1cb0ddb..ce37fa3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html
@@ -61,7 +61,7 @@
 <span class="sourceLineNo">053</span>public abstract class CleanerChore&lt;T extends FileCleanerDelegate&gt; extends ScheduledChore<a name="line.53"></a>
 <span class="sourceLineNo">054</span>    implements ConfigurationObserver {<a name="line.54"></a>
 <span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private static final Logger LOG = LoggerFactory.getLogger(CleanerChore.class.getName());<a name="line.56"></a>
+<span class="sourceLineNo">056</span>  private static final Logger LOG = LoggerFactory.getLogger(CleanerChore.class);<a name="line.56"></a>
 <span class="sourceLineNo">057</span>  private static final int AVAIL_PROCESSORS = Runtime.getRuntime().availableProcessors();<a name="line.57"></a>
 <span class="sourceLineNo">058</span><a name="line.58"></a>
 <span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
@@ -118,7 +118,7 @@
 <span class="sourceLineNo">110</span>      chorePoolSize = chorePoolSize == 0 ?<a name="line.110"></a>
 <span class="sourceLineNo">111</span>          calculatePoolSize(DEFAULT_CHORE_POOL_SIZE) : chorePoolSize;<a name="line.111"></a>
 <span class="sourceLineNo">112</span>      this.chorePool = new ForkJoinPool(chorePoolSize);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      LOG.info("Cleaner pool size is " + chorePoolSize);<a name="line.113"></a>
+<span class="sourceLineNo">113</span>      LOG.info("Cleaner pool size is {}", chorePoolSize);<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><a name="line.116"></a>
@@ -133,7 +133,7 @@
 <span class="sourceLineNo">125</span>      // but upmost to the number of available processors.<a name="line.125"></a>
 <span class="sourceLineNo">126</span>      int size = Math.min(Integer.valueOf(poolSize), AVAIL_PROCESSORS);<a name="line.126"></a>
 <span class="sourceLineNo">127</span>      if (size == AVAIL_PROCESSORS) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        LOG.warn("Use full core processors to scan dir, size={}" + size);<a name="line.128"></a>
+<span class="sourceLineNo">128</span>        LOG.warn("Use full core processors to scan dir, size={}", size);<a name="line.128"></a>
 <span class="sourceLineNo">129</span>      }<a name="line.129"></a>
 <span class="sourceLineNo">130</span>      return size;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    } else if (poolSize.matches("0.[0-9]+|1.0")) {<a name="line.131"></a>
@@ -165,7 +165,7 @@
 <span class="sourceLineNo">157</span>      for (String className : logCleaners) {<a name="line.157"></a>
 <span class="sourceLineNo">158</span>        T logCleaner = newFileCleaner(className, conf);<a name="line.158"></a>
 <span class="sourceLineNo">159</span>        if (logCleaner != null) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          LOG.debug("Initialize cleaner=" + className);<a name="line.160"></a>
+<span class="sourceLineNo">160</span>          LOG.debug("Initialize cleaner={}", className);<a name="line.160"></a>
 <span class="sourceLineNo">161</span>          this.cleanersChain.add(logCleaner);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>        }<a name="line.162"></a>
 <span class="sourceLineNo">163</span>      }<a name="line.163"></a>
@@ -224,7 +224,7 @@
 <span class="sourceLineNo">216</span>      if (runCleaner()) {<a name="line.216"></a>
 <span class="sourceLineNo">217</span>        LOG.debug("Cleaned old files/dirs under {} successfully",  oldFileDir);<a name="line.217"></a>
 <span class="sourceLineNo">218</span>      } else {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        LOG.warn("Failed to fully clean old files/dirs under " + oldFileDir + ".");<a name="line.219"></a>
+<span class="sourceLineNo">219</span>        LOG.warn("Failed to fully clean old files/dirs under {}", oldFileDir);<a name="line.219"></a>
 <span class="sourceLineNo">220</span>      }<a name="line.220"></a>
 <span class="sourceLineNo">221</span>      // After each clean chore, checks if receives reconfigure notification while cleaning<a name="line.221"></a>
 <span class="sourceLineNo">222</span>      if (reconfig.compareAndSet(true, false)) {<a name="line.222"></a>
@@ -276,7 +276,7 @@
 <span class="sourceLineNo">268</span>          directorySpaces.put(f, space);<a name="line.268"></a>
 <span class="sourceLineNo">269</span>          return space;<a name="line.269"></a>
 <span class="sourceLineNo">270</span>        } catch (IOException e) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>          LOG.trace("Failed to get space consumed by path={}", f.getPath(), e);<a name="line.271"></a>
+<span class="sourceLineNo">271</span>          LOG.trace("Failed to get space consumed by path={}", f, e);<a name="line.271"></a>
 <span class="sourceLineNo">272</span>          return -1;<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html
index 1cb0ddb..ce37fa3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html
@@ -61,7 +61,7 @@
 <span class="sourceLineNo">053</span>public abstract class CleanerChore&lt;T extends FileCleanerDelegate&gt; extends ScheduledChore<a name="line.53"></a>
 <span class="sourceLineNo">054</span>    implements ConfigurationObserver {<a name="line.54"></a>
 <span class="sourceLineNo">055</span><a name="line.55"></a>
-<span class="sourceLineNo">056</span>  private static final Logger LOG = LoggerFactory.getLogger(CleanerChore.class.getName());<a name="line.56"></a>
+<span class="sourceLineNo">056</span>  private static final Logger LOG = LoggerFactory.getLogger(CleanerChore.class);<a name="line.56"></a>
 <span class="sourceLineNo">057</span>  private static final int AVAIL_PROCESSORS = Runtime.getRuntime().availableProcessors();<a name="line.57"></a>
 <span class="sourceLineNo">058</span><a name="line.58"></a>
 <span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
@@ -118,7 +118,7 @@
 <span class="sourceLineNo">110</span>      chorePoolSize = chorePoolSize == 0 ?<a name="line.110"></a>
 <span class="sourceLineNo">111</span>          calculatePoolSize(DEFAULT_CHORE_POOL_SIZE) : chorePoolSize;<a name="line.111"></a>
 <span class="sourceLineNo">112</span>      this.chorePool = new ForkJoinPool(chorePoolSize);<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      LOG.info("Cleaner pool size is " + chorePoolSize);<a name="line.113"></a>
+<span class="sourceLineNo">113</span>      LOG.info("Cleaner pool size is {}", chorePoolSize);<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><a name="line.116"></a>
@@ -133,7 +133,7 @@
 <span class="sourceLineNo">125</span>      // but upmost to the number of available processors.<a name="line.125"></a>
 <span class="sourceLineNo">126</span>      int size = Math.min(Integer.valueOf(poolSize), AVAIL_PROCESSORS);<a name="line.126"></a>
 <span class="sourceLineNo">127</span>      if (size == AVAIL_PROCESSORS) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        LOG.warn("Use full core processors to scan dir, size={}" + size);<a name="line.128"></a>
+<span class="sourceLineNo">128</span>        LOG.warn("Use full core processors to scan dir, size={}", size);<a name="line.128"></a>
 <span class="sourceLineNo">129</span>      }<a name="line.129"></a>
 <span class="sourceLineNo">130</span>      return size;<a name="line.130"></a>
 <span class="sourceLineNo">131</span>    } else if (poolSize.matches("0.[0-9]+|1.0")) {<a name="line.131"></a>
@@ -165,7 +165,7 @@
 <span class="sourceLineNo">157</span>      for (String className : logCleaners) {<a name="line.157"></a>
 <span class="sourceLineNo">158</span>        T logCleaner = newFileCleaner(className, conf);<a name="line.158"></a>
 <span class="sourceLineNo">159</span>        if (logCleaner != null) {<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          LOG.debug("Initialize cleaner=" + className);<a name="line.160"></a>
+<span class="sourceLineNo">160</span>          LOG.debug("Initialize cleaner={}", className);<a name="line.160"></a>
 <span class="sourceLineNo">161</span>          this.cleanersChain.add(logCleaner);<a name="line.161"></a>
 <span class="sourceLineNo">162</span>        }<a name="line.162"></a>
 <span class="sourceLineNo">163</span>      }<a name="line.163"></a>
@@ -224,7 +224,7 @@
 <span class="sourceLineNo">216</span>      if (runCleaner()) {<a name="line.216"></a>
 <span class="sourceLineNo">217</span>        LOG.debug("Cleaned old files/dirs under {} successfully",  oldFileDir);<a name="line.217"></a>
 <span class="sourceLineNo">218</span>      } else {<a name="line.218"></a>
-<span class="sourceLineNo">219</span>        LOG.warn("Failed to fully clean old files/dirs under " + oldFileDir + ".");<a name="line.219"></a>
+<span class="sourceLineNo">219</span>        LOG.warn("Failed to fully clean old files/dirs under {}", oldFileDir);<a name="line.219"></a>
 <span class="sourceLineNo">220</span>      }<a name="line.220"></a>
 <span class="sourceLineNo">221</span>      // After each clean chore, checks if receives reconfigure notification while cleaning<a name="line.221"></a>
 <span class="sourceLineNo">222</span>      if (reconfig.compareAndSet(true, false)) {<a name="line.222"></a>
@@ -276,7 +276,7 @@
 <span class="sourceLineNo">268</span>          directorySpaces.put(f, space);<a name="line.268"></a>
 <span class="sourceLineNo">269</span>          return space;<a name="line.269"></a>
 <span class="sourceLineNo">270</span>        } catch (IOException e) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>          LOG.trace("Failed to get space consumed by path={}", f.getPath(), e);<a name="line.271"></a>
+<span class="sourceLineNo">271</span>          LOG.trace("Failed to get space consumed by path={}", f, e);<a name="line.271"></a>
 <span class="sourceLineNo">272</span>          return -1;<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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 8c091d1..b1e71fb 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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -336,7 +336,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/checkstyle.html b/hbase-annotations/checkstyle.html
index 2c6dcb0..64b6646 100644
--- a/hbase-annotations/checkstyle.html
+++ b/hbase-annotations/checkstyle.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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependencies.html b/hbase-annotations/dependencies.html
index 7a6c437..1ca4343 100644
--- a/hbase-annotations/dependencies.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -272,7 +272,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-convergence.html b/hbase-annotations/dependency-convergence.html
index 1cfdf83..1814f56 100644
--- a/hbase-annotations/dependency-convergence.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-info.html b/hbase-annotations/dependency-info.html
index 5f7db5c..d76fae7 100644
--- a/hbase-annotations/dependency-info.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-management.html b/hbase-annotations/dependency-management.html
index aa4ffb0..b1b2e26 100644
--- a/hbase-annotations/dependency-management.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/index.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/index.html b/hbase-annotations/index.html
index 88b72e8..7a97466 100644
--- a/hbase-annotations/index.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/integration.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/integration.html b/hbase-annotations/integration.html
index 5d2ad6a..402bcec 100644
--- a/hbase-annotations/integration.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/issue-tracking.html b/hbase-annotations/issue-tracking.html
index e9af86d..02da1a5 100644
--- a/hbase-annotations/issue-tracking.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/license.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/license.html b/hbase-annotations/license.html
index 4d4eafe..2b2a270 100644
--- a/hbase-annotations/license.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/mail-lists.html b/hbase-annotations/mail-lists.html
index 1d20428..a720f50 100644
--- a/hbase-annotations/mail-lists.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugin-management.html b/hbase-annotations/plugin-management.html
index 7a71c44..0b22137 100644
--- a/hbase-annotations/plugin-management.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugins.html b/hbase-annotations/plugins.html
index 35cfc33..df16f72 100644
--- a/hbase-annotations/plugins.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -222,7 +222,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-info.html b/hbase-annotations/project-info.html
index 592d08a..6b08b37 100644
--- a/hbase-annotations/project-info.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-reports.html b/hbase-annotations/project-reports.html
index 25e6ac7..31b9ef2 100644
--- a/hbase-annotations/project-reports.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-summary.html b/hbase-annotations/project-summary.html
index 5c392e7..41919a6 100644
--- a/hbase-annotations/project-summary.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/source-repository.html b/hbase-annotations/source-repository.html
index 3b60094..8a73ccc 100644
--- a/hbase-annotations/source-repository.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-annotations/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/team-list.html b/hbase-annotations/team-list.html
index b24eff7..12562da 100644
--- a/hbase-annotations/team-list.html
+++ b/hbase-annotations/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependencies.html b/hbase-build-configuration/dependencies.html
index c9af991..aacbec9 100644
--- a/hbase-build-configuration/dependencies.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-convergence.html b/hbase-build-configuration/dependency-convergence.html
index 0252f59..ea5b58e 100644
--- a/hbase-build-configuration/dependency-convergence.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-info.html b/hbase-build-configuration/dependency-info.html
index 244ae1b..23f2f43 100644
--- a/hbase-build-configuration/dependency-info.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-management.html b/hbase-build-configuration/dependency-management.html
index dd27e9d..1fd8ff7 100644
--- a/hbase-build-configuration/dependency-management.html
+++ b/hbase-build-configuration/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependencies.html b/hbase-build-configuration/hbase-archetypes/dependencies.html
index e32dcdb..9a11cb5 100644
--- a/hbase-build-configuration/hbase-archetypes/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
index 7b7e9fc..bcdb47e 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-info.html b/hbase-build-configuration/hbase-archetypes/dependency-info.html
index d70f317..38cd008 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-management.html b/hbase-build-configuration/hbase-archetypes/dependency-management.html
index 00720c6..ba80c9b 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
index b2730ed..2f06007 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
index 921ae56..282f95f 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
index 8f4caa5..5f6e899 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
index 7701c83..ead5a10 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
index 4406f27..1b9de05 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
index 169060d..e0bc679 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
index 2c7e00b..7c26871 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
index c34679d..0aa537d 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
index c0f34d7..b9b57f8 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
index 3eed8d0..456d001 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
index dcc9008..642f905 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -218,7 +218,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
index 03f96ea..15514ca 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
index bc348f3..a2b8f7d 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
index 5e2d128..57ea711 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
index 118120c..ea3b539 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -553,7 +553,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
index 33776b9..5e6979c 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
index 429b3cc..95bc7d0 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -4131,7 +4131,7 @@ The following provides more details on the included cryptographic software:
 <th>Sealed</th></tr>
 <tr class="a">
 <td>154</td>
-<td>86.8 MB</td>
+<td>86.9 MB</td>
 <td>42479</td>
 <td>38387</td>
 <td>1576</td>
@@ -4168,7 +4168,7 @@ The following provides more details on the included cryptographic software:
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
index 1e20327..2ec474a 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -912,7 +912,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
index f160031..c0721b5 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
index 1b1ea3a..eb32e17 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -810,7 +810,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
index 32959c3..b138f9e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
index f7d1225..aa3ff00 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
index bfa933b..b7ef157 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
index 94e1718..28c6d3e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
index 0576424..1d5a8a6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
index 3d22882..c292d0a 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
index fdeccd2..e327fe3 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -226,7 +226,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
index 2f4ea01..49d1401 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/25f2bbc0/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
index e2f22c7..3b7e559 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20180101" />
+    <meta name="Date-Revision-yyyymmdd" content="20180102" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-01-01</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-01-02</li>
             </p>
                 </div>