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/11/30 14:52:58 UTC

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

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site a5c72fccf -> 32cb0f25b


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html
index af918c0..56420c8 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html
@@ -30,176 +30,239 @@
 <span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
 <span class="sourceLineNo">023</span>import java.util.List;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>import java.util.concurrent.ThreadLocalRandom;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.conf.Configuration;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.HConstants;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.TableName;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.Waiter.ExplainingPredicate;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.Put;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Table;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.regionserver.HRegion;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.regionserver.HStore;<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.testclassification.RegionServerTests;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.util.EnvironmentEdge;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.JVMClusterUtil;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.TimeOffsetEnvironmentEdge;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.junit.AfterClass;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.junit.BeforeClass;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.junit.ClassRule;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.junit.Rule;<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>import org.junit.rules.ExpectedException;<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>@Category({ RegionServerTests.class, MediumTests.class })<a name="line.59"></a>
-<span class="sourceLineNo">060</span>public class TestFIFOCompactionPolicy {<a name="line.60"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HConstants;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.TableName;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.Waiter.ExplainingPredicate;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptorBuilder;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.client.Put;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.client.Table;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.TableDescriptorBuilder;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.regionserver.DisabledRegionSplitPolicy;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.regionserver.HRegion;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.regionserver.HStoreFile;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.util.EnvironmentEdge;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.JVMClusterUtil;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.TimeOffsetEnvironmentEdge;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.junit.AfterClass;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.junit.Assert;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.junit.BeforeClass;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.junit.ClassRule;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.junit.Rule;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.junit.Test;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.junit.experimental.categories.Category;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.junit.rules.ExpectedException;<a name="line.60"></a>
 <span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>  @ClassRule<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.63"></a>
-<span class="sourceLineNo">064</span>      HBaseClassTestRule.forClass(TestFIFOCompactionPolicy.class);<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private final TableName tableName = TableName.valueOf(getClass().getSimpleName());<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private final byte[] family = Bytes.toBytes("f");<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private final byte[] qualifier = Bytes.toBytes("q");<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  @Rule<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  public ExpectedException error = ExpectedException.none();<a name="line.75"></a>
+<span class="sourceLineNo">062</span>@Category({ RegionServerTests.class, MediumTests.class })<a name="line.62"></a>
+<span class="sourceLineNo">063</span>public class TestFIFOCompactionPolicy {<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @ClassRule<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      HBaseClassTestRule.forClass(TestFIFOCompactionPolicy.class);<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private final TableName tableName = TableName.valueOf(getClass().getSimpleName());<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private final byte[] family = Bytes.toBytes("f");<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private final byte[] qualifier = Bytes.toBytes("q");<a name="line.75"></a>
 <span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private HStore getStoreWithName(TableName tableName) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    MiniHBaseCluster cluster = TEST_UTIL.getMiniHBaseCluster();<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    List&lt;JVMClusterUtil.RegionServerThread&gt; rsts = cluster.getRegionServerThreads();<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    for (int i = 0; i &lt; cluster.getRegionServerThreads().size(); i++) {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      HRegionServer hrs = rsts.get(i).getRegionServer();<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      for (HRegion region : hrs.getRegions(tableName)) {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>        return region.getStores().iterator().next();<a name="line.83"></a>
-<span class="sourceLineNo">084</span>      }<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    return null;<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>  private HStore prepareData() throws IOException {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    Admin admin = TEST_UTIL.getAdmin();<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    TableDescriptor desc = TableDescriptorBuilder.newBuilder(tableName)<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        .setValue(DefaultStoreEngine.DEFAULT_COMPACTION_POLICY_CLASS_KEY,<a name="line.92"></a>
-<span class="sourceLineNo">093</span>          FIFOCompactionPolicy.class.getName())<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        .setValue(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,<a name="line.94"></a>
-<span class="sourceLineNo">095</span>          DisabledRegionSplitPolicy.class.getName())<a name="line.95"></a>
-<span class="sourceLineNo">096</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(family).setTimeToLive(1).build())<a name="line.96"></a>
-<span class="sourceLineNo">097</span>        .build();<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    admin.createTable(desc);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    Table table = TEST_UTIL.getConnection().getTable(tableName);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    TimeOffsetEnvironmentEdge edge =<a name="line.100"></a>
-<span class="sourceLineNo">101</span>        (TimeOffsetEnvironmentEdge) EnvironmentEdgeManager.getDelegate();<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      for (int j = 0; j &lt; 10; j++) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        byte[] value = new byte[128 * 1024];<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        ThreadLocalRandom.current().nextBytes(value);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        table.put(new Put(Bytes.toBytes(i * 10 + j)).addColumn(family, qualifier, value));<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      }<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      admin.flush(tableName);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      edge.increment(1001);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    }<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    return getStoreWithName(tableName);<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>  @BeforeClass<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  public static void setEnvironmentEdge() throws Exception {<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    EnvironmentEdge ee = new TimeOffsetEnvironmentEdge();<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    EnvironmentEdgeManager.injectEdge(ee);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    conf.setInt(HStore.BLOCKING_STOREFILES_KEY, 10000);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    TEST_UTIL.startMiniCluster(1);<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>  @AfterClass<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public static void resetEnvironmentEdge() throws Exception {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    EnvironmentEdgeManager.reset();<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>  @Test<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public void testPurgeExpiredFiles() throws Exception {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    HStore store = prepareData();<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    assertEquals(10, store.getStorefilesCount());<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    TEST_UTIL.getAdmin().majorCompact(tableName);<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    TEST_UTIL.waitFor(30000, new ExplainingPredicate&lt;Exception&gt;() {<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>      @Override<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      public boolean evaluate() throws Exception {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        return store.getStorefilesCount() == 1;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      }<a name="line.139"></a>
-<span class="sourceLineNo">140</span><a name="line.140"></a>
-<span class="sourceLineNo">141</span>      @Override<a name="line.141"></a>
-<span class="sourceLineNo">142</span>      public String explainFailure() throws Exception {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>        return "The store file count " + store.getStorefilesCount() + " is still greater than 1";<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    });<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>  @Test<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  public void testSanityCheckTTL() throws IOException {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    error.expect(DoNotRetryIOException.class);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    error.expectMessage("Default TTL is not supported");<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    TableName tableName = TableName.valueOf(getClass().getSimpleName() + "-TTL");<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    TableDescriptor desc = TableDescriptorBuilder.newBuilder(tableName)<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        .setValue(DefaultStoreEngine.DEFAULT_COMPACTION_POLICY_CLASS_KEY,<a name="line.154"></a>
-<span class="sourceLineNo">155</span>          FIFOCompactionPolicy.class.getName())<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        .setValue(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>          DisabledRegionSplitPolicy.class.getName())<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.of(family)).build();<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    TEST_UTIL.getAdmin().createTable(desc);<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>  @Test<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  public void testSanityCheckMinVersion() throws IOException {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    error.expect(DoNotRetryIOException.class);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    error.expectMessage("MIN_VERSION &gt; 0 is not supported for FIFO compaction");<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    TableName tableName = TableName.valueOf(getClass().getSimpleName() + "-MinVersion");<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    TableDescriptor desc = TableDescriptorBuilder.newBuilder(tableName)<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        .setValue(DefaultStoreEngine.DEFAULT_COMPACTION_POLICY_CLASS_KEY,<a name="line.168"></a>
-<span class="sourceLineNo">169</span>          FIFOCompactionPolicy.class.getName())<a name="line.169"></a>
-<span class="sourceLineNo">170</span>        .setValue(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,<a name="line.170"></a>
-<span class="sourceLineNo">171</span>          DisabledRegionSplitPolicy.class.getName())<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(family).setTimeToLive(1)<a name="line.172"></a>
-<span class="sourceLineNo">173</span>            .setMinVersions(1).build())<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        .build();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    TEST_UTIL.getAdmin().createTable(desc);<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>  @Test<a name="line.178"></a>
-<span class="sourceLineNo">179</span>  public void testSanityCheckBlockingStoreFiles() throws IOException {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    error.expect(DoNotRetryIOException.class);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    error.expectMessage("Blocking file count 'hbase.hstore.blockingStoreFiles'");<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    error.expectMessage("is below recommended minimum of 1000 for column family");<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    TableName tableName = TableName.valueOf(getClass().getSimpleName() + "-BlockingStoreFiles");<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    TableDescriptor desc = TableDescriptorBuilder.newBuilder(tableName)<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        .setValue(DefaultStoreEngine.DEFAULT_COMPACTION_POLICY_CLASS_KEY,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          FIFOCompactionPolicy.class.getName())<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        .setValue(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,<a name="line.187"></a>
-<span class="sourceLineNo">188</span>          DisabledRegionSplitPolicy.class.getName())<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        .setValue(HStore.BLOCKING_STOREFILES_KEY, "10")<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(family).setTimeToLive(1).build())<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        .build();<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    TEST_UTIL.getAdmin().createTable(desc);<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">077</span>  @Rule<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  public ExpectedException error = ExpectedException.none();<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private HStore getStoreWithName(TableName tableName) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    MiniHBaseCluster cluster = TEST_UTIL.getMiniHBaseCluster();<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    List&lt;JVMClusterUtil.RegionServerThread&gt; rsts = cluster.getRegionServerThreads();<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    for (int i = 0; i &lt; cluster.getRegionServerThreads().size(); i++) {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      HRegionServer hrs = rsts.get(i).getRegionServer();<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      for (HRegion region : hrs.getRegions(tableName)) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>        return region.getStores().iterator().next();<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>    return null;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  private HStore prepareData() throws IOException {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    Admin admin = TEST_UTIL.getAdmin();<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    TableDescriptor desc = TableDescriptorBuilder.newBuilder(tableName)<a name="line.94"></a>
+<span class="sourceLineNo">095</span>        .setValue(DefaultStoreEngine.DEFAULT_COMPACTION_POLICY_CLASS_KEY,<a name="line.95"></a>
+<span class="sourceLineNo">096</span>          FIFOCompactionPolicy.class.getName())<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        .setValue(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,<a name="line.97"></a>
+<span class="sourceLineNo">098</span>          DisabledRegionSplitPolicy.class.getName())<a name="line.98"></a>
+<span class="sourceLineNo">099</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(family).setTimeToLive(1).build())<a name="line.99"></a>
+<span class="sourceLineNo">100</span>        .build();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    admin.createTable(desc);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    Table table = TEST_UTIL.getConnection().getTable(tableName);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    TimeOffsetEnvironmentEdge edge =<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        (TimeOffsetEnvironmentEdge) EnvironmentEdgeManager.getDelegate();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      for (int j = 0; j &lt; 10; j++) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>        byte[] value = new byte[128 * 1024];<a name="line.107"></a>
+<span class="sourceLineNo">108</span>        ThreadLocalRandom.current().nextBytes(value);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        table.put(new Put(Bytes.toBytes(i * 10 + j)).addColumn(family, qualifier, value));<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      }<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      admin.flush(tableName);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      edge.increment(1001);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    }<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    return getStoreWithName(tableName);<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>  @BeforeClass<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  public static void setEnvironmentEdge() throws Exception {<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    EnvironmentEdge ee = new TimeOffsetEnvironmentEdge();<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    EnvironmentEdgeManager.injectEdge(ee);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    conf.setInt(HStore.BLOCKING_STOREFILES_KEY, 10000);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    TEST_UTIL.startMiniCluster(1);<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>  @AfterClass<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  public static void resetEnvironmentEdge() throws Exception {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    EnvironmentEdgeManager.reset();<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>  @Test<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public void testPurgeExpiredFiles() throws Exception {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    HStore store = prepareData();<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    assertEquals(10, store.getStorefilesCount());<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    TEST_UTIL.getAdmin().majorCompact(tableName);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    TEST_UTIL.waitFor(30000, new ExplainingPredicate&lt;Exception&gt;() {<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 boolean evaluate() throws Exception {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        return store.getStorefilesCount() == 1;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>      @Override<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      public String explainFailure() throws Exception {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        return "The store file count " + store.getStorefilesCount() + " is still greater than 1";<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><a name="line.150"></a>
+<span class="sourceLineNo">151</span>  @Test<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public void testSanityCheckTTL() throws IOException {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    error.expect(DoNotRetryIOException.class);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    error.expectMessage("Default TTL is not supported");<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    TableName tableName = TableName.valueOf(getClass().getSimpleName() + "-TTL");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    TableDescriptor desc = TableDescriptorBuilder.newBuilder(tableName)<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        .setValue(DefaultStoreEngine.DEFAULT_COMPACTION_POLICY_CLASS_KEY,<a name="line.157"></a>
+<span class="sourceLineNo">158</span>          FIFOCompactionPolicy.class.getName())<a name="line.158"></a>
+<span class="sourceLineNo">159</span>        .setValue(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          DisabledRegionSplitPolicy.class.getName())<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.of(family)).build();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    TEST_UTIL.getAdmin().createTable(desc);<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>  @Test<a name="line.165"></a>
+<span class="sourceLineNo">166</span>  public void testSanityCheckMinVersion() throws IOException {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    error.expect(DoNotRetryIOException.class);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    error.expectMessage("MIN_VERSION &gt; 0 is not supported for FIFO compaction");<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    TableName tableName = TableName.valueOf(getClass().getSimpleName() + "-MinVersion");<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    TableDescriptor desc = TableDescriptorBuilder.newBuilder(tableName)<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        .setValue(DefaultStoreEngine.DEFAULT_COMPACTION_POLICY_CLASS_KEY,<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          FIFOCompactionPolicy.class.getName())<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        .setValue(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          DisabledRegionSplitPolicy.class.getName())<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(family).setTimeToLive(1)<a name="line.175"></a>
+<span class="sourceLineNo">176</span>            .setMinVersions(1).build())<a name="line.176"></a>
+<span class="sourceLineNo">177</span>        .build();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    TEST_UTIL.getAdmin().createTable(desc);<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>  @Test<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  public void testSanityCheckBlockingStoreFiles() throws IOException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    error.expect(DoNotRetryIOException.class);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    error.expectMessage("Blocking file count 'hbase.hstore.blockingStoreFiles'");<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    error.expectMessage("is below recommended minimum of 1000 for column family");<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    TableName tableName = TableName.valueOf(getClass().getSimpleName() + "-BlockingStoreFiles");<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    TableDescriptor desc = TableDescriptorBuilder.newBuilder(tableName)<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        .setValue(DefaultStoreEngine.DEFAULT_COMPACTION_POLICY_CLASS_KEY,<a name="line.188"></a>
+<span class="sourceLineNo">189</span>          FIFOCompactionPolicy.class.getName())<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        .setValue(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,<a name="line.190"></a>
+<span class="sourceLineNo">191</span>          DisabledRegionSplitPolicy.class.getName())<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        .setValue(HStore.BLOCKING_STOREFILES_KEY, "10")<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(family).setTimeToLive(1).build())<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        .build();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    TEST_UTIL.getAdmin().createTable(desc);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>  /**<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * Unit test for HBASE-21504<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   */<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  @Test<a name="line.201"></a>
+<span class="sourceLineNo">202</span>  public void testFIFOCompactionPolicyExpiredEmptyHFiles() throws Exception {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    TableName tableName = TableName.valueOf("testFIFOCompactionPolicyExpiredEmptyHFiles");<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    TableDescriptor desc = TableDescriptorBuilder.newBuilder(tableName)<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        .setValue(DefaultStoreEngine.DEFAULT_COMPACTION_POLICY_CLASS_KEY,<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          FIFOCompactionPolicy.class.getName())<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        .setValue(HConstants.HBASE_REGION_SPLIT_POLICY_KEY,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          DisabledRegionSplitPolicy.class.getName())<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        .setColumnFamily(ColumnFamilyDescriptorBuilder.newBuilder(family).setTimeToLive(1).build())<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        .build();<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    Table table = TEST_UTIL.createTable(desc, null);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    long ts = System.currentTimeMillis() - 10 * 1000;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    Put put =<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        new Put(Bytes.toBytes("row1")).addColumn(family, qualifier, ts, Bytes.toBytes("value0"));<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    table.put(put);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    TEST_UTIL.getAdmin().flush(tableName); // HFile-0<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    put = new Put(Bytes.toBytes("row2")).addColumn(family, qualifier, ts, Bytes.toBytes("value1"));<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    table.put(put);<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    TEST_UTIL.getAdmin().flush(tableName); // HFile-1<a name="line.219"></a>
+<span class="sourceLineNo">220</span><a name="line.220"></a>
+<span class="sourceLineNo">221</span>    HStore store = getStoreWithName(tableName);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    Assert.assertNotNull(store);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    Assert.assertEquals(2, store.getStorefilesCount());<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>    TEST_UTIL.getAdmin().majorCompact(tableName);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    for (int i = 0; i &lt; 100; i++) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      if (store.getStorefilesCount() &gt; 1) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        Thread.sleep(100);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      } else {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        break;<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>    Assert.assertEquals(1, store.getStorefilesCount());<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    HStoreFile sf = store.getStorefiles().iterator().next();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    Assert.assertNotNull(sf);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    Assert.assertEquals(0, sf.getReader().getEntries());<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>    put = new Put(Bytes.toBytes("row3")).addColumn(family, qualifier, ts, Bytes.toBytes("value1"));<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    table.put(put);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    TEST_UTIL.getAdmin().flush(tableName); // HFile-2<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    Assert.assertEquals(2, store.getStorefilesCount());<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    TEST_UTIL.getAdmin().majorCompact(tableName);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    for (int i = 0; i &lt; 100; i++) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      if (store.getStorefilesCount() &gt; 1) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        Thread.sleep(100);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      } else {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        break;<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><a name="line.251"></a>
+<span class="sourceLineNo">252</span>    Assert.assertEquals(1, store.getStorefilesCount());<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    sf = store.getStorefiles().iterator().next();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    Assert.assertNotNull(sf);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    Assert.assertEquals(0, sf.getReader().getEntries());<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
+<span class="sourceLineNo">257</span>}<a name="line.257"></a>
 
 
 


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

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


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

Branch: refs/heads/asf-site
Commit: 32cb0f25bcf6e796b4a8807b555f0f5046c8041e
Parents: a5c72fc
Author: jenkins <bu...@apache.org>
Authored: Fri Nov 30 14:52:40 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Fri Nov 30 14:52:40 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |    4 +-
 apache_hbase_reference_guide.pdf                |    4 +-
 book.html                                       |    2 +-
 bulk-loads.html                                 |    4 +-
 checkstyle-aggregate.html                       |  456 +-
 checkstyle.rss                                  |    4 +-
 coc.html                                        |    4 +-
 dependencies.html                               |    4 +-
 dependency-convergence.html                     |    4 +-
 dependency-info.html                            |    4 +-
 dependency-management.html                      |    4 +-
 devapidocs/constant-values.html                 |    4 +-
 devapidocs/index-all.html                       |    4 +
 .../hbase/backup/impl/BackupSystemTable.html    |  218 +-
 .../hadoop/hbase/backup/package-tree.html       |    2 +-
 ...ectionImplementation.MasterServiceState.html |   18 +-
 ...onImplementation.MasterServiceStubMaker.html |   10 +-
 ...ntation.ServerErrorTracker.ServerErrors.html |   10 +-
 ...ectionImplementation.ServerErrorTracker.html |   20 +-
 .../hbase/client/ConnectionImplementation.html  |  104 +-
 .../hadoop/hbase/client/package-tree.html       |   28 +-
 .../hadoop/hbase/coprocessor/package-tree.html  |    2 +-
 .../hadoop/hbase/executor/package-tree.html     |    2 +-
 .../hadoop/hbase/filter/package-tree.html       |   10 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    6 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |    2 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |    2 +-
 .../hbase/master/balancer/package-tree.html     |    2 +-
 .../hadoop/hbase/master/package-tree.html       |    4 +-
 .../hbase/master/procedure/package-tree.html    |    4 +-
 .../hadoop/hbase/monitoring/package-tree.html   |    2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   14 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    6 +-
 .../hadoop/hbase/quotas/package-tree.html       |    6 +-
 .../regionserver/class-use/HStoreFile.html      |   15 +
 .../compactions/FIFOCompactionPolicy.html       |   30 +-
 .../hadoop/hbase/regionserver/package-tree.html |   16 +-
 .../regionserver/querymatcher/package-tree.html |    2 +-
 .../hbase/regionserver/wal/package-tree.html    |    2 +-
 .../hadoop/hbase/replication/package-tree.html  |    2 +-
 .../replication/regionserver/package-tree.html  |    2 +-
 .../hadoop/hbase/rest/model/package-tree.html   |    2 +-
 .../hbase/security/access/package-tree.html     |    4 +-
 .../hadoop/hbase/security/package-tree.html     |    2 +-
 .../hadoop/hbase/thrift/package-tree.html       |    2 +-
 .../apache/hadoop/hbase/util/package-tree.html  |    8 +-
 .../org/apache/hadoop/hbase/Version.html        |    4 +-
 .../backup/impl/BackupSystemTable.WALItem.html  | 3544 +++++-----
 .../hbase/backup/impl/BackupSystemTable.html    | 3544 +++++-----
 ...ectionImplementation.MasterServiceState.html | 2774 ++++----
 ...onImplementation.MasterServiceStubMaker.html | 2774 ++++----
 ...ntation.ServerErrorTracker.ServerErrors.html | 2774 ++++----
 ...ectionImplementation.ServerErrorTracker.html | 2774 ++++----
 .../hbase/client/ConnectionImplementation.html  | 2774 ++++----
 .../compactions/FIFOCompactionPolicy.html       |   84 +-
 .../hbase/util/JVMClusterUtil.MasterThread.html |  194 +-
 .../util/JVMClusterUtil.RegionServerThread.html |  194 +-
 .../hadoop/hbase/util/JVMClusterUtil.html       |  194 +-
 downloads.html                                  |    4 +-
 export_control.html                             |    4 +-
 index.html                                      |    4 +-
 integration.html                                |    4 +-
 issue-tracking.html                             |    4 +-
 license.html                                    |    4 +-
 mail-lists.html                                 |    4 +-
 metrics.html                                    |    4 +-
 old_news.html                                   |    4 +-
 plugin-management.html                          |    4 +-
 plugins.html                                    |    4 +-
 poweredbyhbase.html                             |    4 +-
 project-info.html                               |    4 +-
 project-reports.html                            |    4 +-
 project-summary.html                            |    4 +-
 pseudo-distributed.html                         |    4 +-
 replication.html                                |    4 +-
 resources.html                                  |    4 +-
 source-repository.html                          |    4 +-
 sponsors.html                                   |    4 +-
 supportingprojects.html                         |    4 +-
 team-list.html                                  |    4 +-
 testapidocs/index-all.html                      |    6 +-
 .../hadoop/hbase/HBaseTestingUtility.html       |  559 +-
 .../hadoop/hbase/HBaseTestingUtility.html       | 6060 +++++++++---------
 testdevapidocs/constant-values.html             |   33 +
 testdevapidocs/index-all.html                   |   20 +-
 ...lity.PortAllocator.AvailablePortChecker.html |    4 +-
 .../HBaseTestingUtility.PortAllocator.html      |   20 +-
 .../HBaseTestingUtility.SeenRowTracker.html     |   20 +-
 .../hadoop/hbase/HBaseTestingUtility.html       |  871 +--
 .../hadoop/hbase/IntegrationTestingUtility.html |    2 +-
 .../hadoop/hbase/TestHBaseTestingUtility.html   |  133 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   10 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    4 +-
 .../compactions/TestFIFOCompactionPolicy.html   |   63 +-
 .../hadoop/hbase/regionserver/package-tree.html |    4 +-
 .../apache/hadoop/hbase/test/package-tree.html  |    4 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    4 +-
 ...lity.PortAllocator.AvailablePortChecker.html | 6060 +++++++++---------
 .../HBaseTestingUtility.PortAllocator.html      | 6060 +++++++++---------
 .../HBaseTestingUtility.SeenRowTracker.html     | 6060 +++++++++---------
 .../hadoop/hbase/HBaseTestingUtility.html       | 6060 +++++++++---------
 .../hadoop/hbase/TestHBaseTestingUtility.html   |  917 +--
 .../compactions/TestFIFOCompactionPolicy.html   |  399 +-
 104 files changed, 28305 insertions(+), 27847 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 4b6e7b6..3bfc09e 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -611,7 +611,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 51dd0e2..0c6ca50 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:20181129143256+00'00')
-/CreationDate (D:20181129144916+00'00')
+/ModDate (D:20181130143318+00'00')
+/CreationDate (D:20181130144908+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index f16fd65..c3b4647 100644
--- a/book.html
+++ b/book.html
@@ -41318,7 +41318,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-11-29 14:32:56 UTC
+Last updated 2018-11-30 14:33:18 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 02c7716..eebc3ab 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -316,7 +316,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 3799def..f05abca 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -294,7 +294,7 @@
 <td>3815</td>
 <td>0</td>
 <td>0</td>
-<td>14794</td></tr></table></div>
+<td>14790</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -777,7 +777,7 @@
 <td><a href="#org.apache.hadoop.hbase.TestHBaseTestingUtility.java">org/apache/hadoop/hbase/TestHBaseTestingUtility.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>8</td></tr>
+<td>4</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.TestHColumnDescriptor.java">org/apache/hadoop/hbase/TestHColumnDescriptor.java</a></td>
 <td>0</td>
@@ -9758,7 +9758,7 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#UnusedImports">UnusedImports</a>
 <ul>
 <li>processJavadoc: <tt>&quot;true&quot;</tt></li></ul></td>
-<td>99</td>
+<td>95</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>indentation</td>
@@ -9776,12 +9776,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>730</td>
+<td>731</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3436</td>
+<td>3435</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>misc</td>
@@ -11481,1177 +11481,1177 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1272</td></tr>
+<td>1294</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>1287</td></tr>
+<td>1309</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1299</td></tr>
+<td>1321</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>1300</td></tr>
+<td>1322</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1301</td></tr>
+<td>1323</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>1303</td></tr>
+<td>1325</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>1318</td></tr>
+<td>1340</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>1331</td></tr>
+<td>1353</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>1353</td></tr>
+<td>1375</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>1361</td></tr>
+<td>1383</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>1369</td></tr>
+<td>1391</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>1377</td></tr>
+<td>1399</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>1385</td></tr>
+<td>1407</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>1386</td></tr>
+<td>1408</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>1388</td></tr>
+<td>1410</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1391</td></tr>
+<td>1413</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>1397</td></tr>
+<td>1419</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>1398</td></tr>
+<td>1420</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>1400</td></tr>
+<td>1422</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1403</td></tr>
+<td>1425</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>1413</td></tr>
+<td>1435</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>1414</td></tr>
+<td>1436</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>1416</td></tr>
+<td>1438</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1419</td></tr>
+<td>1441</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>1425</td></tr>
+<td>1447</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>1426</td></tr>
+<td>1448</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>1427</td></tr>
+<td>1449</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>1429</td></tr>
+<td>1451</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>1433</td></tr>
+<td>1455</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>1443</td></tr>
+<td>1465</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>1444</td></tr>
+<td>1466</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>1446</td></tr>
+<td>1468</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1449</td></tr>
+<td>1471</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>1455</td></tr>
+<td>1477</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>1456</td></tr>
+<td>1478</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>1458</td></tr>
+<td>1480</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>1466</td></tr>
+<td>1488</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>1467</td></tr>
+<td>1489</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>1468</td></tr>
+<td>1490</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>1470</td></tr>
+<td>1492</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1494</td></tr>
+<td>1516</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>1506</td></tr>
+<td>1528</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>1507</td></tr>
+<td>1529</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>1510</td></tr>
+<td>1532</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1513</td></tr>
+<td>1535</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>1567</td></tr>
+<td>1589</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>1586</td></tr>
+<td>1608</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>1597</td></tr>
+<td>1619</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>1598</td></tr>
+<td>1620</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>1599</td></tr>
+<td>1621</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>1601</td></tr>
+<td>1623</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1604</td></tr>
+<td>1626</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>1610</td></tr>
+<td>1632</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>1611</td></tr>
+<td>1633</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>1612</td></tr>
+<td>1634</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>1614</td></tr>
+<td>1636</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>1623</td></tr>
+<td>1645</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>1624</td></tr>
+<td>1646</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>1625</td></tr>
+<td>1647</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>1626</td></tr>
+<td>1648</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>1628</td></tr>
+<td>1650</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>1646</td></tr>
+<td>1668</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>1647</td></tr>
+<td>1669</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>1648</td></tr>
+<td>1670</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>1650</td></tr>
+<td>1672</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>1659</td></tr>
+<td>1681</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>1660</td></tr>
+<td>1682</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>1661</td></tr>
+<td>1683</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>1662</td></tr>
+<td>1684</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>1664</td></tr>
+<td>1686</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
-<td>1684</td></tr>
+<td>1706</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'for' has incorrect indentation level 6, expected level should be 4.</td>
-<td>1685</td></tr>
+<td>1707</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'for' child has incorrect indentation level 8, expected level should be 6.</td>
-<td>1686</td></tr>
+<td>1708</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'for' child has incorrect indentation level 8, expected level should be 6.</td>
-<td>1689</td></tr>
+<td>1711</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'for rcurly' has incorrect indentation level 6, expected level should be 4.</td>
-<td>1690</td></tr>
+<td>1712</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' has incorrect indentation level 6, expected level should be 4.</td>
-<td>1691</td></tr>
+<td>1713</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 8, expected level should be 6.</td>
-<td>1692</td></tr>
+<td>1714</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' has incorrect indentation level 6, expected level should be 4.</td>
-<td>1693</td></tr>
+<td>1715</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
-<td>1694</td></tr>
+<td>1716</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
-<td>1697</td></tr>
+<td>1719</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
-<td>1698</td></tr>
+<td>1720</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' has incorrect indentation level 4, expected level should be 2.</td>
-<td>1699</td></tr>
+<td>1721</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>1703</td></tr>
+<td>1725</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>1704</td></tr>
+<td>1726</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>1705</td></tr>
+<td>1727</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>1707</td></tr>
+<td>1729</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1711</td></tr>
+<td>1733</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>1729</td></tr>
+<td>1751</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>1730</td></tr>
+<td>1752</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>1731</td></tr>
+<td>1753</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>1733</td></tr>
+<td>1755</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>1749</td></tr>
+<td>1771</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>1750</td></tr>
+<td>1772</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>1752</td></tr>
+<td>1774</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1766</td></tr>
+<td>1788</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1767</td></tr>
+<td>1789</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>1768</td></tr>
+<td>1790</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>1838</td></tr>
+<td>1860</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
-<td>1850</td></tr>
+<td>1872</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>1903</td></tr>
+<td>1925</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>1907</td></tr>
+<td>1929</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>1926</td></tr>
+<td>1948</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>1934</td></tr>
+<td>1956</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>1935</td></tr>
+<td>1957</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>1936</td></tr>
+<td>1958</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>1937</td></tr>
+<td>1959</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>1938</td></tr>
+<td>1960</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>1939</td></tr>
+<td>1961</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>1940</td></tr>
+<td>1962</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>1941</td></tr>
+<td>1963</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>1957</td></tr>
+<td>1979</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>1958</td></tr>
+<td>1980</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>1959</td></tr>
+<td>1981</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>1960</td></tr>
+<td>1982</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>1961</td></tr>
+<td>1983</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>1964</td></tr>
+<td>1986</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>2006</td></tr>
+<td>2028</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>2056</td></tr>
+<td>2078</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>2067</td></tr>
+<td>2089</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>2078</td></tr>
+<td>2100</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>2090</td></tr>
+<td>2112</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>2102</td></tr>
+<td>2124</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>2186</td></tr>
+<td>2208</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2189</td></tr>
+<td>2211</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>2290</td></tr>
+<td>2312</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>2434</td></tr>
+<td>2456</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>2435</td></tr>
+<td>2457</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>2436</td></tr>
+<td>2458</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>2438</td></tr>
+<td>2460</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>2452</td></tr>
+<td>2474</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>2453</td></tr>
+<td>2475</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>2454</td></tr>
+<td>2476</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>2456</td></tr>
+<td>2478</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2460</td></tr>
+<td>2482</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>2596</td></tr>
+<td>2618</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>2597</td></tr>
+<td>2619</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>2806</td></tr>
+<td>2828</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 3, expected level should be 4.</td>
-<td>2844</td></tr>
+<td>2866</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2875</td></tr>
+<td>2897</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2877</td></tr>
+<td>2899</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' has incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2878</td></tr>
+<td>2900</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' has incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2879</td></tr>
+<td>2901</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'while' child has incorrect indentation level 7, expected level should be 6.</td>
-<td>2890</td></tr>
+<td>2912</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>2931</td></tr>
+<td>2953</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>2952</td></tr>
+<td>2974</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>3012</td></tr>
+<td>3034</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>3044</td></tr>
+<td>3066</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>3071</td></tr>
+<td>3093</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>3092</td></tr>
+<td>3114</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>3093</td></tr>
+<td>3115</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>3109</td></tr>
+<td>3131</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>3110</td></tr>
+<td>3132</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>3113</td></tr>
+<td>3135</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>3164</td></tr>
+<td>3186</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>3167</td></tr>
+<td>3189</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>3184</td></tr>
+<td>3206</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>3185</td></tr>
+<td>3207</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>3186</td></tr>
+<td>3208</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>3199</td></tr>
+<td>3221</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>3200</td></tr>
+<td>3222</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>3203</td></tr>
+<td>3225</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>3208</td></tr>
+<td>3230</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>3216</td></tr>
+<td>3238</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>3217</td></tr>
+<td>3239</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>3233</td></tr>
+<td>3255</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>3234</td></tr>
+<td>3256</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>3246</td></tr>
+<td>3268</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>3267</td></tr>
+<td>3289</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>3299</td></tr>
+<td>3321</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
-<td>3303</td></tr>
+<td>3325</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>3355</td></tr>
+<td>3377</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>3356</td></tr>
+<td>3378</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>3357</td></tr>
+<td>3379</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>3358</td></tr>
+<td>3380</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>3359</td></tr>
+<td>3381</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>3399</td></tr>
+<td>3421</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>3400</td></tr>
+<td>3422</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>3426</td></tr>
+<td>3448</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>3435</td></tr>
+<td>3457</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>3448</td></tr>
+<td>3470</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>3468</td></tr>
+<td>3490</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 104).</td>
-<td>3499</td></tr>
+<td>3521</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>3558</td></tr>
+<td>3580</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>3559</td></tr>
+<td>3581</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rparen' has incorrect indentation level 48, expected level should be 2.</td>
-<td>3579</td></tr>
+<td>3601</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
-<td>3597</td></tr>
+<td>3619</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>3888</td></tr>
+<td>3910</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>3975</td></tr>
+<td>3997</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>3977</td></tr>
+<td>3999</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>4011</td></tr>
+<td>4033</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>4048</td></tr>
+<td>4070</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>4050</td></tr>
+<td>4072</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>4128</td></tr>
+<td>4150</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>4136</td></tr>
+<td>4158</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>4144</td></tr>
+<td>4166</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>4145</td></tr></table></div>
+<td>4167</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HColumnDescriptor.java">org/apache/hadoop/hbase/HColumnDescriptor.java</h3>
 <table border="0" class="table table-striped">
@@ -18048,52 +18048,28 @@
 <th>Line</th></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>imports</td>
-<td>UnusedImports</td>
-<td>Unused import - java.io.IOException.</td>
-<td>29</td></tr>
-<tr class="b">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>imports</td>
-<td>UnusedImports</td>
-<td>Unused import - java.util.HashMap.</td>
-<td>30</td></tr>
-<tr class="a">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>imports</td>
-<td>UnusedImports</td>
-<td>Unused import - java.util.Map.</td>
-<td>32</td></tr>
-<tr class="b">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>imports</td>
-<td>UnusedImports</td>
-<td>Unused import - java.util.Map.Entry.</td>
-<td>33</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>79</td></tr>
+<td>78</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>202</td></tr>
+<td>201</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>206</td></tr>
+<td>205</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>208</td></tr></table></div>
+<td>207</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.TestHColumnDescriptor.java">org/apache/hadoop/hbase/TestHColumnDescriptor.java</h3>
 <table border="0" class="table table-striped">
@@ -19075,7 +19051,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. Details: no viable alternative at input '   *' while parsing JAVADOC_TAG</td>
 <td>117</td></tr>
 <tr class="a">
@@ -23241,43 +23217,43 @@
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>1062</td></tr>
+<td>1058</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 517 lines (max allowed is 150).</td>
-<td>1249</td></tr>
+<td>1245</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 6, expected level should be 8.</td>
-<td>1293</td></tr>
+<td>1289</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 6, expected level should be 8.</td>
-<td>1300</td></tr>
+<td>1296</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 6, expected level should be 8.</td>
-<td>1538</td></tr>
+<td>1534</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>1702</td></tr>
+<td>1698</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>NoFinalizer</td>
 <td>Avoid using finalizer method.</td>
-<td>1985</td></tr></table></div>
+<td>1981</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.client.ConnectionUtils.java">org/apache/hadoop/hbase/client/ConnectionUtils.java</h3>
 <table border="0" class="table table-striped">
@@ -109098,7 +109074,7 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>305</td></tr></table></div>
+<td>315</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.util.JenkinsHash.java">org/apache/hadoop/hbase/util/JenkinsHash.java</h3>
 <table border="0" class="table table-striped">
@@ -115429,7 +115405,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index f86cf9a..d64560b 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
       <title>File: 3815,
-             Errors: 14794,
+             Errors: 14790,
              Warnings: 0,
              Infos: 0
       </title>
@@ -5907,7 +5907,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  8
+                  4
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 3313c8d..4b5a670 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -385,7 +385,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 2ba0fd5..256bb20 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -450,7 +450,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 70a76f9..7aa5cbf 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -323,7 +323,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index e9fc9d2..4646f9c 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -1009,7 +1009,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 62c0757..128219d 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3831,7 +3831,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Thu Nov 29 14:44:16 UTC 2018"</code></td>
+<td class="colLast"><code>"Fri Nov 30 14:44:18 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
@@ -3845,7 +3845,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"76c50b67ef7b146f8930329762e594c4"</code></td>
+<td class="colLast"><code>"50e37972f630f5708cca7f47f93c0b5e"</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/32cb0f25/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 06b812b..f088d33 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -63604,6 +63604,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ConnectionUtils.html#isEmptyStopRow-byte:A-">isEmptyStopRow(byte[])</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionUtils.html" title="class in org.apache.hadoop.hbase.client">ConnectionUtils</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html#isEmptyStoreFile-org.apache.hadoop.hbase.regionserver.HStoreFile-">isEmptyStoreFile(HStoreFile)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.compactions.<a href="org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">FIFOCompactionPolicy</a></dt>
+<dd>
+<div class="block">The FIFOCompactionPolicy only choose those TTL expired HFiles as the compaction candidates.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/throttle/StoreHotnessProtector.html#isEnable--">isEnable()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.throttle.<a href="org/apache/hadoop/hbase/regionserver/throttle/StoreHotnessProtector.html" title="class in org.apache.hadoop.hbase.regionserver.throttle">StoreHotnessProtector</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TableState.html#isEnabled--">isEnabled()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a></dt>


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

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

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
index bc4887a..b12b756 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
@@ -1245,3081 +1245,3103 @@
 <span class="sourceLineNo">1237</span>  }<a name="line.1237"></a>
 <span class="sourceLineNo">1238</span><a name="line.1238"></a>
 <span class="sourceLineNo">1239</span>  /**<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>   * Shutdown HBase mini cluster.  Does not shutdown zk or dfs if running.<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>   */<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>  public void shutdownMiniHBaseCluster() throws IOException {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>    if (hbaseAdmin != null) {<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>      hbaseAdmin.close();<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>      hbaseAdmin = null;<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>    }<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    if (this.connection != null) {<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>      this.connection.close();<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>      this.connection = null;<a name="line.1249"></a>
+<span class="sourceLineNo">1240</span>   * Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>   * @throws java.io.IOException in case command is unsuccessful<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>   */<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  public void shutdownMiniHBaseCluster() throws IOException {<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>    cleanup();<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>    if (this.hbaseCluster != null) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>      this.hbaseCluster.shutdown();<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      // Wait till hbase is down before going on to shutdown zk.<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>      this.hbaseCluster.waitUntilShutDown();<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>      this.hbaseCluster = null;<a name="line.1249"></a>
 <span class="sourceLineNo">1250</span>    }<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // unset the configuration for MIN and MAX RS to start<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1);<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>    if (this.hbaseCluster != null) {<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>      this.hbaseCluster.shutdown();<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>      // Wait till hbase is down before going on to shutdown zk.<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>      this.hbaseCluster.waitUntilShutDown();<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>      this.hbaseCluster = null;<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>    }<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>    if (zooKeeperWatcher != null) {<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>      zooKeeperWatcher.close();<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>      zooKeeperWatcher = null;<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>    }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>  }<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span><a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>  /**<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Returns the path to the default root dir the minicluster uses. If &lt;code&gt;create&lt;/code&gt;<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   * is true, a new root directory path is fetched irrespective of whether it has been fetched<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>   * before or not. If false, previous path is used.<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>   * Note: this does not cause the root dir to be created.<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>   * @throws IOException<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>   */<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public Path getDefaultRootDirPath(boolean create) throws IOException {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    if (!create) {<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>      return getDataTestDirOnTestFS();<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>    } else {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>      return getNewDataTestDirOnTestFS();<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>    }<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>  }<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span><a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>  /**<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>   * Same as {{@link HBaseTestingUtility#getDefaultRootDirPath(boolean create)}<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>   * Note: this does not cause the root dir to be created.<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>   * @throws IOException<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>   */<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public Path getDefaultRootDirPath() throws IOException {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return getDefaultRootDirPath(false);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  /**<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>   * Creates an hbase rootdir in user home directory.  Also creates hbase<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>   * version file.  Normally you won't make use of this method.  Root hbasedir<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>   * is created for you as part of mini cluster startup.  You'd only use this<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>   * method if you were doing manual operation.<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>   * @param create This flag decides whether to get a new<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>   * root or data directory path or not, if it has been fetched already.<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>   * Note : Directory will be made irrespective of whether path has been fetched or not.<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>   * If directory already exists, it will be overwritten<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>   * @return Fully qualified path to hbase root dir<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>   * @throws IOException<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>   */<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>  public Path createRootDir(boolean create) throws IOException {<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>    Path hbaseRootdir = getDefaultRootDirPath(create);<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>    FSUtils.setRootDir(this.conf, hbaseRootdir);<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>    fs.mkdirs(hbaseRootdir);<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    FSUtils.setVersion(fs, hbaseRootdir);<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>    return hbaseRootdir;<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>  }<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span><a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  /**<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>   * Same as {@link HBaseTestingUtility#createRootDir(boolean create)}<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>   * @return Fully qualified path to hbase root dir<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>   * @throws IOException<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>   */<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>  public Path createRootDir() throws IOException {<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>    return createRootDir(false);<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>  }<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span><a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  /**<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>   * Creates a hbase walDir in the user's home directory.<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>   * Normally you won't make use of this method. Root hbaseWALDir<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>   * is created for you as part of mini cluster startup. You'd only use this<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>   * method if you were doing manual operation.<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>   *<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>   * @return Fully qualified path to hbase root dir<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>   * @throws IOException<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>  */<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>  public Path createWALRootDir() throws IOException {<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    Path walDir = getNewDataTestDirOnTestFS();<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>    FSUtils.setWALRootDir(this.conf, walDir);<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>    fs.mkdirs(walDir);<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>    return walDir;<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  }<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span><a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  private void setHBaseFsTmpDir() throws IOException {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    String hbaseFsTmpDirInString = this.conf.get("hbase.fs.tmp.dir");<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>    if (hbaseFsTmpDirInString == null) {<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>      this.conf.set("hbase.fs.tmp.dir",  getDataTestDirOnTestFS("hbase-staging").toString());<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>      LOG.info("Setting hbase.fs.tmp.dir to " + this.conf.get("hbase.fs.tmp.dir"));<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>    } else {<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>      LOG.info("The hbase.fs.tmp.dir is set to " + hbaseFsTmpDirInString);<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>    }<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>  }<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span><a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>  /**<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>   * Flushes all caches in the mini hbase cluster<a name="line.1352"></a>
+<span class="sourceLineNo">1251</span>    if (zooKeeperWatcher != null) {<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>      zooKeeperWatcher.close();<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>      zooKeeperWatcher = null;<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>    }<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>  }<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span><a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>  /**<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>   * Abruptly Shutdown HBase mini cluster. Does not shutdown zk or dfs if running.<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>   * @throws java.io.IOException throws in case command is unsuccessful<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>   */<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>  public void killMiniHBaseCluster() throws IOException {<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    cleanup();<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>    if (this.hbaseCluster != null) {<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>      getMiniHBaseCluster().killAll();<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>      this.hbaseCluster = null;<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>    }<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>    if (zooKeeperWatcher != null) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>      zooKeeperWatcher.close();<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>      zooKeeperWatcher = null;<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    }<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span><a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>  // close hbase admin, close current connection and reset MIN MAX configs for RS.<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>  private void cleanup() throws IOException {<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>    if (hbaseAdmin != null) {<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span>      hbaseAdmin.close();<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>      hbaseAdmin = null;<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>    }<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    if (this.connection != null) {<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>      this.connection.close();<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span>      this.connection = null;<a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>    }<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>    // unset the configuration for MIN and MAX RS to start<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1);<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span>  }<a name="line.1286"></a>
+<span class="sourceLineNo">1287</span><a name="line.1287"></a>
+<span class="sourceLineNo">1288</span>  /**<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>   * Returns the path to the default root dir the minicluster uses. If &lt;code&gt;create&lt;/code&gt;<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span>   * is true, a new root directory path is fetched irrespective of whether it has been fetched<a name="line.1290"></a>
+<span class="sourceLineNo">1291</span>   * before or not. If false, previous path is used.<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>   * Note: this does not cause the root dir to be created.<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span>   * @throws IOException<a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>   */<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span>  public Path getDefaultRootDirPath(boolean create) throws IOException {<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>    if (!create) {<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span>      return getDataTestDirOnTestFS();<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>    } else {<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>      return getNewDataTestDirOnTestFS();<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span>    }<a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>  }<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span><a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>  /**<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span>   * Same as {{@link HBaseTestingUtility#getDefaultRootDirPath(boolean create)}<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span>   * Note: this does not cause the root dir to be created.<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>   * @throws IOException<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>   */<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span>  public Path getDefaultRootDirPath() throws IOException {<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>    return getDefaultRootDirPath(false);<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span>  }<a name="line.1313"></a>
+<span class="sourceLineNo">1314</span><a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>  /**<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>   * Creates an hbase rootdir in user home directory.  Also creates hbase<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span>   * version file.  Normally you won't make use of this method.  Root hbasedir<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>   * is created for you as part of mini cluster startup.  You'd only use this<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span>   * method if you were doing manual operation.<a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>   * @param create This flag decides whether to get a new<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span>   * root or data directory path or not, if it has been fetched already.<a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>   * Note : Directory will be made irrespective of whether path has been fetched or not.<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>   * If directory already exists, it will be overwritten<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>   * @return Fully qualified path to hbase root dir<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>   * @throws IOException<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>   */<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span>  public Path createRootDir(boolean create) throws IOException {<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span>    Path hbaseRootdir = getDefaultRootDirPath(create);<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span>    FSUtils.setRootDir(this.conf, hbaseRootdir);<a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>    fs.mkdirs(hbaseRootdir);<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>    FSUtils.setVersion(fs, hbaseRootdir);<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>    return hbaseRootdir;<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>  }<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span><a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>  /**<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span>   * Same as {@link HBaseTestingUtility#createRootDir(boolean create)}<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>   * @return Fully qualified path to hbase root dir<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>   * @throws IOException<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span>   */<a name="line.1341"></a>
+<span class="sourceLineNo">1342</span>  public Path createRootDir() throws IOException {<a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>    return createRootDir(false);<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>  }<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span><a name="line.1345"></a>
+<span class="sourceLineNo">1346</span>  /**<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span>   * Creates a hbase walDir in the user's home directory.<a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>   * Normally you won't make use of this method. Root hbaseWALDir<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>   * is created for you as part of mini cluster startup. You'd only use this<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span>   * method if you were doing manual operation.<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>   *<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>   * @return Fully qualified path to hbase root dir<a name="line.1352"></a>
 <span class="sourceLineNo">1353</span>   * @throws IOException<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>   */<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>  public void flush() throws IOException {<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    getMiniHBaseCluster().flushcache();<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>  }<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>  /**<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>   * Flushes all caches in the mini hbase cluster<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>   * @throws IOException<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>   */<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>  public void flush(TableName tableName) throws IOException {<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    getMiniHBaseCluster().flushcache(tableName);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>  }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>  /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>   * Compact all regions in the mini hbase cluster<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>   * @throws IOException<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>   */<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>  public void compact(boolean major) throws IOException {<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>    getMiniHBaseCluster().compact(major);<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>  }<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span><a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>  /**<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>   * Compact all of a table's reagion in the mini hbase cluster<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>   * @throws IOException<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>   */<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>  public void compact(TableName tableName, boolean major) throws IOException {<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>    getMiniHBaseCluster().compact(tableName, major);<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>  }<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span><a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>  /**<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>   * Create a table.<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>   * @param tableName<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>   * @param family<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>   * @return A Table instance for the created table.<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>   * @throws IOException<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>   */<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>  public Table createTable(TableName tableName, String family)<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>  throws IOException{<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>    return createTable(tableName, new String[]{family});<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>  }<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>  /**<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>   * Create a table.<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>   * @param tableName<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>   * @param families<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>   * @return A Table instance for the created table.<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>   * @throws IOException<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>   */<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>  public Table createTable(TableName tableName, String[] families)<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>  throws IOException {<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>    List&lt;byte[]&gt; fams = new ArrayList&lt;&gt;(families.length);<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>    for (String family : families) {<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>      fams.add(Bytes.toBytes(family));<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>    }<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>    return createTable(tableName, fams.toArray(new byte[0][]));<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>  }<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span><a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>  /**<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>   * Create a table.<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>   * @param tableName<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>   * @param family<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>   * @return A Table instance for the created table.<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>   * @throws IOException<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>   */<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>  public Table createTable(TableName tableName, byte[] family)<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>  throws IOException{<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>    return createTable(tableName, new byte[][]{family});<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>  }<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span><a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>  /**<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>   * Create a table with multiple regions.<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>   * @param tableName<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>   * @param family<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>   * @param numRegions<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>   * @return A Table instance for the created table.<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>   * @throws IOException<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>   */<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>  public Table createMultiRegionTable(TableName tableName, byte[] family, int numRegions)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>      throws IOException {<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>    if (numRegions &lt; 3) throw new IOException("Must create at least 3 regions");<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>    byte[] startKey = Bytes.toBytes("aaaaa");<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>    byte[] endKey = Bytes.toBytes("zzzzz");<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>    byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span><a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>    return createTable(tableName, new byte[][] { family }, splitKeys);<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>  }<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span><a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>  /**<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>   * Create a table.<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>   * @param tableName<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>   * @param families<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>   * @return A Table instance for the created table.<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>   * @throws IOException<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>   */<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>  public Table createTable(TableName tableName, byte[][] families)<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>  throws IOException {<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>    return createTable(tableName, families, (byte[][]) null);<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>  }<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span><a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>  /**<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>   * Create a table with multiple regions.<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>   * @param tableName<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>   * @param families<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>   * @return A Table instance for the created table.<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>   * @throws IOException<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>   */<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families) throws IOException {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>    return createTable(tableName, families, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>  }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span><a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>  /**<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>   * Create a table.<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>   * @param tableName<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>   * @param families<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>   * @param splitKeys<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>   * @return A Table instance for the created table.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>   * @throws IOException<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>   */<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys)<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>      throws IOException {<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>    return createTable(tableName, families, splitKeys, 1, new Configuration(getConfiguration()));<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>  }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>  /**<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>   * Create a table.<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>   * @param tableName the table name<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>   * @param families the families<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>   * @param splitKeys the splitkeys<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>   * @param replicaCount the region replica count<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>   * @return A Table instance for the created table.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>   * @throws IOException throws IOException<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>   */<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>      int replicaCount) throws IOException {<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>    return createTable(tableName, families, splitKeys, replicaCount,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>      new Configuration(getConfiguration()));<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>  }<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span><a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>      int numVersions, byte[] startKey, byte[] endKey, int numRegions)<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>  throws IOException{<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions);<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>    getAdmin().createTable(desc, startKey, endKey, numRegions);<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>    // should wait until they are assigned<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>    return getConnection().getTable(tableName);<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>  }<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span><a name="line.1503"></a>
-<span class="sourceLineNo">1504</span>  /**<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>   * Create a table.<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>   * @param htd<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>   * @param families<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>   * @param c Configuration to use<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>   * @return A Table instance for the created table.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>   * @throws IOException<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>   */<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>  public Table createTable(TableDescriptor htd, byte[][] families, Configuration c)<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>  throws IOException {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>    return createTable(htd, families, null, c);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>  }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span><a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>  /**<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>   * Create a table.<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>   * @param htd table descriptor<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>   * @param families array of column families<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>   * @param splitKeys array of split keys<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>   * @param c Configuration to use<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>   * @return A Table instance for the created table.<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>   */<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>      Configuration c) throws IOException {<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>    // Disable blooms (they are on by default as of 0.95) but we disable them here because<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    // tests have hard coded counts of what to expect in block cache, etc., and blooms being<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>    // on is interfering.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>    return createTable(htd, families, splitKeys, BloomType.NONE, HConstants.DEFAULT_BLOCKSIZE, c);<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>  }<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span><a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>  /**<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>   * Create a table.<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>   * @param htd table descriptor<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>   * @param families array of column families<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>   * @param splitKeys array of split keys<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>   * @param type Bloom type<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>   * @param blockSize block size<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>   * @param c Configuration to use<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>   * @return A Table instance for the created table.<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>   */<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span><a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>      BloomType type, int blockSize, Configuration c) throws IOException {<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>    for (byte[] family : families) {<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>      builder.setColumnFamily(<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>          ColumnFamilyDescriptorBuilder.newBuilder(family).setBloomFilterType(type)<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>              .setBlocksize(blockSize).build());<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>    }<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>    TableDescriptor td = builder.build();<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>    getAdmin().createTable(td, splitKeys);<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>    // we should wait until they are assigned<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>    waitUntilAllRegionsAssigned(td.getTableName());<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>    return getConnection().getTable(td.getTableName());<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>  /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>   * Create a table.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>   * @param htd table descriptor<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>   * @param splitRows array of split keys<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>   * @return A Table instance for the created table.<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>   * @throws IOException<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>   */<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>  public Table createTable(TableDescriptor htd, byte[][] splitRows)<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>      throws IOException {<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>    getAdmin().createTable(htd, splitRows);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>    // we should wait until they are assigned<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>    waitUntilAllRegionsAssigned(htd.getTableName());<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    return getConnection().getTable(htd.getTableName());<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>  }<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span><a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>  /**<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>   * Create a table.<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>   * @param tableName the table name<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>   * @param families the families<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>   * @param splitKeys the split keys<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>   * @param replicaCount the replica count<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>   * @param c Configuration to use<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>   * @return A Table instance for the created table.<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>   * @throws IOException<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>   */<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>      int replicaCount, final Configuration c) throws IOException {<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>    htd.setRegionReplication(replicaCount);<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>    return createTable(htd, families, splitKeys, c);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>  }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span><a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>  /**<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>   * Create a table.<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>   * @param tableName<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>   * @param family<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>   * @param numVersions<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>   * @return A Table instance for the created table.<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>   * @throws IOException<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>   */<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>  public Table createTable(TableName tableName, byte[] family, int numVersions)<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>  throws IOException {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>    return createTable(tableName, new byte[][]{family}, numVersions);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>  }<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span><a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>  /**<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>   * Create a table.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>   * @param tableName<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>   * @param families<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>   * @param numVersions<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>   * @return A Table instance for the created table.<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>   * @throws IOException<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>   */<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>      throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>    return createTable(tableName, families, numVersions, (byte[][]) null);<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>  }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span><a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>  /**<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>   * Create a table.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>   * @param tableName<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>   * @param families<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>   * @param numVersions<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>   * @param splitKeys<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>   * @return A Table instance for the created table.<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>   * @throws IOException<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>   */<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions,<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      byte[][] splitKeys) throws IOException {<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>    for (byte[] family : families) {<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>      HColumnDescriptor hcd = new HColumnDescriptor(family).setMaxVersions(numVersions);<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>      desc.addFamily(hcd);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>    }<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>    getAdmin().createTable(desc, splitKeys);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>    // assigned<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>    return getConnection().getTable(tableName);<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>  }<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span><a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>  /**<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>   * Create a table with multiple regions.<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>   * @param tableName<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>   * @param families<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>   * @param numVersions<a name="line.1648"></a>
+<span class="sourceLineNo">1354</span>  */<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>  public Path createWALRootDir() throws IOException {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>    Path walDir = getNewDataTestDirOnTestFS();<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    FSUtils.setWALRootDir(this.conf, walDir);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    fs.mkdirs(walDir);<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span>    return walDir;<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span>  }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>  private void setHBaseFsTmpDir() throws IOException {<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>    String hbaseFsTmpDirInString = this.conf.get("hbase.fs.tmp.dir");<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    if (hbaseFsTmpDirInString == null) {<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>      this.conf.set("hbase.fs.tmp.dir",  getDataTestDirOnTestFS("hbase-staging").toString());<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      LOG.info("Setting hbase.fs.tmp.dir to " + this.conf.get("hbase.fs.tmp.dir"));<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>    } else {<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      LOG.info("The hbase.fs.tmp.dir is set to " + hbaseFsTmpDirInString);<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>    }<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>  }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span><a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>  /**<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>   * Flushes all caches in the mini hbase cluster<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>   * @throws IOException<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>   */<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>  public void flush() throws IOException {<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>    getMiniHBaseCluster().flushcache();<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>  }<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span><a name="line.1380"></a>
+<span class="sourceLineNo">1381</span>  /**<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>   * Flushes all caches in the mini hbase cluster<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>   * @throws IOException<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>   */<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>  public void flush(TableName tableName) throws IOException {<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    getMiniHBaseCluster().flushcache(tableName);<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>  }<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span><a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>  /**<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>   * Compact all regions in the mini hbase cluster<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>   * @throws IOException<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>   */<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>  public void compact(boolean major) throws IOException {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>    getMiniHBaseCluster().compact(major);<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span>  }<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span><a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>  /**<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>   * Compact all of a table's reagion in the mini hbase cluster<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>   * @throws IOException<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>   */<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>  public void compact(TableName tableName, boolean major) throws IOException {<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>    getMiniHBaseCluster().compact(tableName, major);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>  }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>  /**<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>   * Create a table.<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>   * @param tableName<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>   * @param family<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>   * @return A Table instance for the created table.<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>   * @throws IOException<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>   */<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>  public Table createTable(TableName tableName, String family)<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>  throws IOException{<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>    return createTable(tableName, new String[]{family});<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>  }<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span><a name="line.1416"></a>
+<span class="sourceLineNo">1417</span>  /**<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>   * Create a table.<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>   * @param tableName<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>   * @param families<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>   * @return A Table instance for the created table.<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>   * @throws IOException<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>   */<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>  public Table createTable(TableName tableName, String[] families)<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>  throws IOException {<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>    List&lt;byte[]&gt; fams = new ArrayList&lt;&gt;(families.length);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>    for (String family : families) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>      fams.add(Bytes.toBytes(family));<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>    }<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>    return createTable(tableName, fams.toArray(new byte[0][]));<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>  }<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span><a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>  /**<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>   * Create a table.<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>   * @param tableName<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>   * @param family<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>   * @return A Table instance for the created table.<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>   * @throws IOException<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>   */<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>  public Table createTable(TableName tableName, byte[] family)<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>  throws IOException{<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>    return createTable(tableName, new byte[][]{family});<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>  }<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span><a name="line.1444"></a>
+<span class="sourceLineNo">1445</span>  /**<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>   * Create a table with multiple regions.<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>   * @param tableName<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>   * @param family<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>   * @param numRegions<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span>   * @return A Table instance for the created table.<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>   * @throws IOException<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>   */<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>  public Table createMultiRegionTable(TableName tableName, byte[] family, int numRegions)<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>      throws IOException {<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>    if (numRegions &lt; 3) throw new IOException("Must create at least 3 regions");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>    byte[] startKey = Bytes.toBytes("aaaaa");<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>    byte[] endKey = Bytes.toBytes("zzzzz");<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>    byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span><a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>    return createTable(tableName, new byte[][] { family }, splitKeys);<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>  }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>  /**<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>   * Create a table.<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>   * @param tableName<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>   * @param families<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>   * @return A Table instance for the created table.<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>   * @throws IOException<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>   */<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>  public Table createTable(TableName tableName, byte[][] families)<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>  throws IOException {<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>    return createTable(tableName, families, (byte[][]) null);<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>  }<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span><a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>  /**<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>   * Create a table with multiple regions.<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span>   * @param tableName<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>   * @param families<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>   * @return A Table instance for the created table.<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>   * @throws IOException<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>   */<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families) throws IOException {<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>    return createTable(tableName, families, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>  }<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span><a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>  /**<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>   * Create a table.<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>   * @param tableName<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>   * @param families<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>   * @param splitKeys<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>   * @return A Table instance for the created table.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>   * @throws IOException<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>   */<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys)<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>      throws IOException {<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    return createTable(tableName, families, splitKeys, 1, new Configuration(getConfiguration()));<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>  }<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span><a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>  /**<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>   * Create a table.<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>   * @param tableName the table name<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>   * @param families the families<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>   * @param splitKeys the splitkeys<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>   * @param replicaCount the region replica count<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span>   * @return A Table instance for the created table.<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>   * @throws IOException throws IOException<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>   */<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>      int replicaCount) throws IOException {<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>    return createTable(tableName, families, splitKeys, replicaCount,<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>      new Configuration(getConfiguration()));<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>  }<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span><a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span>      int numVersions, byte[] startKey, byte[] endKey, int numRegions)<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>  throws IOException{<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>    HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions);<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span><a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>    getAdmin().createTable(desc, startKey, endKey, numRegions);<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>    // should wait until they are assigned<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>    return getConnection().getTable(tableName);<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>  }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span><a name="line.1525"></a>
+<span class="sourceLineNo">1526</span>  /**<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>   * Create a table.<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>   * @param htd<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>   * @param families<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>   * @param c Configuration to use<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>   * @return A Table instance for the created table.<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>   * @throws IOException<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>   */<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>  public Table createTable(TableDescriptor htd, byte[][] families, Configuration c)<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>  throws IOException {<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>    return createTable(htd, families, null, c);<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>  }<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span><a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>  /**<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>   * Create a table.<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>   * @param htd table descriptor<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>   * @param families array of column families<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>   * @param splitKeys array of split keys<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>   * @param c Configuration to use<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>   * @return A Table instance for the created table.<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>   */<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>      Configuration c) throws IOException {<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>    // Disable blooms (they are on by default as of 0.95) but we disable them here because<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span>    // tests have hard coded counts of what to expect in block cache, etc., and blooms being<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>    // on is interfering.<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>    return createTable(htd, families, splitKeys, BloomType.NONE, HConstants.DEFAULT_BLOCKSIZE, c);<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>  }<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span><a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>  /**<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>   * Create a table.<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>   * @param htd table descriptor<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>   * @param families array of column families<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>   * @param splitKeys array of split keys<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>   * @param type Bloom type<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>   * @param blockSize block size<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>   * @param c Configuration to use<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>   * @return A Table instance for the created table.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>   */<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span><a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>      BloomType type, int blockSize, Configuration c) throws IOException {<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>    for (byte[] family : families) {<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>      builder.setColumnFamily(<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>          ColumnFamilyDescriptorBuilder.newBuilder(family).setBloomFilterType(type)<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>              .setBlocksize(blockSize).build());<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>    }<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    TableDescriptor td = builder.build();<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>    getAdmin().createTable(td, splitKeys);<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    // we should wait until they are assigned<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    waitUntilAllRegionsAssigned(td.getTableName());<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>    return getConnection().getTable(td.getTableName());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>  }<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span><a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>  /**<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>   * Create a table.<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>   * @param htd table descriptor<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>   * @param splitRows array of split keys<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>   * @return A Table instance for the created table.<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>   * @throws IOException<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>   */<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>  public Table createTable(TableDescriptor htd, byte[][] splitRows)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>      throws IOException {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>    getAdmin().createTable(htd, splitRows);<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>    // we should wait until they are assigned<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>    waitUntilAllRegionsAssigned(htd.getTableName());<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>    return getConnection().getTable(htd.getTableName());<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>  }<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span><a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>  /**<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>   * Create a table.<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>   * @param tableName the table name<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>   * @param families the families<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>   * @param splitKeys the split keys<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>   * @param replicaCount the replica count<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span>   * @param c Configuration to use<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>   * @return A Table instance for the created table.<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>   * @throws IOException<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>   */<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>      int replicaCount, final Configuration c) throws IOException {<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>    htd.setRegionReplication(replicaCount);<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>    return createTable(htd, families, splitKeys, c);<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span>  }<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span><a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>  /**<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>   * Create a table.<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>   * @param tableName<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>   * @param family<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>   * @param numVersions<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>   * @return A Table instance for the created table.<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>   * @throws IOException<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>   */<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>  public Table createTable(TableName tableName, byte[] family, int numVersions)<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>  throws IOException {<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>    return createTable(tableName, new byte[][]{family}, numVersions);<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>  }<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span><a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>  /**<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>   * Create a table.<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span>   * @param tableName<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>   * @param families<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>   * @param numVersions<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>   * @return A Table instance for the created table.<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>   * @throws IOException<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>   */<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>      throws IOException {<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>    return createTable(tableName, families, numVersions, (byte[][]) null);<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span>  }<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span><a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>  /**<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>   * Create a table.<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span>   * @param tableName<a name="line.1645"></a>
+<span class="sourceLineNo">1646</span>   * @param families<a name="line.1646"></a>
+<span class="sourceLineNo">1647</span>   * @param numVersions<a name="line.1647"></a>
+<span class="sourceLineNo">1648</span>   * @param splitKeys<a name="line.1648"></a>
 <span class="sourceLineNo">1649</span>   * @return A Table instance for the created table.<a name="line.1649"></a>
 <span class="sourceLineNo">1650</span>   * @throws IOException<a name="line.1650"></a>
 <span class="sourceLineNo">1651</span>   */<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>      throws IOException {<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>    return createTable(tableName, families, numVersions, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>  }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>  /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>   * Create a table.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>   * @param tableName<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>   * @param families<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>   * @param numVersions<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>   * @param blockSize<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>   * @return A Table instance for the created table.<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>   * @throws IOException<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>   */<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>    int numVersions, int blockSize) throws IOException {<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>    for (byte[] family : families) {<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>      HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          .setMaxVersions(numVersions)<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          .setBlocksize(blockSize);<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>      desc.addFamily(hcd);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>    }<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>    getAdmin().createTable(desc);<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>    // assigned<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>    return getConnection().getTable(tableName);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>  }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span><a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>      int numVersions, int blockSize, String cpName) throws IOException {<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>      HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>      for (byte[] family : families) {<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>            .setMaxVersions(numVersions)<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>            .setBlocksize(blockSize);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        desc.addFamily(hcd);<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span>      if(cpName != null) {<a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>        desc.addCoprocessor(cpName);<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>      }<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      getAdmin().createTable(desc);<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>      // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      // assigned<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>      waitUntilAllRegionsAssigned(tableName);<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      return getConnection().getTable(tableName);<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span>    }<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span><a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>  /**<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>   * Create a table.<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>   * @param tableName<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>   * @param families<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>   * @param numVersions<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span>   * @return A Table instance for the created table.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>   * @throws IOException<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span>   */<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      int[] numVersions)<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>  throws IOException {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>    int i = 0;<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>    for (byte[] family : families) {<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>          .setMaxVersions(numVersions[i]);<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      desc.addFamily(hcd);<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      i++;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>    getAdmin().createTable(desc);<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>    // assigned<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span>    return getConnection().getTable(tableName);<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>  }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span><a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>  /**<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>   * Create a table.<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>   * @param tableName<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>   * @param family<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>   * @param splitRows<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>   * @return A Table instance for the created table.<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>   * @throws IOException<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>   */<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>  public Table createTable(TableName tableName, byte[] family, byte[][] splitRows)<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      throws IOException {<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    desc.addFamily(hcd);<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>    getAdmin().createTable(desc, splitRows);<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>    // assigned<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>    return getConnection().getTable(tableName);<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>  }<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span><a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>  /**<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>   * Create a t

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
index bc4887a..b12b756 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -1245,3081 +1245,3103 @@
 <span class="sourceLineNo">1237</span>  }<a name="line.1237"></a>
 <span class="sourceLineNo">1238</span><a name="line.1238"></a>
 <span class="sourceLineNo">1239</span>  /**<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>   * Shutdown HBase mini cluster.  Does not shutdown zk or dfs if running.<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>   */<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>  public void shutdownMiniHBaseCluster() throws IOException {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>    if (hbaseAdmin != null) {<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>      hbaseAdmin.close();<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>      hbaseAdmin = null;<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>    }<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    if (this.connection != null) {<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>      this.connection.close();<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>      this.connection = null;<a name="line.1249"></a>
+<span class="sourceLineNo">1240</span>   * Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>   * @throws java.io.IOException in case command is unsuccessful<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>   */<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  public void shutdownMiniHBaseCluster() throws IOException {<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>    cleanup();<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>    if (this.hbaseCluster != null) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>      this.hbaseCluster.shutdown();<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      // Wait till hbase is down before going on to shutdown zk.<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>      this.hbaseCluster.waitUntilShutDown();<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>      this.hbaseCluster = null;<a name="line.1249"></a>
 <span class="sourceLineNo">1250</span>    }<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // unset the configuration for MIN and MAX RS to start<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1);<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>    if (this.hbaseCluster != null) {<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>      this.hbaseCluster.shutdown();<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>      // Wait till hbase is down before going on to shutdown zk.<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>      this.hbaseCluster.waitUntilShutDown();<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>      this.hbaseCluster = null;<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>    }<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>    if (zooKeeperWatcher != null) {<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>      zooKeeperWatcher.close();<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>      zooKeeperWatcher = null;<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>    }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>  }<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span><a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>  /**<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Returns the path to the default root dir the minicluster uses. If &lt;code&gt;create&lt;/code&gt;<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   * is true, a new root directory path is fetched irrespective of whether it has been fetched<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>   * before or not. If false, previous path is used.<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>   * Note: this does not cause the root dir to be created.<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>   * @throws IOException<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>   */<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public Path getDefaultRootDirPath(boolean create) throws IOException {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    if (!create) {<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>      return getDataTestDirOnTestFS();<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>    } else {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>      return getNewDataTestDirOnTestFS();<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>    }<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>  }<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span><a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>  /**<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>   * Same as {{@link HBaseTestingUtility#getDefaultRootDirPath(boolean create)}<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>   * Note: this does not cause the root dir to be created.<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>   * @throws IOException<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>   */<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public Path getDefaultRootDirPath() throws IOException {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return getDefaultRootDirPath(false);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  /**<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>   * Creates an hbase rootdir in user home directory.  Also creates hbase<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>   * version file.  Normally you won't make use of this method.  Root hbasedir<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>   * is created for you as part of mini cluster startup.  You'd only use this<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>   * method if you were doing manual operation.<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>   * @param create This flag decides whether to get a new<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>   * root or data directory path or not, if it has been fetched already.<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>   * Note : Directory will be made irrespective of whether path has been fetched or not.<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>   * If directory already exists, it will be overwritten<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>   * @return Fully qualified path to hbase root dir<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>   * @throws IOException<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>   */<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>  public Path createRootDir(boolean create) throws IOException {<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>    Path hbaseRootdir = getDefaultRootDirPath(create);<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>    FSUtils.setRootDir(this.conf, hbaseRootdir);<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>    fs.mkdirs(hbaseRootdir);<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    FSUtils.setVersion(fs, hbaseRootdir);<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>    return hbaseRootdir;<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>  }<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span><a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  /**<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>   * Same as {@link HBaseTestingUtility#createRootDir(boolean create)}<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>   * @return Fully qualified path to hbase root dir<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>   * @throws IOException<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>   */<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>  public Path createRootDir() throws IOException {<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>    return createRootDir(false);<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>  }<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span><a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  /**<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>   * Creates a hbase walDir in the user's home directory.<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>   * Normally you won't make use of this method. Root hbaseWALDir<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>   * is created for you as part of mini cluster startup. You'd only use this<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>   * method if you were doing manual operation.<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>   *<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>   * @return Fully qualified path to hbase root dir<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>   * @throws IOException<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>  */<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>  public Path createWALRootDir() throws IOException {<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    Path walDir = getNewDataTestDirOnTestFS();<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>    FSUtils.setWALRootDir(this.conf, walDir);<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>    fs.mkdirs(walDir);<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>    return walDir;<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  }<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span><a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  private void setHBaseFsTmpDir() throws IOException {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    String hbaseFsTmpDirInString = this.conf.get("hbase.fs.tmp.dir");<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>    if (hbaseFsTmpDirInString == null) {<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>      this.conf.set("hbase.fs.tmp.dir",  getDataTestDirOnTestFS("hbase-staging").toString());<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>      LOG.info("Setting hbase.fs.tmp.dir to " + this.conf.get("hbase.fs.tmp.dir"));<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>    } else {<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>      LOG.info("The hbase.fs.tmp.dir is set to " + hbaseFsTmpDirInString);<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>    }<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>  }<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span><a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>  /**<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>   * Flushes all caches in the mini hbase cluster<a name="line.1352"></a>
+<span class="sourceLineNo">1251</span>    if (zooKeeperWatcher != null) {<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>      zooKeeperWatcher.close();<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>      zooKeeperWatcher = null;<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>    }<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>  }<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span><a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>  /**<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>   * Abruptly Shutdown HBase mini cluster. Does not shutdown zk or dfs if running.<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>   * @throws java.io.IOException throws in case command is unsuccessful<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>   */<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>  public void killMiniHBaseCluster() throws IOException {<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    cleanup();<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>    if (this.hbaseCluster != null) {<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>      getMiniHBaseCluster().killAll();<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>      this.hbaseCluster = null;<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>    }<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>    if (zooKeeperWatcher != null) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>      zooKeeperWatcher.close();<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>      zooKeeperWatcher = null;<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    }<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span><a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>  // close hbase admin, close current connection and reset MIN MAX configs for RS.<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>  private void cleanup() throws IOException {<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>    if (hbaseAdmin != null) {<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span>      hbaseAdmin.close();<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>      hbaseAdmin = null;<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>    }<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    if (this.connection != null) {<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>      this.connection.close();<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span>      this.connection = null;<a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>    }<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>    // unset the configuration for MIN and MAX RS to start<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1);<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span>  }<a name="line.1286"></a>
+<span class="sourceLineNo">1287</span><a name="line.1287"></a>
+<span class="sourceLineNo">1288</span>  /**<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>   * Returns the path to the default root dir the minicluster uses. If &lt;code&gt;create&lt;/code&gt;<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span>   * is true, a new root directory path is fetched irrespective of whether it has been fetched<a name="line.1290"></a>
+<span class="sourceLineNo">1291</span>   * before or not. If false, previous path is used.<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>   * Note: this does not cause the root dir to be created.<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span>   * @throws IOException<a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>   */<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span>  public Path getDefaultRootDirPath(boolean create) throws IOException {<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>    if (!create) {<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span>      return getDataTestDirOnTestFS();<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>    } else {<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>      return getNewDataTestDirOnTestFS();<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span>    }<a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>  }<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span><a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>  /**<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span>   * Same as {{@link HBaseTestingUtility#getDefaultRootDirPath(boolean create)}<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span>   * Note: this does not cause the root dir to be created.<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>   * @throws IOException<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>   */<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span>  public Path getDefaultRootDirPath() throws IOException {<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>    return getDefaultRootDirPath(false);<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span>  }<a name="line.1313"></a>
+<span class="sourceLineNo">1314</span><a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>  /**<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>   * Creates an hbase rootdir in user home directory.  Also creates hbase<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span>   * version file.  Normally you won't make use of this method.  Root hbasedir<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>   * is created for you as part of mini cluster startup.  You'd only use this<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span>   * method if you were doing manual operation.<a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>   * @param create This flag decides whether to get a new<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span>   * root or data directory path or not, if it has been fetched already.<a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>   * Note : Directory will be made irrespective of whether path has been fetched or not.<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>   * If directory already exists, it will be overwritten<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>   * @return Fully qualified path to hbase root dir<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>   * @throws IOException<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>   */<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span>  public Path createRootDir(boolean create) throws IOException {<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span>    Path hbaseRootdir = getDefaultRootDirPath(create);<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span>    FSUtils.setRootDir(this.conf, hbaseRootdir);<a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>    fs.mkdirs(hbaseRootdir);<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>    FSUtils.setVersion(fs, hbaseRootdir);<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>    return hbaseRootdir;<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>  }<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span><a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>  /**<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span>   * Same as {@link HBaseTestingUtility#createRootDir(boolean create)}<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>   * @return Fully qualified path to hbase root dir<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>   * @throws IOException<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span>   */<a name="line.1341"></a>
+<span class="sourceLineNo">1342</span>  public Path createRootDir() throws IOException {<a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>    return createRootDir(false);<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>  }<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span><a name="line.1345"></a>
+<span class="sourceLineNo">1346</span>  /**<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span>   * Creates a hbase walDir in the user's home directory.<a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>   * Normally you won't make use of this method. Root hbaseWALDir<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>   * is created for you as part of mini cluster startup. You'd only use this<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span>   * method if you were doing manual operation.<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>   *<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>   * @return Fully qualified path to hbase root dir<a name="line.1352"></a>
 <span class="sourceLineNo">1353</span>   * @throws IOException<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>   */<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>  public void flush() throws IOException {<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    getMiniHBaseCluster().flushcache();<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>  }<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>  /**<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>   * Flushes all caches in the mini hbase cluster<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>   * @throws IOException<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>   */<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>  public void flush(TableName tableName) throws IOException {<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    getMiniHBaseCluster().flushcache(tableName);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>  }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>  /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>   * Compact all regions in the mini hbase cluster<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>   * @throws IOException<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>   */<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>  public void compact(boolean major) throws IOException {<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>    getMiniHBaseCluster().compact(major);<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>  }<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span><a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>  /**<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>   * Compact all of a table's reagion in the mini hbase cluster<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>   * @throws IOException<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>   */<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>  public void compact(TableName tableName, boolean major) throws IOException {<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>    getMiniHBaseCluster().compact(tableName, major);<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>  }<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span><a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>  /**<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>   * Create a table.<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>   * @param tableName<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>   * @param family<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>   * @return A Table instance for the created table.<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>   * @throws IOException<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>   */<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>  public Table createTable(TableName tableName, String family)<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>  throws IOException{<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>    return createTable(tableName, new String[]{family});<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>  }<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>  /**<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>   * Create a table.<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>   * @param tableName<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>   * @param families<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>   * @return A Table instance for the created table.<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>   * @throws IOException<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>   */<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>  public Table createTable(TableName tableName, String[] families)<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>  throws IOException {<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>    List&lt;byte[]&gt; fams = new ArrayList&lt;&gt;(families.length);<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>    for (String family : families) {<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>      fams.add(Bytes.toBytes(family));<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>    }<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>    return createTable(tableName, fams.toArray(new byte[0][]));<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>  }<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span><a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>  /**<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>   * Create a table.<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>   * @param tableName<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>   * @param family<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>   * @return A Table instance for the created table.<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>   * @throws IOException<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>   */<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>  public Table createTable(TableName tableName, byte[] family)<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>  throws IOException{<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>    return createTable(tableName, new byte[][]{family});<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>  }<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span><a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>  /**<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>   * Create a table with multiple regions.<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>   * @param tableName<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>   * @param family<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>   * @param numRegions<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>   * @return A Table instance for the created table.<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>   * @throws IOException<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>   */<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>  public Table createMultiRegionTable(TableName tableName, byte[] family, int numRegions)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>      throws IOException {<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>    if (numRegions &lt; 3) throw new IOException("Must create at least 3 regions");<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>    byte[] startKey = Bytes.toBytes("aaaaa");<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>    byte[] endKey = Bytes.toBytes("zzzzz");<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>    byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span><a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>    return createTable(tableName, new byte[][] { family }, splitKeys);<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>  }<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span><a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>  /**<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>   * Create a table.<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>   * @param tableName<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>   * @param families<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>   * @return A Table instance for the created table.<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>   * @throws IOException<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>   */<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>  public Table createTable(TableName tableName, byte[][] families)<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>  throws IOException {<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>    return createTable(tableName, families, (byte[][]) null);<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>  }<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span><a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>  /**<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>   * Create a table with multiple regions.<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>   * @param tableName<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>   * @param families<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>   * @return A Table instance for the created table.<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>   * @throws IOException<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>   */<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families) throws IOException {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>    return createTable(tableName, families, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>  }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span><a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>  /**<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>   * Create a table.<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>   * @param tableName<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>   * @param families<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>   * @param splitKeys<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>   * @return A Table instance for the created table.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>   * @throws IOException<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>   */<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys)<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>      throws IOException {<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>    return createTable(tableName, families, splitKeys, 1, new Configuration(getConfiguration()));<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>  }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>  /**<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>   * Create a table.<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>   * @param tableName the table name<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>   * @param families the families<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>   * @param splitKeys the splitkeys<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>   * @param replicaCount the region replica count<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>   * @return A Table instance for the created table.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>   * @throws IOException throws IOException<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>   */<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>      int replicaCount) throws IOException {<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>    return createTable(tableName, families, splitKeys, replicaCount,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>      new Configuration(getConfiguration()));<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>  }<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span><a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>      int numVersions, byte[] startKey, byte[] endKey, int numRegions)<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>  throws IOException{<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions);<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>    getAdmin().createTable(desc, startKey, endKey, numRegions);<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>    // should wait until they are assigned<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>    return getConnection().getTable(tableName);<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>  }<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span><a name="line.1503"></a>
-<span class="sourceLineNo">1504</span>  /**<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>   * Create a table.<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>   * @param htd<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>   * @param families<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>   * @param c Configuration to use<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>   * @return A Table instance for the created table.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>   * @throws IOException<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>   */<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>  public Table createTable(TableDescriptor htd, byte[][] families, Configuration c)<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>  throws IOException {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>    return createTable(htd, families, null, c);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>  }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span><a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>  /**<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>   * Create a table.<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>   * @param htd table descriptor<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>   * @param families array of column families<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>   * @param splitKeys array of split keys<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>   * @param c Configuration to use<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>   * @return A Table instance for the created table.<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>   */<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>      Configuration c) throws IOException {<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>    // Disable blooms (they are on by default as of 0.95) but we disable them here because<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    // tests have hard coded counts of what to expect in block cache, etc., and blooms being<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>    // on is interfering.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>    return createTable(htd, families, splitKeys, BloomType.NONE, HConstants.DEFAULT_BLOCKSIZE, c);<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>  }<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span><a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>  /**<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>   * Create a table.<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>   * @param htd table descriptor<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>   * @param families array of column families<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>   * @param splitKeys array of split keys<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>   * @param type Bloom type<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>   * @param blockSize block size<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>   * @param c Configuration to use<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>   * @return A Table instance for the created table.<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>   */<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span><a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>      BloomType type, int blockSize, Configuration c) throws IOException {<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>    for (byte[] family : families) {<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>      builder.setColumnFamily(<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>          ColumnFamilyDescriptorBuilder.newBuilder(family).setBloomFilterType(type)<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>              .setBlocksize(blockSize).build());<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>    }<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>    TableDescriptor td = builder.build();<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>    getAdmin().createTable(td, splitKeys);<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>    // we should wait until they are assigned<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>    waitUntilAllRegionsAssigned(td.getTableName());<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>    return getConnection().getTable(td.getTableName());<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>  /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>   * Create a table.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>   * @param htd table descriptor<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>   * @param splitRows array of split keys<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>   * @return A Table instance for the created table.<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>   * @throws IOException<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>   */<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>  public Table createTable(TableDescriptor htd, byte[][] splitRows)<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>      throws IOException {<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>    getAdmin().createTable(htd, splitRows);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>    // we should wait until they are assigned<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>    waitUntilAllRegionsAssigned(htd.getTableName());<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    return getConnection().getTable(htd.getTableName());<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>  }<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span><a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>  /**<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>   * Create a table.<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>   * @param tableName the table name<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>   * @param families the families<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>   * @param splitKeys the split keys<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>   * @param replicaCount the replica count<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>   * @param c Configuration to use<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>   * @return A Table instance for the created table.<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>   * @throws IOException<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>   */<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>      int replicaCount, final Configuration c) throws IOException {<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>    htd.setRegionReplication(replicaCount);<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>    return createTable(htd, families, splitKeys, c);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>  }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span><a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>  /**<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>   * Create a table.<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>   * @param tableName<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>   * @param family<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>   * @param numVersions<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>   * @return A Table instance for the created table.<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>   * @throws IOException<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>   */<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>  public Table createTable(TableName tableName, byte[] family, int numVersions)<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>  throws IOException {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>    return createTable(tableName, new byte[][]{family}, numVersions);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>  }<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span><a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>  /**<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>   * Create a table.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>   * @param tableName<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>   * @param families<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>   * @param numVersions<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>   * @return A Table instance for the created table.<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>   * @throws IOException<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>   */<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>      throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>    return createTable(tableName, families, numVersions, (byte[][]) null);<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>  }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span><a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>  /**<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>   * Create a table.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>   * @param tableName<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>   * @param families<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>   * @param numVersions<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>   * @param splitKeys<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>   * @return A Table instance for the created table.<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>   * @throws IOException<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>   */<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions,<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      byte[][] splitKeys) throws IOException {<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>    for (byte[] family : families) {<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>      HColumnDescriptor hcd = new HColumnDescriptor(family).setMaxVersions(numVersions);<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>      desc.addFamily(hcd);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>    }<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>    getAdmin().createTable(desc, splitKeys);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>    // assigned<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>    return getConnection().getTable(tableName);<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>  }<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span><a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>  /**<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>   * Create a table with multiple regions.<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>   * @param tableName<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>   * @param families<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>   * @param numVersions<a name="line.1648"></a>
+<span class="sourceLineNo">1354</span>  */<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>  public Path createWALRootDir() throws IOException {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>    Path walDir = getNewDataTestDirOnTestFS();<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    FSUtils.setWALRootDir(this.conf, walDir);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    fs.mkdirs(walDir);<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span>    return walDir;<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span>  }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>  private void setHBaseFsTmpDir() throws IOException {<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>    String hbaseFsTmpDirInString = this.conf.get("hbase.fs.tmp.dir");<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    if (hbaseFsTmpDirInString == null) {<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>      this.conf.set("hbase.fs.tmp.dir",  getDataTestDirOnTestFS("hbase-staging").toString());<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      LOG.info("Setting hbase.fs.tmp.dir to " + this.conf.get("hbase.fs.tmp.dir"));<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>    } else {<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      LOG.info("The hbase.fs.tmp.dir is set to " + hbaseFsTmpDirInString);<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>    }<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>  }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span><a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>  /**<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>   * Flushes all caches in the mini hbase cluster<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>   * @throws IOException<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>   */<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>  public void flush() throws IOException {<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>    getMiniHBaseCluster().flushcache();<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>  }<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span><a name="line.1380"></a>
+<span class="sourceLineNo">1381</span>  /**<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>   * Flushes all caches in the mini hbase cluster<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>   * @throws IOException<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>   */<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>  public void flush(TableName tableName) throws IOException {<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    getMiniHBaseCluster().flushcache(tableName);<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>  }<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span><a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>  /**<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>   * Compact all regions in the mini hbase cluster<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>   * @throws IOException<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>   */<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>  public void compact(boolean major) throws IOException {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>    getMiniHBaseCluster().compact(major);<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span>  }<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span><a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>  /**<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>   * Compact all of a table's reagion in the mini hbase cluster<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>   * @throws IOException<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>   */<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>  public void compact(TableName tableName, boolean major) throws IOException {<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>    getMiniHBaseCluster().compact(tableName, major);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>  }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>  /**<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>   * Create a table.<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>   * @param tableName<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>   * @param family<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>   * @return A Table instance for the created table.<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>   * @throws IOException<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>   */<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>  public Table createTable(TableName tableName, String family)<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>  throws IOException{<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>    return createTable(tableName, new String[]{family});<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>  }<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span><a name="line.1416"></a>
+<span class="sourceLineNo">1417</span>  /**<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>   * Create a table.<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>   * @param tableName<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>   * @param families<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>   * @return A Table instance for the created table.<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>   * @throws IOException<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>   */<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>  public Table createTable(TableName tableName, String[] families)<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>  throws IOException {<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>    List&lt;byte[]&gt; fams = new ArrayList&lt;&gt;(families.length);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>    for (String family : families) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>      fams.add(Bytes.toBytes(family));<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>    }<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>    return createTable(tableName, fams.toArray(new byte[0][]));<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>  }<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span><a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>  /**<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>   * Create a table.<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>   * @param tableName<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>   * @param family<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>   * @return A Table instance for the created table.<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>   * @throws IOException<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>   */<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>  public Table createTable(TableName tableName, byte[] family)<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>  throws IOException{<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>    return createTable(tableName, new byte[][]{family});<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>  }<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span><a name="line.1444"></a>
+<span class="sourceLineNo">1445</span>  /**<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>   * Create a table with multiple regions.<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>   * @param tableName<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>   * @param family<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>   * @param numRegions<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span>   * @return A Table instance for the created table.<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>   * @throws IOException<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>   */<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>  public Table createMultiRegionTable(TableName tableName, byte[] family, int numRegions)<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>      throws IOException {<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>    if (numRegions &lt; 3) throw new IOException("Must create at least 3 regions");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>    byte[] startKey = Bytes.toBytes("aaaaa");<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>    byte[] endKey = Bytes.toBytes("zzzzz");<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>    byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span><a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>    return createTable(tableName, new byte[][] { family }, splitKeys);<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>  }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>  /**<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>   * Create a table.<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>   * @param tableName<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>   * @param families<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>   * @return A Table instance for the created table.<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>   * @throws IOException<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>   */<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>  public Table createTable(TableName tableName, byte[][] families)<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>  throws IOException {<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>    return createTable(tableName, families, (byte[][]) null);<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>  }<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span><a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>  /**<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>   * Create a table with multiple regions.<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span>   * @param tableName<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>   * @param families<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>   * @return A Table instance for the created table.<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>   * @throws IOException<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>   */<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families) throws IOException {<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>    return createTable(tableName, families, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>  }<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span><a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>  /**<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>   * Create a table.<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>   * @param tableName<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>   * @param families<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>   * @param splitKeys<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>   * @return A Table instance for the created table.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>   * @throws IOException<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>   */<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys)<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>      throws IOException {<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    return createTable(tableName, families, splitKeys, 1, new Configuration(getConfiguration()));<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>  }<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span><a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>  /**<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>   * Create a table.<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>   * @param tableName the table name<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>   * @param families the families<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>   * @param splitKeys the splitkeys<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>   * @param replicaCount the region replica count<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span>   * @return A Table instance for the created table.<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>   * @throws IOException throws IOException<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>   */<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>      int replicaCount) throws IOException {<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>    return createTable(tableName, families, splitKeys, replicaCount,<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>      new Configuration(getConfiguration()));<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>  }<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span><a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span>      int numVersions, byte[] startKey, byte[] endKey, int numRegions)<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>  throws IOException{<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>    HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions);<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span><a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>    getAdmin().createTable(desc, startKey, endKey, numRegions);<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>    // should wait until they are assigned<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>    return getConnection().getTable(tableName);<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>  }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span><a name="line.1525"></a>
+<span class="sourceLineNo">1526</span>  /**<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>   * Create a table.<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>   * @param htd<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>   * @param families<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>   * @param c Configuration to use<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>   * @return A Table instance for the created table.<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>   * @throws IOException<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>   */<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>  public Table createTable(TableDescriptor htd, byte[][] families, Configuration c)<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>  throws IOException {<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>    return createTable(htd, families, null, c);<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>  }<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span><a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>  /**<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>   * Create a table.<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>   * @param htd table descriptor<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>   * @param families array of column families<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>   * @param splitKeys array of split keys<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>   * @param c Configuration to use<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>   * @return A Table instance for the created table.<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>   */<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>      Configuration c) throws IOException {<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>    // Disable blooms (they are on by default as of 0.95) but we disable them here because<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span>    // tests have hard coded counts of what to expect in block cache, etc., and blooms being<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>    // on is interfering.<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>    return createTable(htd, families, splitKeys, BloomType.NONE, HConstants.DEFAULT_BLOCKSIZE, c);<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>  }<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span><a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>  /**<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>   * Create a table.<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>   * @param htd table descriptor<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>   * @param families array of column families<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>   * @param splitKeys array of split keys<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>   * @param type Bloom type<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>   * @param blockSize block size<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>   * @param c Configuration to use<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>   * @return A Table instance for the created table.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>   */<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span><a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>      BloomType type, int blockSize, Configuration c) throws IOException {<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>    for (byte[] family : families) {<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>      builder.setColumnFamily(<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>          ColumnFamilyDescriptorBuilder.newBuilder(family).setBloomFilterType(type)<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>              .setBlocksize(blockSize).build());<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>    }<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    TableDescriptor td = builder.build();<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>    getAdmin().createTable(td, splitKeys);<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    // we should wait until they are assigned<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    waitUntilAllRegionsAssigned(td.getTableName());<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>    return getConnection().getTable(td.getTableName());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>  }<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span><a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>  /**<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>   * Create a table.<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>   * @param htd table descriptor<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>   * @param splitRows array of split keys<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>   * @return A Table instance for the created table.<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>   * @throws IOException<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>   */<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>  public Table createTable(TableDescriptor htd, byte[][] splitRows)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>      throws IOException {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>    getAdmin().createTable(htd, splitRows);<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>    // we should wait until they are assigned<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>    waitUntilAllRegionsAssigned(htd.getTableName());<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>    return getConnection().getTable(htd.getTableName());<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>  }<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span><a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>  /**<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>   * Create a table.<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>   * @param tableName the table name<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>   * @param families the families<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>   * @param splitKeys the split keys<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>   * @param replicaCount the replica count<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span>   * @param c Configuration to use<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>   * @return A Table instance for the created table.<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>   * @throws IOException<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>   */<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>      int replicaCount, final Configuration c) throws IOException {<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>    htd.setRegionReplication(replicaCount);<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>    return createTable(htd, families, splitKeys, c);<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span>  }<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span><a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>  /**<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>   * Create a table.<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>   * @param tableName<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>   * @param family<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>   * @param numVersions<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>   * @return A Table instance for the created table.<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>   * @throws IOException<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>   */<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>  public Table createTable(TableName tableName, byte[] family, int numVersions)<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>  throws IOException {<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>    return createTable(tableName, new byte[][]{family}, numVersions);<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>  }<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span><a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>  /**<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>   * Create a table.<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span>   * @param tableName<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>   * @param families<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>   * @param numVersions<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>   * @return A Table instance for the created table.<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>   * @throws IOException<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>   */<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>      throws IOException {<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>    return createTable(tableName, families, numVersions, (byte[][]) null);<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span>  }<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span><a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>  /**<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>   * Create a table.<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span>   * @param tableName<a name="line.1645"></a>
+<span class="sourceLineNo">1646</span>   * @param families<a name="line.1646"></a>
+<span class="sourceLineNo">1647</span>   * @param numVersions<a name="line.1647"></a>
+<span class="sourceLineNo">1648</span>   * @param splitKeys<a name="line.1648"></a>
 <span class="sourceLineNo">1649</span>   * @return A Table instance for the created table.<a name="line.1649"></a>
 <span class="sourceLineNo">1650</span>   * @throws IOException<a name="line.1650"></a>
 <span class="sourceLineNo">1651</span>   */<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>      throws IOException {<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>    return createTable(tableName, families, numVersions, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>  }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>  /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>   * Create a table.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>   * @param tableName<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>   * @param families<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>   * @param numVersions<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>   * @param blockSize<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>   * @return A Table instance for the created table.<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>   * @throws IOException<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>   */<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>    int numVersions, int blockSize) throws IOException {<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>    for (byte[] family : families) {<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>      HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          .setMaxVersions(numVersions)<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          .setBlocksize(blockSize);<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>      desc.addFamily(hcd);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>    }<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>    getAdmin().createTable(desc);<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>    // assigned<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>    return getConnection().getTable(tableName);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>  }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span><a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>      int numVersions, int blockSize, String cpName) throws IOException {<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>      HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>      for (byte[] family : families) {<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>            .setMaxVersions(numVersions)<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>            .setBlocksize(blockSize);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        desc.addFamily(hcd);<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span>      if(cpName != null) {<a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>        desc.addCoprocessor(cpName);<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>      }<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      getAdmin().createTable(desc);<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>      // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      // assigned<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>      waitUntilAllRegionsAssigned(tableName);<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      return getConnection().getTable(tableName);<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span>    }<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span><a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>  /**<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>   * Create a table.<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>   * @param tableName<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>   * @param families<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>   * @param numVersions<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span>   * @return A Table instance for the created table.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>   * @throws IOException<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span>   */<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      int[] numVersions)<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>  throws IOException {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>    int i = 0;<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>    for (byte[] family : families) {<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>          .setMaxVersions(numVersions[i]);<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      desc.addFamily(hcd);<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      i++;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>    getAdmin().createTable(desc);<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>    // assigned<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span>    return getConnection().getTable(tableName);<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>  }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span><a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>  /**<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>   * Create a table.<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>   * @param tableName<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>   * @param family<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>   * @param splitRows<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>   * @return A Table instance for the created table.<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>   * @throws IOException<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>   */<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>  public Table createTable(TableName tableName, byte[] family, byte[][] splitRows)<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      throws IOException {<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    desc.addFamily(hcd);<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>    getAdmin().createTable(desc, splitRows);<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>    // assigned<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>    return getConnection().getTable(tableName);<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>  }<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span><a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>  /**<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>   * Create a table with multiple regions.<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>   * @param tableName<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>   * @param fa

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
index 234850f..8371bd2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":9,"i6":10,"i7":10,"i8":10,"i9":9,"i10":9,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":9,"i17":10,"i18":10,"i19":9,"i20":10,"i21":10,"i22":42,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":41,"i29":41,"i30":10,"i31":10,"i32":10,"i33":42,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":9,"i40":9,"i41":9,"i42":9,"i43":9,"i44":9,"i45":9,"i46":10,"i47":9,"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":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":42,"i72":42,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":9,"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":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":9,"i101":9,"i102":10,"i103":9,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109":10,"i110":10,"i
 111":10,"i112":10,"i113":10,"i114":9,"i115":9,"i116":9,"i117":42,"i118":10,"i119":10,"i120":10,"i121":9,"i122":42,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":9,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":9,"i150":9,"i151":9,"i152":10,"i153":10,"i154":10,"i155":10,"i156":10,"i157":9,"i158":9,"i159":10,"i160":9,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":9,"i168":9,"i169":10,"i170":10,"i171":10,"i172":10,"i173":10,"i174":10,"i175":10,"i176":10,"i177":42,"i178":10,"i179":42,"i180":42,"i181":42,"i182":42,"i183":42,"i184":42,"i185":42,"i186":42,"i187":42,"i188":42,"i189":10,"i190":10,"i191":10,"i192":10,"i193":10,"i194":10,"i195":10,"i196":42,"i197":42,"i198":42,"i199":10,"i200":10,"i201":10,"i202":10,"i203":10,"i204":10,"i205":10,"i206":10,"i207":10,"i208":10,"i209":10,"i210":10,"i211":10,"i
 212":10,"i213":10,"i214":9,"i215":10,"i216":10,"i217":10,"i218":10,"i219":10,"i220":10,"i221":10,"i222":10,"i223":10,"i224":10,"i225":10,"i226":10,"i227":10,"i228":10,"i229":10};
+var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":9,"i6":10,"i7":10,"i8":10,"i9":10,"i10":9,"i11":9,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":9,"i18":10,"i19":10,"i20":9,"i21":10,"i22":10,"i23":42,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":41,"i30":41,"i31":10,"i32":10,"i33":10,"i34":42,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":9,"i41":9,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":10,"i48":9,"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":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":42,"i73":42,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":9,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":9,"i102":9,"i103":10,"i104":9,"i105":10,"i106":10,"i107":10,"i108":10,"i109":10,"i110":10,"i
 111":10,"i112":10,"i113":10,"i114":10,"i115":9,"i116":9,"i117":9,"i118":42,"i119":10,"i120":10,"i121":10,"i122":9,"i123":42,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":9,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":9,"i152":9,"i153":9,"i154":10,"i155":10,"i156":10,"i157":10,"i158":10,"i159":9,"i160":9,"i161":10,"i162":9,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":9,"i170":9,"i171":10,"i172":10,"i173":10,"i174":10,"i175":10,"i176":10,"i177":10,"i178":10,"i179":42,"i180":10,"i181":42,"i182":42,"i183":42,"i184":42,"i185":42,"i186":42,"i187":42,"i188":42,"i189":42,"i190":42,"i191":10,"i192":10,"i193":10,"i194":10,"i195":10,"i196":10,"i197":10,"i198":42,"i199":42,"i200":42,"i201":10,"i202":10,"i203":10,"i204":10,"i205":10,"i206":10,"i207":10,"i208":10,"i209":10,"i210":10,"i211":10,"i
 212":10,"i213":10,"i214":10,"i215":10,"i216":9,"i217":10,"i218":10,"i219":10,"i220":10,"i221":10,"i222":10,"i223":10,"i224":10,"i225":10,"i226":10,"i227":10,"i228":10,"i229":10,"i230":10,"i231":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -431,89 +431,93 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </td>
 </tr>
 <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/HBaseTestingUtility.html#cleanup--">cleanup</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS--">cleanupDataTestDirOnTestFS</a></span>()</code>
 <div class="block">Cleans the test data directory on the test filesystem.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS-java.lang.String-">cleanupDataTestDirOnTestFS</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subdirName)</code>
 <div class="block">Cleans a subdirectory under the test data directory on the test filesystem.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL-org.apache.hadoop.hbase.regionserver.HRegion-">closeRegionAndWAL</a></span>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r)</code>
 <div class="block">Close both the HRegion <code>r</code> and it's underlying WAL.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL-org.apache.hadoop.hbase.regionserver.Region-">closeRegionAndWAL</a></span>(org.apache.hadoop.hbase.regionserver.Region&nbsp;r)</code>
 <div class="block">Close both the region <code>r</code> and it's underlying WAL.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact-boolean-">compact</a></span>(boolean&nbsp;major)</code>
 <div class="block">Compact all regions in the mini hbase cluster</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact-org.apache.hadoop.hbase.TableName-boolean-">compact</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
        boolean&nbsp;major)</code>
 <div class="block">Compact all of a table's reagion in the mini hbase cluster</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.InternalScanner-">countRows</a></span>(org.apache.hadoop.hbase.regionserver.InternalScanner&nbsp;scanner)</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.Region-">countRows</a></span>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region)</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.client.Scan-">countRows</a></span>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
          org.apache.hadoop.hbase.client.Scan&nbsp;scan)</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-">countRows</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;table)</code>
 <div class="block">Return the number of rows in the given table.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-byte:A...-">countRows</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;table,
          byte[]...&nbsp;families)</code>&nbsp;</td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.TableName-">countRows</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Return the number of rows in the given table.</div>
 </td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-org.apache.hadoop.hbase.client.Scan-">countRows</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;table,
          org.apache.hadoop.hbase.client.Scan&nbsp;scan)</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createDirAndSetProperty-java.lang.String-java.lang.String-">createDirAndSetProperty</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;relPath,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;property)</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createDirsAndSetProperties--">createDirsAndSetProperties</a></span>()</code>
 <div class="block">This is used before starting HDFS and map-reduce mini-clusters</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.HRegion</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-byte:A-byte:A-byte:A-java.lang.String-org.apache.hadoop.conf.Configuration-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-byte:A...-">createLocalHRegion</a></span>(byte[]&nbsp;tableName,
                   byte[]&nbsp;startKey,
@@ -530,14 +534,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.HRegion</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-">createLocalHRegion</a></span>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
                   org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc)</code>
 <div class="block">Create an HRegion that writes to the local tmp dirs.</div>
 </td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.HRegion</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-">createLocalHRegion</a></span>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
                   org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
@@ -545,7 +549,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create an HRegion that writes to the local tmp dirs with specified wal</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.HRegion</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.TableDescriptor-byte:A-byte:A-">createLocalHRegion</a></span>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
                   byte[]&nbsp;startKey,
@@ -553,7 +557,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create an HRegion that writes to the local tmp dirs</div>
 </td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.HRegion</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.TableName-byte:A-byte:A-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-byte:A...-">createLocalHRegion</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                   byte[]&nbsp;startKey,
@@ -563,7 +567,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                   org.apache.hadoop.hbase.wal.WAL&nbsp;wal,
                   byte[]...&nbsp;families)</code>&nbsp;</td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.HRegion</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegionWithInMemoryFlags-org.apache.hadoop.hbase.TableName-byte:A-byte:A-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-boolean:A-byte:A...-">createLocalHRegionWithInMemoryFlags</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                    byte[]&nbsp;startKey,
@@ -574,7 +578,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                                    boolean[]&nbsp;compactedMemStore,
                                    byte[]...&nbsp;families)</code>&nbsp;</td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU--">createLocalHTU</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -582,7 +586,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU-org.apache.hadoop.conf.Configuration-">createLocalHTU</a></span>(org.apache.hadoop.conf.Configuration&nbsp;c)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -590,25 +594,25 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.RegionServerServices</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService--">createMockRegionServerService</a></span>()</code>
 <div class="block">Create a stubbed out RegionServerService, mainly for getting FS.</div>
 </td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.RegionServerServices</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService-org.apache.hadoop.hbase.ipc.RpcServerInterface-">createMockRegionServerService</a></span>(org.apache.hadoop.hbase.ipc.RpcServerInterface&nbsp;rpc)</code>
 <div class="block">Create a stubbed out RegionServerService, mainly for getting FS.</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.RegionServerServices</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService-org.apache.hadoop.hbase.ServerName-">createMockRegionServerService</a></span>(org.apache.hadoop.hbase.ServerName&nbsp;name)</code>
 <div class="block">Create a stubbed out RegionServerService, mainly for getting FS.</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.HRegionInfo&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionsInMeta-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HTableDescriptor-byte:A:A-">createMultiRegionsInMeta</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                         org.apache.hadoop.hbase.HTableDescriptor&nbsp;htd,
@@ -619,7 +623,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.client.RegionInfo&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionsInMeta-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-">createMultiRegionsInMeta</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                         org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
@@ -628,21 +632,21 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
  start keys.</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A-">createMultiRegionTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                       byte[]&nbsp;family)</code>
 <div class="block">Create a table with multiple regions.</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A:A-">createMultiRegionTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                       byte[][]&nbsp;families)</code>
 <div class="block">Create a table with multiple regions.</div>
 </td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createMultiRegionTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                       byte[][]&nbsp;families,
@@ -650,7 +654,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table with multiple regions.</div>
 </td>
 </tr>
-<tr id="i38" class="altColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A-int-">createMultiRegionTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                       byte[]&nbsp;family,
@@ -658,7 +662,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table with multiple regions.</div>
 </td>
 </tr>
-<tr id="i39" class="rowColor">
+<tr id="i40" class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">createPreSplitLoadTestTable</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                            org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
@@ -666,7 +670,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Creates a pre-split table for load testing.</div>
 </td>
 </tr>
-<tr id="i40" class="altColor">
+<tr id="i41" class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor:A-int-">createPreSplitLoadTestTable</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                            org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
@@ -675,7 +679,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Creates a pre-split table for load testing.</div>
 </td>
 </tr>
-<tr id="i41" class="rowColor">
+<tr id="i42" class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor:A-org.apache.hadoop.hbase.util.RegionSplitter.SplitAlgorithm-int-">createPreSplitLoadTestTable</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                            org.apache.hadoop.hbase.client.TableDescriptor&nbsp;td,
@@ -685,7 +689,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Creates a pre-split table for load testing.</div>
 </td>
 </tr>
-<tr id="i42" class="altColor">
+<tr id="i43" class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-int-">createPreSplitLoadTestTable</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                            org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc,
@@ -694,7 +698,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Creates a pre-split table for load testing.</div>
 </td>
 </tr>
-<tr id="i43" class="rowColor">
+<tr id="i44" class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-int-int-org.apache.hadoop.hbase.client.Durability-">createPreSplitLoadTestTable</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                            org.apache.hadoop.hbase.TableName&nbsp;tableName,
@@ -707,7 +711,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Creates a pre-split table for load testing.</div>
 </td>
 </tr>
-<tr id="i44" class="altColor">
+<tr id="i45" class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-">createPreSplitLoadTestTable</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                            org.apache.hadoop.hbase.TableName&nbsp;tableName,
@@ -717,7 +721,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Creates a pre-split table for load testing.</div>
 </td>
 </tr>
-<tr id="i45" class="rowColor">
+<tr id="i46" class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-int-int-org.apache.hadoop.hbase.client.Durability-">createPreSplitLoadTestTable</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                            org.apache.hadoop.hbase.TableName&nbsp;tableName,
@@ -730,7 +734,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Creates a pre-split table for load testing.</div>
 </td>
 </tr>
-<tr id="i46" class="altColor">
+<tr id="i47" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRandomTable-org.apache.hadoop.hbase.TableName-java.util.Collection-int-int-int-int-int-">createRandomTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;families,
@@ -742,7 +746,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Creates a random table with the given parameters</div>
 </td>
 </tr>
-<tr id="i47" class="rowColor">
+<tr id="i48" class="altColor">
 <td class="colFirst"><code>static org.apache.hadoop.hbase.regionserver.HRegion</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-">createRegionAndWAL</a></span>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
                   org.apache.hadoop.fs.Path&nbsp;rootDir,
@@ -751,7 +755,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a region with it's own WAL.</div>
 </td>
 </tr>
-<tr id="i48" class="altColor">
+<tr id="i49" class="rowColor">
 <td class="colFirst"><code>static org.apache.hadoop.hbase.regionserver.HRegion</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-boolean-">createRegionAndWAL</a></span>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
                   org.apache.hadoop.fs.Path&nbsp;rootDir,
@@ -761,33 +765,33 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a region with it's own WAL.</div>
 </td>
 </tr>
-<tr id="i49" class="rowColor">
+<tr id="i50" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir--">createRootDir</a></span>()</code>
 <div class="block">Same as <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir-boolean-"><code>createRootDir(boolean create)</code></a>
  except that <code>create</code> flag is false.</div>
 </td>
 </tr>
-<tr id="i50" class="altColor">
+<tr id="i51" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir-boolean-">createRootDir</a></span>(boolean&nbsp;create)</code>
 <div class="block">Creates an hbase rootdir in user home directory.</div>
 </td>
 </tr>
-<tr id="i51" class="rowColor">
+<tr id="i52" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createSubDirAndSystemProperty-java.lang.String-org.apache.hadoop.fs.Path-java.lang.String-">createSubDirAndSystemProperty</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;propertyName,
                              org.apache.hadoop.fs.Path&nbsp;parent,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subDirName)</code>&nbsp;</td>
 </tr>
-<tr id="i52" class="altColor">
+<tr id="i53" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-">createTable</a></span>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
            byte[][]&nbsp;splitRows)</code>
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i53" class="rowColor">
+<tr id="i54" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-byte:A:A-org.apache.hadoop.hbase.regionserver.BloomType-int-org.apache.hadoop.conf.Configuration-">createTable</a></span>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
            byte[][]&nbsp;families,
@@ -798,7 +802,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i54" class="altColor">
+<tr id="i55" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-byte:A:A-org.apache.hadoop.conf.Configuration-">createTable</a></span>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
            byte[][]&nbsp;families,
@@ -807,7 +811,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i55" class="rowColor">
+<tr id="i56" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-org.apache.hadoop.conf.Configuration-">createTable</a></span>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;htd,
            byte[][]&nbsp;families,
@@ -815,21 +819,21 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i56" class="altColor">
+<tr id="i57" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[]&nbsp;family)</code>
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i57" class="rowColor">
+<tr id="i58" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[][]&nbsp;families)</code>
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i58" class="altColor">
+<tr id="i59" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[][]&nbsp;families,
@@ -837,7 +841,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i59" class="rowColor">
+<tr id="i60" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-int-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[][]&nbsp;families,
@@ -846,7 +850,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i60" class="altColor">
+<tr id="i61" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-int-org.apache.hadoop.conf.Configuration-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[][]&nbsp;families,
@@ -856,7 +860,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i61" class="rowColor">
+<tr id="i62" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[][]&nbsp;families,
@@ -864,7 +868,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i62" class="altColor">
+<tr id="i63" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int:A-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[][]&nbsp;families,
@@ -872,7 +876,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i63" class="rowColor">
+<tr id="i64" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-byte:A:A-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[][]&nbsp;families,
@@ -881,7 +885,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i64" class="altColor">
+<tr id="i65" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-byte:A-byte:A-int-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[][]&nbsp;families,
@@ -890,7 +894,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
            byte[]&nbsp;endKey,
            int&nbsp;numRegions)</code>&nbsp;</td>
 </tr>
-<tr id="i65" class="rowColor">
+<tr id="i66" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-int-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[][]&nbsp;families,
@@ -899,7 +903,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i66" class="altColor">
+<tr id="i67" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-int-java.lang.String-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[][]&nbsp;families,
@@ -907,7 +911,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
            int&nbsp;blockSize,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;cpName)</code>&nbsp;</td>
 </tr>
-<tr id="i67" class="rowColor">
+<tr id="i68" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-byte:A:A-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[]&nbsp;family,
@@ -915,7 +919,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i68" class="altColor">
+<tr id="i69" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-int-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            byte[]&nbsp;family,
@@ -923,27 +927,27 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i69" class="rowColor">
+<tr id="i70" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-java.lang.String-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;family)</code>
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i70" class="altColor">
+<tr id="i71" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-java.lang.String:A-">createTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;families)</code>
 <div class="block">Create a table.</div>
 </td>
 </tr>
-<tr id="i71" class="rowColor">
+<tr id="i72" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.HTableDescriptor</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-java.lang.String-">createTableDescriptor</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </td>
 </tr>
-<tr id="i72" class="altColor">
+<tr id="i73" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.HTableDescriptor</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-java.lang.String-int-int-int-org.apache.hadoop.hbase.KeepDeletedCells-">createTableDescriptor</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                      int&nbsp;minVersions,
@@ -953,24 +957,24 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </td>
 </tr>
-<tr id="i73" class="rowColor">
+<tr id="i74" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.HTableDescriptor</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-">createTableDescriptor</a></span>(org.apache.hadoop.hbase.TableName&nbsp;name)</code>
 <div class="block">Create a table of name <code>name</code>.</div>
 </td>
 </tr>
-<tr id="i74" class="altColor">
+<tr id="i75" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.HTableDescriptor</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-byte:A-">createTableDescriptor</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                      byte[]&nbsp;family)</code>&nbsp;</td>
 </tr>
-<tr id="i75" class="rowColor">
+<tr id="i76" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.HTableDescriptor</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createTableDescriptor</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                      byte[][]&nbsp;families,
                      int&nbsp;maxVersions)</code>&nbsp;</td>
 </tr>
-<tr id="i76" class="altColor">
+<tr id="i77" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.HTableDescriptor</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-int-int-int-org.apache.hadoop.hbase.KeepDeletedCells-">createTableDescriptor</a></span>(org.apache.hadoop.hbase.TableName&nbsp;name,
                      int&nbsp;minVersions,
@@ -978,12 +982,12 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                      int&nbsp;ttl,
                      org.apache.hadoop.hbase.KeepDeletedCells&nbsp;keepDeleted)</code>&nbsp;</td>
 </tr>
-<tr id="i77" class="rowColor">
+<tr id="i78" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.HRegion</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTestRegion-java.lang.String-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">createTestRegion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;tableName,
                 org.apache.hadoop.hbase.client.ColumnFamilyDescriptor&nbsp;cd)</code>&nbsp;</td>
 </tr>
-<tr id="i78" class="altColor">
+<tr id="i79" class="rowColor">
 <td class="colFirst"><code>static org.apache.hadoop.hbase.wal.WAL</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createWal-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-">createWal</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
          org.apache.hadoop.fs.Path&nbsp;rootDir,
@@ -991,88 +995,88 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create an unmanaged WAL.</div>
 </td>
 </tr>
-<tr id="i79" class="rowColor">
+<tr id="i80" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createWALRootDir--">createWALRootDir</a></span>()</code>
 <div class="block">Creates a hbase walDir in the user's home directory.</div>
 </td>
 </tr>
-<tr id="i80" class="altColor">
+<tr id="i81" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#decrementMinRegionServerCount--">decrementMinRegionServerCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i81" class="rowColor">
+<tr id="i82" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#decrementMinRegionServerCount-org.apache.hadoop.conf.Configuration-">decrementMinRegionServerCount</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr id="i82" class="altColor">
+<tr id="i83" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">deleteNumericRows</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
                  byte[]&nbsp;f,
                  int&nbsp;startRow,
                  int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr id="i83" class="rowColor">
+<tr id="i84" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTable-org.apache.hadoop.hbase.TableName-">deleteTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Drop an existing table</div>
 </td>
 </tr>
-<tr id="i84" class="altColor">
+<tr id="i85" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableData-org.apache.hadoop.hbase.TableName-">deleteTableData</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Provide an existing table name to truncate.</div>
 </td>
 </tr>
-<tr id="i85" class="rowColor">
+<tr id="i86" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableIfAny-org.apache.hadoop.hbase.TableName-">deleteTableIfAny</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Drop an existing table</div>
 </td>
 </tr>
-<tr id="i86" class="altColor">
+<tr id="i87" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#enableDebug-java.lang.Class-">enableDebug</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;clazz)</code>
 <div class="block">Switches the logger for the given class to DEBUG level.</div>
 </td>
 </tr>
-<tr id="i87" class="rowColor">
+<tr id="i88" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#enableShortCircuit--">enableShortCircuit</a></span>()</code>
 <div class="block">Enable the short circuit read, unless configured differently.</div>
 </td>
 </tr>
-<tr id="i88" class="altColor">
+<tr id="i89" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeNonStoppedRegionServersAvailable-int-">ensureSomeNonStoppedRegionServersAvailable</a></span>(int&nbsp;num)</code>
 <div class="block">Make sure that at least the specified number of region servers
  are running.</div>
 </td>
 </tr>
-<tr id="i89" class="rowColor">
+<tr id="i90" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeRegionServersAvailable-int-">ensureSomeRegionServersAvailable</a></span>(int&nbsp;num)</code>
 <div class="block">Make sure that at least the specified number of region servers
  are running</div>
 </td>
 </tr>
-<tr id="i90" class="altColor">
+<tr id="i91" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireMasterSession--">expireMasterSession</a></span>()</code>
 <div class="block">Expire the Master's session</div>
 </td>
 </tr>
-<tr id="i91" class="rowColor">
+<tr id="i92" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireRegionServerSession-int-">expireRegionServerSession</a></span>(int&nbsp;index)</code>
 <div class="block">Expire a region server's session</div>
 </td>
 </tr>
-<tr id="i92" class="altColor">
+<tr id="i93" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">expireSession</a></span>(org.apache.hadoop.hbase.zookeeper.ZKWatcher&nbsp;nodeZK)</code>&nbsp;</td>
 </tr>
-<tr id="i93" class="rowColor">
+<tr id="i94" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession-org.apache.hadoop.hbase.zookeeper.ZKWatcher-boolean-">expireSession</a></span>(org.apache.hadoop.hbase.zookeeper.ZKWatcher&nbsp;nodeZK,
              boolean&nbsp;checkStatus)</code>
@@ -1083,120 +1087,120 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
  [2] https://issues.apache.org/jira/browse/ZOOKEEPER-1105</div>
 </td>
 </tr>
-<tr id="i94" class="altColor">
+<tr id="i95" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableAvailability-org.apache.hadoop.hbase.TableName-">explainTableAvailability</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr id="i95" class="rowColor">
+<tr id="i96" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableState-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableState.State-">explainTableState</a></span>(org.apache.hadoop.hbase.TableName&nbsp;table,
                  org.apache.hadoop.hbase.client.TableState.State&nbsp;state)</code>&nbsp;</td>
 </tr>
-<tr id="i96" class="altColor">
+<tr id="i97" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.TableState</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#findLastTableState-org.apache.hadoop.hbase.TableName-">findLastTableState</a></span>(org.apache.hadoop.hbase.TableName&nbsp;table)</code>&nbsp;</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/HBaseTestingUtility.html#flush--">flush</a></span>()</code>
 <div class="block">Flushes all caches in the mini hbase cluster</div>
 </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/HBaseTestingUtility.html#flush-org.apache.hadoop.hbase.TableName-">flush</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Flushes all caches in the mini hbase cluster</div>
 </td>
 </tr>
-<tr id="i99" class="rowColor">
+<tr id="i100" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#forceChangeTaskLogDir--">forceChangeTaskLogDir</a></span>()</code>
 <div class="block">Tasktracker has a bug where changing the hadoop.log.dir system property
  will not change its internal static LOG_DIR variable.</div>
 </td>
 </tr>
-<tr id="i100" class="altColor">
+<tr id="i101" class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.HColumnDescriptor&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColumnDescriptors--">generateColumnDescriptors</a></span>()</code>
 <div class="block">Create a set of column descriptors with the combination of compression,
  encoding, bloom codecs available.</div>
 </td>
 </tr>
-<tr id="i101" class="rowColor">
+<tr id="i102" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.HColumnDescriptor&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColumnDescriptors-java.lang.String-">generateColumnDescriptors</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;prefix)</code>
 <div class="block">Create a set of column descriptors with the combination of compression,
  encoding, bloom codecs available.</div>
 </td>
 </tr>
-<tr id="i102" class="altColor">
+<tr id="i103" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Admin</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getAdmin--">getAdmin</a></span>()</code>
 <div class="block">Returns an Admin instance which is shared between HBaseTestingUtility instance users.</div>
 </td>
 </tr>
-<tr id="i103" class="rowColor">
+<tr id="i104" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getAllOnlineRegions-org.apache.hadoop.hbase.MiniHBaseCluster-">getAllOnlineRegions</a></span>(<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;cluster)</code>&nbsp;</td>
 </tr>
-<tr id="i104" class="altColor">
+<tr id="i105" class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getBaseTestDirOnTestFS--">getBaseTestDirOnTestFS</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i105" class="rowColor">
+<tr id="i106" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Result</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClosestRowBefore-org.apache.hadoop.hbase.regionserver.Region-byte:A-byte:A-">getClosestRowBefore</a></span>(org.apache.hadoop.hbase.regionserver.Region&nbsp;r,
                    byte[]&nbsp;row,
                    byte[]&nbsp;family)</code>&nbsp;</td>
 </tr>
-<tr id="i106" class="altColor">
+<tr id="i107" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClusterKey--">getClusterKey</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i107" class="rowColor">
+<tr id="i108" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.conf.Configuration</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConfiguration--">getConfiguration</a></span>()</code>
 <div class="block">Returns this classes's instance of <code>Configuration</code>.</div>
 </td>
 </tr>
-<tr id="i108" class="altColor">
+<tr id="i109" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Connection</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConnection--">getConnection</a></span>()</code>
 <div class="block">Get a Connection to the cluster.</div>
 </td>
 </tr>
-<tr id="i109" class="rowColor">
+<tr id="i110" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS--">getDataTestDirOnTestFS</a></span>()</code>
 <div class="block">Returns a Path in the test filesystem, obtained from <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem--"><code>getTestFileSystem()</code></a>
  to write temporary test data.</div>
 </td>
 </tr>
-<tr id="i110" class="altColor">
+<tr id="i111" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS-java.lang.String-">getDataTestDirOnTestFS</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;subdirName)</code>
 <div class="block">Returns a Path in the test filesystem, obtained from <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem--"><code>getTestFileSystem()</code></a>
  to write temporary test data.</div>
 </td>
 </tr>
-<tr id="i111" class="rowColor">
+<tr id="i112" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath--">getDefaultRootDirPath</a></span>()</code>
 <div class="block">Same as {<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath-boolean-"><code>getDefaultRootDirPath(boolean create)</code></a>
  except that <code>create</code> flag is false.</div>
 </td>
 </tr>
-<tr id="i112" class="altColor">
+<tr id="i113" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath-boolean-">getDefaultRootDirPath</a></span>(boolean&nbsp;create)</code>
 <div class="block">Returns the path to the default root dir the minicluster uses.</div>
 </td>
 </tr>
-<tr id="i113" class="rowColor">
+<tr id="i114" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDFSCluster--">getDFSCluster</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i114" class="altColor">
+<tr id="i115" class="rowColor">
 <td class="colFirst"><code>static org.apache.hadoop.hbase.security.User</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDifferentUser-org.apache.hadoop.conf.Configuration-java.lang.String-">getDifferentUser</a></span>(org.apache.hadoop.conf.Configuration&nbsp;c,
                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;differentiatingSuffix)</code>
@@ -1204,7 +1208,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
  user into the clone.</div>
 </td>
 </tr>
-<tr id="i115" class="rowColor">
+<tr id="i116" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.Cell&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getFromStoreFile-org.apache.hadoop.hbase.regionserver.HStore-byte:A-java.util.NavigableSet-">getFromStoreFile</a></span>(org.apache.hadoop.hbase.regionserver.HStore&nbsp;store,
                 byte[]&nbsp;row,
@@ -1212,14 +1216,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Do a small get/scan against one store.</div>
 </td>
 </tr>
-<tr id="i116" class="altColor">
+<tr id="i117" class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.Cell&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getFromStoreFile-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.hbase.client.Get-">getFromStoreFile</a></span>(org.apache.hadoop.hbase.regionserver.HStore&nbsp;store,
                 org.apache.hadoop.hbase.client.Get&nbsp;get)</code>
 <div class="block">Do a small get/scan against one store.</div>
 </td>
 </tr>
-<tr id="i117" class="rowColor">
+<tr id="i118" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.HBaseAdmin</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseAdmin--">getHBaseAdmin</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -1227,29 +1231,29 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i118" class="altColor">
+<tr id="i119" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseCluster--">getHBaseCluster</a></span>()</code>
 <div class="block">Get the Mini HBase cluster.</div>
 </td>
 </tr>
-<tr id="i119" class="rowColor">
+<tr id="i120" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/HBaseCluster.html" title="class in org.apache.hadoop.hbase">HBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseClusterInterface--">getHBaseClusterInterface</a></span>()</code>
 <div class="block">Returns the HBaseCluster instance.</div>
 </td>
 </tr>
-<tr id="i120" class="altColor">
+<tr id="i121" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Hbck</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHbck--">getHbck</a></span>()</code>
 <div class="block">Returns an <code>Hbck</code> instance.</div>
 </td>
 </tr>
-<tr id="i121" class="rowColor">
+<tr id="i122" class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaRSPort-org.apache.hadoop.hbase.client.Connection-">getMetaRSPort</a></span>(org.apache.hadoop.hbase.client.Connection&nbsp;connection)</code>&nbsp;</td>
 </tr>
-<tr id="i122" class="altColor">
+<tr id="i123" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.HTableDescriptor</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableDescriptor--">getMetaTableDescriptor</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -1258,54 +1262,54 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i123" class="rowColor">
+<tr id="i124" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.TableDescriptorBuilder</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableDescriptorBuilder--">getMetaTableDescriptorBuilder</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i124" class="altColor">
+<tr id="i125" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows--">getMetaTableRows</a></span>()</code>
 <div class="block">Returns all rows from the hbase:meta table.</div>
 </td>
 </tr>
-<tr id="i125" class="rowColor">
+<tr id="i126" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows-org.apache.hadoop.hbase.TableName-">getMetaTableRows</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Returns all rows from the hbase:meta table for a given user table</div>
 </td>
 </tr>
-<tr id="i126" class="altColor">
+<tr id="i127" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMiniHBaseCluster--">getMiniHBaseCluster</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i127" class="rowColor">
+<tr id="i128" class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getNewDataTestDirOnTestFS--">getNewDataTestDirOnTestFS</a></span>()</code>
 <div class="block">Sets up a new path in test filesystem to be used by tests.</div>
 </td>
 </tr>
-<tr id="i128" class="altColor">
+<tr id="i129" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getNumHFiles-org.apache.hadoop.hbase.TableName-byte:A-">getNumHFiles</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
             byte[]&nbsp;family)</code>&nbsp;</td>
 </tr>
-<tr id="i129" class="rowColor">
+<tr id="i130" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getNumHFilesForRS-org.apache.hadoop.hbase.regionserver.HRegionServer-org.apache.hadoop.hbase.TableName-byte:A-">getNumHFilesForRS</a></span>(org.apache.hadoop.hbase.regionserver.HRegionServer&nbsp;rs,
                  org.apache.hadoop.hbase.TableName&nbsp;tableName,
                  byte[]&nbsp;family)</code>&nbsp;</td>
 </tr>
-<tr id="i130" class="altColor">
+<tr id="i131" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.HRegionServer</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getOtherRegionServer-org.apache.hadoop.hbase.regionserver.HRegionServer-">getOtherRegionServer</a></span>(org.apache.hadoop.hbase.regionserver.HRegionServer&nbsp;rs)</code>&nbsp;</td>
 </tr>
-<tr id="i131" class="rowColor">
+<tr id="i132" class="altColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.client.RegionInfo&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRegions-org.apache.hadoop.hbase.TableName-">getRegions</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Returns all regions of the specified table</div>
 </td>
 </tr>
-<tr id="i132" class="altColor">
+<tr id="i133" class="rowColor">
 <td class="colFirst"><code>byte[][]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRegionSplitStartKeys-byte:A-byte:A-int-">getRegionSplitStartKeys</a></span>(byte[]&nbsp;startKey,
                        byte[]&nbsp;endKey,
@@ -1313,59 +1317,65 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Create region split keys between startkey and endKey</div>
 </td>
 </tr>
-<tr id="i133" class="rowColor">
+<tr id="i134" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.HRegionServer</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRSForFirstRegionInTable-org.apache.hadoop.hbase.TableName-">getRSForFirstRegionInTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Tool to get the reference to the region server object that holds the
  region of the specified user table.</div>
 </td>
 </tr>
-<tr id="i134" class="altColor">
+<tr id="i135" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.regionserver.HRegion</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSplittableRegion-org.apache.hadoop.hbase.TableName-int-">getSplittableRegion</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                    int&nbsp;maxAttempts)</code>&nbsp;</td>
 </tr>
-<tr id="i135" class="rowColor">
+<tr id="i136" class="altColor">
 <td class="colFirst"><code>static org.apache.hadoop.hbase.io.compress.Compression.Algorithm[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSupportedCompressionAlgorithms--">getSupportedCompressionAlgorithms</a></span>()</code>
 <div class="block">Get supported compression algorithms.</div>
 </td>
 </tr>
-<tr id="i136" class="altColor">
+<tr id="i137" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.fs.FileSystem</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem--">getTestFileSystem</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i137" class="rowColor">
+<tr id="i138" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isReadShortCircuitOn--">isReadShortCircuitOn</a></span>()</code>
 <div class="block">Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.</div>
 </td>
 </tr>
-<tr id="i138" class="altColor">
+<tr id="i139" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isTargetTable-byte:A-org.apache.hadoop.hbase.Cell-">isTargetTable</a></span>(byte[]&nbsp;inRow,
              org.apache.hadoop.hbase.Cell&nbsp;c)</code>&nbsp;</td>
 </tr>
-<tr id="i139" class="rowColor">
+<tr id="i140" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#killMiniHBaseCluster--">killMiniHBaseCluster</a></span>()</code>
+<div class="block">Abruptly Shutdown HBase mini cluster.</div>
+</td>
+</tr>
+<tr id="i141" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadNumericRows</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
                byte[]&nbsp;f,
                int&nbsp;startRow,
                int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr id="i140" class="altColor">
+<tr id="i142" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRandomRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadRandomRows</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
               byte[]&nbsp;f,
               int&nbsp;rowSize,
               int&nbsp;totalRows)</code>&nbsp;</td>
 </tr>
-<tr id="i141" class="rowColor">
+<tr id="i143" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-">loadRegion</a></span>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
           byte[]&nbsp;f)</code>&nbsp;</td>
 </tr>
-<tr id="i142" class="altColor">
+<tr id="i144" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-boolean-">loadRegion</a></span>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
           byte[]&nbsp;f,
@@ -1373,26 +1383,26 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load region with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i143" class="rowColor">
+<tr id="i145" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.Region-byte:A-">loadRegion</a></span>(org.apache.hadoop.hbase.regionserver.Region&nbsp;r,
           byte[]&nbsp;f)</code>&nbsp;</td>
 </tr>
-<tr id="i144" class="altColor">
+<tr id="i146" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-">loadTable</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
          byte[]&nbsp;f)</code>
 <div class="block">Load table with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i145" class="rowColor">
+<tr id="i147" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-">loadTable</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
          byte[][]&nbsp;f)</code>
 <div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i146" class="altColor">
+<tr id="i148" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-">loadTable</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
          byte[][]&nbsp;f,
@@ -1400,7 +1410,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i147" class="rowColor">
+<tr id="i149" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-boolean-">loadTable</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
          byte[][]&nbsp;f,
@@ -1409,7 +1419,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i148" class="altColor">
+<tr id="i150" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-boolean-">loadTable</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
          byte[]&nbsp;f,
@@ -1417,109 +1427,109 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load table with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i149" class="rowColor">
+<tr id="i151" class="rowColor">
 <td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSAndTagsCombination--">memStoreTSAndTagsCombination</a></span>()</code>
 <div class="block">Create combination of memstoreTS and tags</div>
 </td>
 </tr>
-<tr id="i150" class="altColor">
+<tr id="i152" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSTagsAndOffheapCombination--">memStoreTSTagsAndOffheapCombination</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i151" class="rowColor">
+<tr id="i153" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#modifyTableSync-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.client.TableDescriptor-">modifyTableSync</a></span>(org.apache.hadoop.hbase.client.Admin&nbsp;admin,
                org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc)</code>
 <div class="block">Modify a table, synchronous.</div>
 </td>
 </tr>
-<tr id="i152" class="altColor">
+<tr id="i154" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#moveRegionAndWait-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">moveRegionAndWait</a></span>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;destRegion,
                  org.apache.hadoop.hbase.ServerName&nbsp;destServer)</code>
 <div class="block">Move region to destination server and wait till region is completely moved and online</div>
 </td>
 </tr>
-<tr id="i153" class="rowColor">
+<tr id="i155" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/Waiter.ExplainingPredicate.html" title="interface in org.apache.hadoop.hbase">Waiter.ExplainingPredicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code><

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html
index c62e029..36ceec7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html
@@ -634,7 +634,7 @@
 <span class="sourceLineNo">626</span>    checkClosed();<a name="line.626"></a>
 <span class="sourceLineNo">627</span>    try {<a name="line.627"></a>
 <span class="sourceLineNo">628</span>      if (!isTableEnabled(tableName)) {<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        LOG.debug("Table " + tableName + " not enabled");<a name="line.629"></a>
+<span class="sourceLineNo">629</span>        LOG.debug("Table {} not enabled", tableName);<a name="line.629"></a>
 <span class="sourceLineNo">630</span>        return false;<a name="line.630"></a>
 <span class="sourceLineNo">631</span>      }<a name="line.631"></a>
 <span class="sourceLineNo">632</span>      List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; locations =<a name="line.632"></a>
@@ -645,1411 +645,1407 @@
 <span class="sourceLineNo">637</span>      for (Pair&lt;RegionInfo, ServerName&gt; pair : locations) {<a name="line.637"></a>
 <span class="sourceLineNo">638</span>        RegionInfo info = pair.getFirst();<a name="line.638"></a>
 <span class="sourceLineNo">639</span>        if (pair.getSecond() == null) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          if (LOG.isDebugEnabled()) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>            LOG.debug("Table " + tableName + " has not deployed region " + pair.getFirst()<a name="line.641"></a>
-<span class="sourceLineNo">642</span>                .getEncodedName());<a name="line.642"></a>
-<span class="sourceLineNo">643</span>          }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>          notDeployed++;<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        } else if (splitKeys != null<a name="line.645"></a>
-<span class="sourceLineNo">646</span>            &amp;&amp; !Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>          for (byte[] splitKey : splitKeys) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>            // Just check if the splitkey is available<a name="line.648"></a>
-<span class="sourceLineNo">649</span>            if (Bytes.equals(info.getStartKey(), splitKey)) {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>              regionCount++;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>              break;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>            }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          }<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        } else {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>          // Always empty start row should be counted<a name="line.655"></a>
-<span class="sourceLineNo">656</span>          regionCount++;<a name="line.656"></a>
-<span class="sourceLineNo">657</span>        }<a name="line.657"></a>
-<span class="sourceLineNo">658</span>      }<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      if (notDeployed &gt; 0) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        if (LOG.isDebugEnabled()) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>          LOG.debug("Table " + tableName + " has " + notDeployed + " regions");<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        return false;<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else if (splitKeys != null &amp;&amp; regionCount != splitKeys.length + 1) {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        if (LOG.isDebugEnabled()) {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>          LOG.debug("Table " + tableName + " expected to have " + (splitKeys.length + 1)<a name="line.666"></a>
-<span class="sourceLineNo">667</span>              + " regions, but only " + regionCount + " available");<a name="line.667"></a>
-<span class="sourceLineNo">668</span>        }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        return false;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      } else {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>        if (LOG.isDebugEnabled()) {<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          LOG.debug("Table " + tableName + " should be available");<a name="line.672"></a>
-<span class="sourceLineNo">673</span>        }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>        return true;<a name="line.674"></a>
-<span class="sourceLineNo">675</span>      }<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    } catch (TableNotFoundException tnfe) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>      LOG.warn("Table " + tableName + " not enabled, it is not exists");<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      return false;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    }<a name="line.679"></a>
-<span class="sourceLineNo">680</span>  }<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>  @Override<a name="line.682"></a>
-<span class="sourceLineNo">683</span>  public HRegionLocation locateRegion(final byte[] regionName) throws IOException {<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    RegionLocations locations = locateRegion(RegionInfo.getTable(regionName),<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      RegionInfo.getStartKey(regionName), false, true);<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    return locations == null ? null : locations.getRegionLocation();<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  }<a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>  private boolean isDeadServer(ServerName sn) {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    if (clusterStatusListener == null) {<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      return false;<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    } else {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      return clusterStatusListener.isDeadServer(sn);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    }<a name="line.694"></a>
-<span class="sourceLineNo">695</span>  }<a name="line.695"></a>
-<span class="sourceLineNo">696</span><a name="line.696"></a>
-<span class="sourceLineNo">697</span>  @Override<a name="line.697"></a>
-<span class="sourceLineNo">698</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName) throws IOException {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    return locateRegions(tableName, false, true);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  }<a name="line.700"></a>
-<span class="sourceLineNo">701</span><a name="line.701"></a>
-<span class="sourceLineNo">702</span>  @Override<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName, boolean useCache,<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      boolean offlined) throws IOException {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    List&lt;RegionInfo&gt; regions;<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.706"></a>
-<span class="sourceLineNo">707</span>      regions = Collections.singletonList(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    } else {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      regions = MetaTableAccessor.getTableRegions(this, tableName, !offlined);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    }<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;&gt;();<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    for (RegionInfo regionInfo : regions) {<a name="line.712"></a>
-<span class="sourceLineNo">713</span>      if (!RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.713"></a>
-<span class="sourceLineNo">714</span>        continue;<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      }<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      RegionLocations list = locateRegion(tableName, regionInfo.getStartKey(), useCache, true);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      if (list != null) {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>        for (HRegionLocation loc : list.getRegionLocations()) {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>          if (loc != null) {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>            locations.add(loc);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>          }<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        }<a name="line.722"></a>
-<span class="sourceLineNo">723</span>      }<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    }<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return locations;<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>  @Override<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public HRegionLocation locateRegion(final TableName tableName, final byte[] row)<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      throws IOException {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    RegionLocations locations = locateRegion(tableName, row, true, true);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    return locations == null ? null : locations.getRegionLocation();<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>  @Override<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  public HRegionLocation relocateRegion(final TableName tableName, final byte[] row)<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      throws IOException {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    RegionLocations locations =<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      relocateRegion(tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    return locations == null ? null<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      : locations.getRegionLocation(RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.741"></a>
-<span class="sourceLineNo">742</span>  }<a name="line.742"></a>
-<span class="sourceLineNo">743</span><a name="line.743"></a>
-<span class="sourceLineNo">744</span>  @Override<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public RegionLocations relocateRegion(final TableName tableName,<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      final byte [] row, int replicaId) throws IOException{<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    // Since this is an explicit request not to use any caching, finding<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    // disabled tables should not be desirable.  This will ensure that an exception is thrown when<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    // the first time a disabled table is interacted with.<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    if (!tableName.equals(TableName.META_TABLE_NAME) &amp;&amp; isTableDisabled(tableName)) {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>      throw new TableNotEnabledException(tableName.getNameAsString() + " is disabled.");<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    }<a name="line.752"></a>
-<span class="sourceLineNo">753</span><a name="line.753"></a>
-<span class="sourceLineNo">754</span>    return locateRegion(tableName, row, false, true, replicaId);<a name="line.754"></a>
-<span class="sourceLineNo">755</span>  }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>  @Override<a name="line.757"></a>
-<span class="sourceLineNo">758</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.758"></a>
-<span class="sourceLineNo">759</span>      boolean retry) throws IOException {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    return locateRegion(tableName, row, useCache, retry, RegionReplicaUtil.DEFAULT_REPLICA_ID);<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>  @Override<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      boolean retry, int replicaId) throws IOException {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    checkClosed();<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    if (tableName == null || tableName.getName().length == 0) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      throw new IllegalArgumentException("table name cannot be null or zero length");<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    }<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    if (tableName.equals(TableName.META_TABLE_NAME)) {<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      return locateMeta(tableName, useCache, replicaId);<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    } else {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      // Region not in the cache - have to go to the meta RS<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      return locateRegionInMeta(tableName, row, useCache, retry, replicaId);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    }<a name="line.775"></a>
-<span class="sourceLineNo">776</span>  }<a name="line.776"></a>
-<span class="sourceLineNo">777</span><a name="line.777"></a>
-<span class="sourceLineNo">778</span>  private RegionLocations locateMeta(final TableName tableName,<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      boolean useCache, int replicaId) throws IOException {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    // HBASE-10785: We cache the location of the META itself, so that we are not overloading<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // zookeeper with one request for every region lookup. We cache the META with empty row<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // key in MetaCache.<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    byte[] metaCacheKey = HConstants.EMPTY_START_ROW; // use byte[0] as the row for meta<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    RegionLocations locations = null;<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    if (useCache) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      locations = getCachedLocation(tableName, metaCacheKey);<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        return locations;<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      }<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
-<span class="sourceLineNo">791</span><a name="line.791"></a>
-<span class="sourceLineNo">792</span>    // only one thread should do the lookup.<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    synchronized (metaRegionLock) {<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      // Check the cache again for a hit in case some other thread made the<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      // same query while we were waiting on the lock.<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      if (useCache) {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>        locations = getCachedLocation(tableName, metaCacheKey);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>          return locations;<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>      // Look up from zookeeper<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      locations = get(this.registry.getMetaRegionLocation());<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      if (locations != null) {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>        cacheLocation(tableName, locations);<a name="line.806"></a>
-<span class="sourceLineNo">807</span>      }<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    }<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    return locations;<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  }<a name="line.810"></a>
-<span class="sourceLineNo">811</span><a name="line.811"></a>
-<span class="sourceLineNo">812</span>  /**<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * Search the hbase:meta table for the HRegionLocation info that contains the table and row we're<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * seeking.<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   */<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, boolean useCache,<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      boolean retry, int replicaId) throws IOException {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    // If we are supposed to be using the cache, look in the cache to see if we already have the<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    // region.<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    if (useCache) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      RegionLocations locations = getCachedLocation(tableName, row);<a name="line.821"></a>
-<span class="sourceLineNo">822</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>        return locations;<a name="line.823"></a>
-<span class="sourceLineNo">824</span>      }<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    }<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    // build the key of the meta region we should be looking for.<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    // the extra 9's on the end are necessary to allow "exact" matches<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    // without knowing the precise region names.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    byte[] metaStartKey = RegionInfo.createRegionName(tableName, row, HConstants.NINES, false);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    byte[] metaStopKey =<a name="line.830"></a>
-<span class="sourceLineNo">831</span>      RegionInfo.createRegionName(tableName, HConstants.EMPTY_START_ROW, "", false);<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    Scan s = new Scan().withStartRow(metaStartKey).withStopRow(metaStopKey, true)<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      .addFamily(HConstants.CATALOG_FAMILY).setReversed(true).setCaching(5)<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      .setReadType(ReadType.PREAD);<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    if (this.useMetaReplicas) {<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      s.setConsistency(Consistency.TIMELINE);<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    }<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    int maxAttempts = (retry ? numTries : 1);<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    boolean relocateMeta = false;<a name="line.839"></a>
-<span class="sourceLineNo">840</span>    for (int tries = 0; ; tries++) {<a name="line.840"></a>
-<span class="sourceLineNo">841</span>      if (tries &gt;= maxAttempts) {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>        throw new NoServerForRegionException("Unable to find region for "<a name="line.842"></a>
-<span class="sourceLineNo">843</span>            + Bytes.toStringBinary(row) + " in " + tableName + " after " + tries + " tries.");<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      }<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      if (useCache) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>        RegionLocations locations = getCachedLocation(tableName, row);<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.847"></a>
-<span class="sourceLineNo">848</span>          return locations;<a name="line.848"></a>
-<span class="sourceLineNo">849</span>        }<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      } else {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>        // If we are not supposed to be using the cache, delete any existing cached location<a name="line.851"></a>
-<span class="sourceLineNo">852</span>        // so it won't interfere.<a name="line.852"></a>
-<span class="sourceLineNo">853</span>        // We are only supposed to clean the cache for the specific replicaId<a name="line.853"></a>
-<span class="sourceLineNo">854</span>        metaCache.clearCache(tableName, row, replicaId);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      }<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      // Query the meta region<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      long pauseBase = this.pause;<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      userRegionLock.lock();<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      try {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>        if (useCache) {// re-check cache after get lock<a name="line.860"></a>
-<span class="sourceLineNo">861</span>          RegionLocations locations = getCachedLocation(tableName, row);<a name="line.861"></a>
-<span class="sourceLineNo">862</span>          if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.862"></a>
-<span class="sourceLineNo">863</span>            return locations;<a name="line.863"></a>
-<span class="sourceLineNo">864</span>          }<a name="line.864"></a>
+<span class="sourceLineNo">640</span>          LOG.debug("Table {} has not deployed region {}", tableName,<a name="line.640"></a>
+<span class="sourceLineNo">641</span>              pair.getFirst().getEncodedName());<a name="line.641"></a>
+<span class="sourceLineNo">642</span>          notDeployed++;<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        } else if (splitKeys != null<a name="line.643"></a>
+<span class="sourceLineNo">644</span>            &amp;&amp; !Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>          for (byte[] splitKey : splitKeys) {<a name="line.645"></a>
+<span class="sourceLineNo">646</span>            // Just check if the splitkey is available<a name="line.646"></a>
+<span class="sourceLineNo">647</span>            if (Bytes.equals(info.getStartKey(), splitKey)) {<a name="line.647"></a>
+<span class="sourceLineNo">648</span>              regionCount++;<a name="line.648"></a>
+<span class="sourceLineNo">649</span>              break;<a name="line.649"></a>
+<span class="sourceLineNo">650</span>            }<a name="line.650"></a>
+<span class="sourceLineNo">651</span>          }<a name="line.651"></a>
+<span class="sourceLineNo">652</span>        } else {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>          // Always empty start row should be counted<a name="line.653"></a>
+<span class="sourceLineNo">654</span>          regionCount++;<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        }<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      if (notDeployed &gt; 0) {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>        if (LOG.isDebugEnabled()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>          LOG.debug("Table {} has {} regions not deployed", tableName, notDeployed);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        }<a name="line.660"></a>
+<span class="sourceLineNo">661</span>        return false;<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      } else if (splitKeys != null &amp;&amp; regionCount != splitKeys.length + 1) {<a name="line.662"></a>
+<span class="sourceLineNo">663</span>        if (LOG.isDebugEnabled()) {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>          LOG.debug("Table {} expected to have {} regions, but only {} available", tableName,<a name="line.664"></a>
+<span class="sourceLineNo">665</span>              splitKeys.length + 1, regionCount);<a name="line.665"></a>
+<span class="sourceLineNo">666</span>        }<a name="line.666"></a>
+<span class="sourceLineNo">667</span>        return false;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>      } else {<a name="line.668"></a>
+<span class="sourceLineNo">669</span>        LOG.trace("Table {} should be available", tableName);<a name="line.669"></a>
+<span class="sourceLineNo">670</span>        return true;<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    } catch (TableNotFoundException tnfe) {<a name="line.672"></a>
+<span class="sourceLineNo">673</span>      LOG.warn("Table {} does not exist", tableName);<a name="line.673"></a>
+<span class="sourceLineNo">674</span>      return false;<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
+<span class="sourceLineNo">676</span>  }<a name="line.676"></a>
+<span class="sourceLineNo">677</span><a name="line.677"></a>
+<span class="sourceLineNo">678</span>  @Override<a name="line.678"></a>
+<span class="sourceLineNo">679</span>  public HRegionLocation locateRegion(final byte[] regionName) throws IOException {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    RegionLocations locations = locateRegion(RegionInfo.getTable(regionName),<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      RegionInfo.getStartKey(regionName), false, true);<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    return locations == null ? null : locations.getRegionLocation();<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>  private boolean isDeadServer(ServerName sn) {<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    if (clusterStatusListener == null) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>      return false;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    } else {<a name="line.688"></a>
+<span class="sourceLineNo">689</span>      return clusterStatusListener.isDeadServer(sn);<a name="line.689"></a>
+<span class="sourceLineNo">690</span>    }<a name="line.690"></a>
+<span class="sourceLineNo">691</span>  }<a name="line.691"></a>
+<span class="sourceLineNo">692</span><a name="line.692"></a>
+<span class="sourceLineNo">693</span>  @Override<a name="line.693"></a>
+<span class="sourceLineNo">694</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName) throws IOException {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    return locateRegions(tableName, false, true);<a name="line.695"></a>
+<span class="sourceLineNo">696</span>  }<a name="line.696"></a>
+<span class="sourceLineNo">697</span><a name="line.697"></a>
+<span class="sourceLineNo">698</span>  @Override<a name="line.698"></a>
+<span class="sourceLineNo">699</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName, boolean useCache,<a name="line.699"></a>
+<span class="sourceLineNo">700</span>      boolean offlined) throws IOException {<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    List&lt;RegionInfo&gt; regions;<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      regions = Collections.singletonList(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    } else {<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      regions = MetaTableAccessor.getTableRegions(this, tableName, !offlined);<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    }<a name="line.706"></a>
+<span class="sourceLineNo">707</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;&gt;();<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    for (RegionInfo regionInfo : regions) {<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      if (!RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>        continue;<a name="line.710"></a>
+<span class="sourceLineNo">711</span>      }<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      RegionLocations list = locateRegion(tableName, regionInfo.getStartKey(), useCache, true);<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      if (list != null) {<a name="line.713"></a>
+<span class="sourceLineNo">714</span>        for (HRegionLocation loc : list.getRegionLocations()) {<a name="line.714"></a>
+<span class="sourceLineNo">715</span>          if (loc != null) {<a name="line.715"></a>
+<span class="sourceLineNo">716</span>            locations.add(loc);<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>      }<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    }<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    return locations;<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">723</span><a name="line.723"></a>
+<span class="sourceLineNo">724</span>  @Override<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  public HRegionLocation locateRegion(final TableName tableName, final byte[] row)<a name="line.725"></a>
+<span class="sourceLineNo">726</span>      throws IOException {<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    RegionLocations locations = locateRegion(tableName, row, true, true);<a name="line.727"></a>
+<span class="sourceLineNo">728</span>    return locations == null ? null : locations.getRegionLocation();<a name="line.728"></a>
+<span class="sourceLineNo">729</span>  }<a name="line.729"></a>
+<span class="sourceLineNo">730</span><a name="line.730"></a>
+<span class="sourceLineNo">731</span>  @Override<a name="line.731"></a>
+<span class="sourceLineNo">732</span>  public HRegionLocation relocateRegion(final TableName tableName, final byte[] row)<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      throws IOException {<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    RegionLocations locations =<a name="line.734"></a>
+<span class="sourceLineNo">735</span>      relocateRegion(tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    return locations == null ? null<a name="line.736"></a>
+<span class="sourceLineNo">737</span>      : locations.getRegionLocation(RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>  }<a name="line.738"></a>
+<span class="sourceLineNo">739</span><a name="line.739"></a>
+<span class="sourceLineNo">740</span>  @Override<a name="line.740"></a>
+<span class="sourceLineNo">741</span>  public RegionLocations relocateRegion(final TableName tableName,<a name="line.741"></a>
+<span class="sourceLineNo">742</span>      final byte [] row, int replicaId) throws IOException{<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    // Since this is an explicit request not to use any caching, finding<a name="line.743"></a>
+<span class="sourceLineNo">744</span>    // disabled tables should not be desirable.  This will ensure that an exception is thrown when<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    // the first time a disabled table is interacted with.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    if (!tableName.equals(TableName.META_TABLE_NAME) &amp;&amp; isTableDisabled(tableName)) {<a name="line.746"></a>
+<span class="sourceLineNo">747</span>      throw new TableNotEnabledException(tableName.getNameAsString() + " is disabled.");<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    }<a name="line.748"></a>
+<span class="sourceLineNo">749</span><a name="line.749"></a>
+<span class="sourceLineNo">750</span>    return locateRegion(tableName, row, false, true, replicaId);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>  }<a name="line.751"></a>
+<span class="sourceLineNo">752</span><a name="line.752"></a>
+<span class="sourceLineNo">753</span>  @Override<a name="line.753"></a>
+<span class="sourceLineNo">754</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      boolean retry) throws IOException {<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    return locateRegion(tableName, row, useCache, retry, RegionReplicaUtil.DEFAULT_REPLICA_ID);<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>  @Override<a name="line.759"></a>
+<span class="sourceLineNo">760</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      boolean retry, int replicaId) throws IOException {<a name="line.761"></a>
+<span class="sourceLineNo">762</span>    checkClosed();<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    if (tableName == null || tableName.getName().length == 0) {<a name="line.763"></a>
+<span class="sourceLineNo">764</span>      throw new IllegalArgumentException("table name cannot be null or zero length");<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    }<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    if (tableName.equals(TableName.META_TABLE_NAME)) {<a name="line.766"></a>
+<span class="sourceLineNo">767</span>      return locateMeta(tableName, useCache, replicaId);<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    } else {<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      // Region not in the cache - have to go to the meta RS<a name="line.769"></a>
+<span class="sourceLineNo">770</span>      return locateRegionInMeta(tableName, row, useCache, retry, replicaId);<a name="line.770"></a>
+<span class="sourceLineNo">771</span>    }<a name="line.771"></a>
+<span class="sourceLineNo">772</span>  }<a name="line.772"></a>
+<span class="sourceLineNo">773</span><a name="line.773"></a>
+<span class="sourceLineNo">774</span>  private RegionLocations locateMeta(final TableName tableName,<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      boolean useCache, int replicaId) throws IOException {<a name="line.775"></a>
+<span class="sourceLineNo">776</span>    // HBASE-10785: We cache the location of the META itself, so that we are not overloading<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    // zookeeper with one request for every region lookup. We cache the META with empty row<a name="line.777"></a>
+<span class="sourceLineNo">778</span>    // key in MetaCache.<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    byte[] metaCacheKey = HConstants.EMPTY_START_ROW; // use byte[0] as the row for meta<a name="line.779"></a>
+<span class="sourceLineNo">780</span>    RegionLocations locations = null;<a name="line.780"></a>
+<span class="sourceLineNo">781</span>    if (useCache) {<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      locations = getCachedLocation(tableName, metaCacheKey);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.783"></a>
+<span class="sourceLineNo">784</span>        return locations;<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>    // only one thread should do the lookup.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>    synchronized (metaRegionLock) {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>      // Check the cache again for a hit in case some other thread made the<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      // same query while we were waiting on the lock.<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      if (useCache) {<a name="line.792"></a>
+<span class="sourceLineNo">793</span>        locations = getCachedLocation(tableName, metaCacheKey);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.794"></a>
+<span class="sourceLineNo">795</span>          return locations;<a name="line.795"></a>
+<span class="sourceLineNo">796</span>        }<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      }<a name="line.797"></a>
+<span class="sourceLineNo">798</span><a name="line.798"></a>
+<span class="sourceLineNo">799</span>      // Look up from zookeeper<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      locations = get(this.registry.getMetaRegionLocation());<a name="line.800"></a>
+<span class="sourceLineNo">801</span>      if (locations != null) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span>        cacheLocation(tableName, locations);<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>    return locations;<a name="line.805"></a>
+<span class="sourceLineNo">806</span>  }<a name="line.806"></a>
+<span class="sourceLineNo">807</span><a name="line.807"></a>
+<span class="sourceLineNo">808</span>  /**<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   * Search the hbase:meta table for the HRegionLocation info that contains the table and row we're<a name="line.809"></a>
+<span class="sourceLineNo">810</span>   * seeking.<a name="line.810"></a>
+<span class="sourceLineNo">811</span>   */<a name="line.811"></a>
+<span class="sourceLineNo">812</span>  private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, boolean useCache,<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      boolean retry, int replicaId) throws IOException {<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    // If we are supposed to be using the cache, look in the cache to see if we already have the<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    // region.<a name="line.815"></a>
+<span class="sourceLineNo">816</span>    if (useCache) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>      RegionLocations locations = getCachedLocation(tableName, row);<a name="line.817"></a>
+<span class="sourceLineNo">818</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>        return locations;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    }<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    // build the key of the meta region we should be looking for.<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    // the extra 9's on the end are necessary to allow "exact" matches<a name="line.823"></a>
+<span class="sourceLineNo">824</span>    // without knowing the precise region names.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    byte[] metaStartKey = RegionInfo.createRegionName(tableName, row, HConstants.NINES, false);<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    byte[] metaStopKey =<a name="line.826"></a>
+<span class="sourceLineNo">827</span>      RegionInfo.createRegionName(tableName, HConstants.EMPTY_START_ROW, "", false);<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    Scan s = new Scan().withStartRow(metaStartKey).withStopRow(metaStopKey, true)<a name="line.828"></a>
+<span class="sourceLineNo">829</span>      .addFamily(HConstants.CATALOG_FAMILY).setReversed(true).setCaching(5)<a name="line.829"></a>
+<span class="sourceLineNo">830</span>      .setReadType(ReadType.PREAD);<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    if (this.useMetaReplicas) {<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      s.setConsistency(Consistency.TIMELINE);<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    }<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    int maxAttempts = (retry ? numTries : 1);<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    boolean relocateMeta = false;<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    for (int tries = 0; ; tries++) {<a name="line.836"></a>
+<span class="sourceLineNo">837</span>      if (tries &gt;= maxAttempts) {<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        throw new NoServerForRegionException("Unable to find region for "<a name="line.838"></a>
+<span class="sourceLineNo">839</span>            + Bytes.toStringBinary(row) + " in " + tableName + " after " + tries + " tries.");<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      }<a name="line.840"></a>
+<span class="sourceLineNo">841</span>      if (useCache) {<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        RegionLocations locations = getCachedLocation(tableName, row);<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.843"></a>
+<span class="sourceLineNo">844</span>          return locations;<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        }<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      } else {<a name="line.846"></a>
+<span class="sourceLineNo">847</span>        // If we are not supposed to be using the cache, delete any existing cached location<a name="line.847"></a>
+<span class="sourceLineNo">848</span>        // so it won't interfere.<a name="line.848"></a>
+<span class="sourceLineNo">849</span>        // We are only supposed to clean the cache for the specific replicaId<a name="line.849"></a>
+<span class="sourceLineNo">850</span>        metaCache.clearCache(tableName, row, replicaId);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
+<span class="sourceLineNo">852</span>      // Query the meta region<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      long pauseBase = this.pause;<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      userRegionLock.lock();<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      try {<a name="line.855"></a>
+<span class="sourceLineNo">856</span>        if (useCache) {// re-check cache after get lock<a name="line.856"></a>
+<span class="sourceLineNo">857</span>          RegionLocations locations = getCachedLocation(tableName, row);<a name="line.857"></a>
+<span class="sourceLineNo">858</span>          if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.858"></a>
+<span class="sourceLineNo">859</span>            return locations;<a name="line.859"></a>
+<span class="sourceLineNo">860</span>          }<a name="line.860"></a>
+<span class="sourceLineNo">861</span>        }<a name="line.861"></a>
+<span class="sourceLineNo">862</span>        if (relocateMeta) {<a name="line.862"></a>
+<span class="sourceLineNo">863</span>          relocateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.863"></a>
+<span class="sourceLineNo">864</span>            RegionInfo.DEFAULT_REPLICA_ID);<a name="line.864"></a>
 <span class="sourceLineNo">865</span>        }<a name="line.865"></a>
-<span class="sourceLineNo">866</span>        if (relocateMeta) {<a name="line.866"></a>
-<span class="sourceLineNo">867</span>          relocateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.867"></a>
-<span class="sourceLineNo">868</span>            RegionInfo.DEFAULT_REPLICA_ID);<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>        s.resetMvccReadPoint();<a name="line.870"></a>
-<span class="sourceLineNo">871</span>        try (ReversedClientScanner rcs =<a name="line.871"></a>
-<span class="sourceLineNo">872</span>          new ReversedClientScanner(conf, s, TableName.META_TABLE_NAME, this, rpcCallerFactory,<a name="line.872"></a>
-<span class="sourceLineNo">873</span>            rpcControllerFactory, getMetaLookupPool(), metaReplicaCallTimeoutScanInMicroSecond)) {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>          boolean tableNotFound = true;<a name="line.874"></a>
-<span class="sourceLineNo">875</span>          for (;;) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>            Result regionInfoRow = rcs.next();<a name="line.876"></a>
-<span class="sourceLineNo">877</span>            if (regionInfoRow == null) {<a name="line.877"></a>
-<span class="sourceLineNo">878</span>              if (tableNotFound) {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>                throw new TableNotFoundException(tableName);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>              } else {<a name="line.880"></a>
-<span class="sourceLineNo">881</span>                throw new IOException(<a name="line.881"></a>
-<span class="sourceLineNo">882</span>                  "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>              }<a name="line.883"></a>
-<span class="sourceLineNo">884</span>            }<a name="line.884"></a>
-<span class="sourceLineNo">885</span>            tableNotFound = false;<a name="line.885"></a>
-<span class="sourceLineNo">886</span>            // convert the row result into the HRegionLocation we need!<a name="line.886"></a>
-<span class="sourceLineNo">887</span>            RegionLocations locations = MetaTableAccessor.getRegionLocations(regionInfoRow);<a name="line.887"></a>
-<span class="sourceLineNo">888</span>            if (locations == null || locations.getRegionLocation(replicaId) == null) {<a name="line.888"></a>
-<span class="sourceLineNo">889</span>              throw new IOException("RegionInfo null in " + tableName + ", row=" + regionInfoRow);<a name="line.889"></a>
-<span class="sourceLineNo">890</span>            }<a name="line.890"></a>
-<span class="sourceLineNo">891</span>            RegionInfo regionInfo = locations.getRegionLocation(replicaId).getRegion();<a name="line.891"></a>
-<span class="sourceLineNo">892</span>            if (regionInfo == null) {<a name="line.892"></a>
-<span class="sourceLineNo">893</span>              throw new IOException("RegionInfo null or empty in " + TableName.META_TABLE_NAME +<a name="line.893"></a>
-<span class="sourceLineNo">894</span>                ", row=" + regionInfoRow);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>            }<a name="line.895"></a>
-<span class="sourceLineNo">896</span>            // See HBASE-20182. It is possible that we locate to a split parent even after the<a name="line.896"></a>
-<span class="sourceLineNo">897</span>            // children are online, so here we need to skip this region and go to the next one.<a name="line.897"></a>
-<span class="sourceLineNo">898</span>            if (regionInfo.isSplitParent()) {<a name="line.898"></a>
-<span class="sourceLineNo">899</span>              continue;<a name="line.899"></a>
+<span class="sourceLineNo">866</span>        s.resetMvccReadPoint();<a name="line.866"></a>
+<span class="sourceLineNo">867</span>        try (ReversedClientScanner rcs =<a name="line.867"></a>
+<span class="sourceLineNo">868</span>          new ReversedClientScanner(conf, s, TableName.META_TABLE_NAME, this, rpcCallerFactory,<a name="line.868"></a>
+<span class="sourceLineNo">869</span>            rpcControllerFactory, getMetaLookupPool(), metaReplicaCallTimeoutScanInMicroSecond)) {<a name="line.869"></a>
+<span class="sourceLineNo">870</span>          boolean tableNotFound = true;<a name="line.870"></a>
+<span class="sourceLineNo">871</span>          for (;;) {<a name="line.871"></a>
+<span class="sourceLineNo">872</span>            Result regionInfoRow = rcs.next();<a name="line.872"></a>
+<span class="sourceLineNo">873</span>            if (regionInfoRow == null) {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>              if (tableNotFound) {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>                throw new TableNotFoundException(tableName);<a name="line.875"></a>
+<span class="sourceLineNo">876</span>              } else {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>                throw new IOException(<a name="line.877"></a>
+<span class="sourceLineNo">878</span>                  "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.878"></a>
+<span class="sourceLineNo">879</span>              }<a name="line.879"></a>
+<span class="sourceLineNo">880</span>            }<a name="line.880"></a>
+<span class="sourceLineNo">881</span>            tableNotFound = false;<a name="line.881"></a>
+<span class="sourceLineNo">882</span>            // convert the row result into the HRegionLocation we need!<a name="line.882"></a>
+<span class="sourceLineNo">883</span>            RegionLocations locations = MetaTableAccessor.getRegionLocations(regionInfoRow);<a name="line.883"></a>
+<span class="sourceLineNo">884</span>            if (locations == null || locations.getRegionLocation(replicaId) == null) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>              throw new IOException("RegionInfo null in " + tableName + ", row=" + regionInfoRow);<a name="line.885"></a>
+<span class="sourceLineNo">886</span>            }<a name="line.886"></a>
+<span class="sourceLineNo">887</span>            RegionInfo regionInfo = locations.getRegionLocation(replicaId).getRegion();<a name="line.887"></a>
+<span class="sourceLineNo">888</span>            if (regionInfo == null) {<a name="line.888"></a>
+<span class="sourceLineNo">889</span>              throw new IOException("RegionInfo null or empty in " + TableName.META_TABLE_NAME +<a name="line.889"></a>
+<span class="sourceLineNo">890</span>                ", row=" + regionInfoRow);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>            }<a name="line.891"></a>
+<span class="sourceLineNo">892</span>            // See HBASE-20182. It is possible that we locate to a split parent even after the<a name="line.892"></a>
+<span class="sourceLineNo">893</span>            // children are online, so here we need to skip this region and go to the next one.<a name="line.893"></a>
+<span class="sourceLineNo">894</span>            if (regionInfo.isSplitParent()) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>              continue;<a name="line.895"></a>
+<span class="sourceLineNo">896</span>            }<a name="line.896"></a>
+<span class="sourceLineNo">897</span>            if (regionInfo.isOffline()) {<a name="line.897"></a>
+<span class="sourceLineNo">898</span>              throw new RegionOfflineException("Region offline; disable table call? " +<a name="line.898"></a>
+<span class="sourceLineNo">899</span>                  regionInfo.getRegionNameAsString());<a name="line.899"></a>
 <span class="sourceLineNo">900</span>            }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>            if (regionInfo.isOffline()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>              throw new RegionOfflineException("Region offline; disable table call? " +<a name="line.902"></a>
-<span class="sourceLineNo">903</span>                  regionInfo.getRegionNameAsString());<a name="line.903"></a>
-<span class="sourceLineNo">904</span>            }<a name="line.904"></a>
-<span class="sourceLineNo">905</span>            // It is possible that the split children have not been online yet and we have skipped<a name="line.905"></a>
-<span class="sourceLineNo">906</span>            // the parent in the above condition, so we may have already reached a region which does<a name="line.906"></a>
-<span class="sourceLineNo">907</span>            // not contains us.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>            if (!regionInfo.containsRow(row)) {<a name="line.908"></a>
-<span class="sourceLineNo">909</span>              throw new IOException(<a name="line.909"></a>
-<span class="sourceLineNo">910</span>                "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.910"></a>
-<span class="sourceLineNo">911</span>            }<a name="line.911"></a>
-<span class="sourceLineNo">912</span>            ServerName serverName = locations.getRegionLocation(replicaId).getServerName();<a name="line.912"></a>
-<span class="sourceLineNo">913</span>            if (serverName == null) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>              throw new NoServerForRegionException("No server address listed in " +<a name="line.914"></a>
-<span class="sourceLineNo">915</span>                TableName.META_TABLE_NAME + " for region " + regionInfo.getRegionNameAsString() +<a name="line.915"></a>
-<span class="sourceLineNo">916</span>                " containing row " + Bytes.toStringBinary(row));<a name="line.916"></a>
-<span class="sourceLineNo">917</span>            }<a name="line.917"></a>
-<span class="sourceLineNo">918</span>            if (isDeadServer(serverName)) {<a name="line.918"></a>
-<span class="sourceLineNo">919</span>              throw new RegionServerStoppedException(<a name="line.919"></a>
-<span class="sourceLineNo">920</span>                "hbase:meta says the region " + regionInfo.getRegionNameAsString() +<a name="line.920"></a>
-<span class="sourceLineNo">921</span>                  " is managed by the server " + serverName + ", but it is dead.");<a name="line.921"></a>
-<span class="sourceLineNo">922</span>            }<a name="line.922"></a>
-<span class="sourceLineNo">923</span>            // Instantiate the location<a name="line.923"></a>
-<span class="sourceLineNo">924</span>            cacheLocation(tableName, locations);<a name="line.924"></a>
-<span class="sourceLineNo">925</span>            return locations;<a name="line.925"></a>
-<span class="sourceLineNo">926</span>          }<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        }<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      } catch (TableNotFoundException e) {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>        // if we got this error, probably means the table just plain doesn't<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // exist. rethrow the error immediately. this should always be coming<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        // from the HTable constructor.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>        throw e;<a name="line.932"></a>
-<span class="sourceLineNo">933</span>      } catch (IOException e) {<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        ExceptionUtil.rethrowIfInterrupt(e);<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        if (e instanceof RemoteException) {<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          e = ((RemoteException)e).unwrapRemoteException();<a name="line.936"></a>
+<span class="sourceLineNo">901</span>            // It is possible that the split children have not been online yet and we have skipped<a name="line.901"></a>
+<span class="sourceLineNo">902</span>            // the parent in the above condition, so we may have already reached a region which does<a name="line.902"></a>
+<span class="sourceLineNo">903</span>            // not contains us.<a name="line.903"></a>
+<span class="sourceLineNo">904</span>            if (!regionInfo.containsRow(row)) {<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              throw new IOException(<a name="line.905"></a>
+<span class="sourceLineNo">906</span>                "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.906"></a>
+<span class="sourceLineNo">907</span>            }<a name="line.907"></a>
+<span class="sourceLineNo">908</span>            ServerName serverName = locations.getRegionLocation(replicaId).getServerName();<a name="line.908"></a>
+<span class="sourceLineNo">909</span>            if (serverName == null) {<a name="line.909"></a>
+<span class="sourceLineNo">910</span>              throw new NoServerForRegionException("No server address listed in " +<a name="line.910"></a>
+<span class="sourceLineNo">911</span>                TableName.META_TABLE_NAME + " for region " + regionInfo.getRegionNameAsString() +<a name="line.911"></a>
+<span class="sourceLineNo">912</span>                " containing row " + Bytes.toStringBinary(row));<a name="line.912"></a>
+<span class="sourceLineNo">913</span>            }<a name="line.913"></a>
+<span class="sourceLineNo">914</span>            if (isDeadServer(serverName)) {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>              throw new RegionServerStoppedException(<a name="line.915"></a>
+<span class="sourceLineNo">916</span>                "hbase:meta says the region " + regionInfo.getRegionNameAsString() +<a name="line.916"></a>
+<span class="sourceLineNo">917</span>                  " is managed by the server " + serverName + ", but it is dead.");<a name="line.917"></a>
+<span class="sourceLineNo">918</span>            }<a name="line.918"></a>
+<span class="sourceLineNo">919</span>            // Instantiate the location<a name="line.919"></a>
+<span class="sourceLineNo">920</span>            cacheLocation(tableName, locations);<a name="line.920"></a>
+<span class="sourceLineNo">921</span>            return locations;<a name="line.921"></a>
+<span class="sourceLineNo">922</span>          }<a name="line.922"></a>
+<span class="sourceLineNo">923</span>        }<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      } catch (TableNotFoundException e) {<a name="line.924"></a>
+<span class="sourceLineNo">925</span>        // if we got this error, probably means the table just plain doesn't<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        // exist. rethrow the error immediately. this should always be coming<a name="line.926"></a>
+<span class="sourceLineNo">927</span>        // from the HTable constructor.<a name="line.927"></a>
+<span class="sourceLineNo">928</span>        throw e;<a name="line.928"></a>
+<span class="sourceLineNo">929</span>      } catch (IOException e) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>        ExceptionUtil.rethrowIfInterrupt(e);<a name="line.930"></a>
+<span class="sourceLineNo">931</span>        if (e instanceof RemoteException) {<a name="line.931"></a>
+<span class="sourceLineNo">932</span>          e = ((RemoteException)e).unwrapRemoteException();<a name="line.932"></a>
+<span class="sourceLineNo">933</span>        }<a name="line.933"></a>
+<span class="sourceLineNo">934</span>        if (e instanceof CallQueueTooBigException) {<a name="line.934"></a>
+<span class="sourceLineNo">935</span>          // Give a special check on CallQueueTooBigException, see #HBASE-17114<a name="line.935"></a>
+<span class="sourceLineNo">936</span>          pauseBase = this.pauseForCQTBE;<a name="line.936"></a>
 <span class="sourceLineNo">937</span>        }<a name="line.937"></a>
-<span class="sourceLineNo">938</span>        if (e instanceof CallQueueTooBigException) {<a name="line.938"></a>
-<span class="sourceLineNo">939</span>          // Give a special check on CallQueueTooBigException, see #HBASE-17114<a name="line.939"></a>
-<span class="sourceLineNo">940</span>          pauseBase = this.pauseForCQTBE;<a name="line.940"></a>
-<span class="sourceLineNo">941</span>        }<a name="line.941"></a>
-<span class="sourceLineNo">942</span>        if (tries &lt; maxAttempts - 1) {<a name="line.942"></a>
-<span class="sourceLineNo">943</span>          LOG.debug("locateRegionInMeta parentTable='{}', attempt={} of {} failed; retrying " +<a name="line.943"></a>
-<span class="sourceLineNo">944</span>            "after sleep of {}", TableName.META_TABLE_NAME, tries, maxAttempts, maxAttempts, e);<a name="line.944"></a>
-<span class="sourceLineNo">945</span>        } else {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>          throw e;<a name="line.946"></a>
-<span class="sourceLineNo">947</span>        }<a name="line.947"></a>
-<span class="sourceLineNo">948</span>        // Only relocate the parent region if necessary<a name="line.948"></a>
-<span class="sourceLineNo">949</span>        relocateMeta =<a name="line.949"></a>
-<span class="sourceLineNo">950</span>          !(e instanceof RegionOfflineException || e instanceof NoServerForRegionException);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>      } finally {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>        userRegionLock.unlock();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      try{<a name="line.954"></a>
-<span class="sourceLineNo">955</span>        Thread.sleep(ConnectionUtils.getPauseTime(pauseBase, tries));<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      } catch (InterruptedException e) {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>        throw new InterruptedIOException("Giving up trying to location region in " +<a name="line.957"></a>
-<span class="sourceLineNo">958</span>          "meta: thread is interrupted.");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span>    }<a name="line.960"></a>
-<span class="sourceLineNo">961</span>  }<a name="line.961"></a>
-<span class="sourceLineNo">962</span><a name="line.962"></a>
-<span class="sourceLineNo">963</span>  /**<a name="line.963"></a>
-<span class="sourceLineNo">964</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.964"></a>
-<span class="sourceLineNo">965</span>   * @param tableName The table name.<a name="line.965"></a>
-<span class="sourceLineNo">966</span>   * @param location the new location<a name="line.966"></a>
-<span class="sourceLineNo">967</span>   */<a name="line.967"></a>
-<span class="sourceLineNo">968</span>  @Override<a name="line.968"></a>
-<span class="sourceLineNo">969</span>  public void cacheLocation(final TableName tableName, final RegionLocations location) {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    metaCache.cacheLocation(tableName, location);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Search the cache for a location that fits our table and row key.<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * Return null if no suitable region is located.<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return Null or region location found in cache.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  RegionLocations getCachedLocation(final TableName tableName,<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      final byte [] row) {<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    return metaCache.getCachedLocation(tableName, row);<a name="line.980"></a>
+<span class="sourceLineNo">938</span>        if (tries &lt; maxAttempts - 1) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>          LOG.debug("locateRegionInMeta parentTable='{}', attempt={} of {} failed; retrying " +<a name="line.939"></a>
+<span class="sourceLineNo">940</span>            "after sleep of {}", TableName.META_TABLE_NAME, tries, maxAttempts, maxAttempts, e);<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        } else {<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          throw e;<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        }<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Only relocate the parent region if necessary<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        relocateMeta =<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          !(e instanceof RegionOfflineException || e instanceof NoServerForRegionException);<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      } finally {<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        userRegionLock.unlock();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      }<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try{<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        Thread.sleep(ConnectionUtils.getPauseTime(pauseBase, tries));<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (InterruptedException e) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        throw new InterruptedIOException("Giving up trying to location region in " +<a name="line.953"></a>
+<span class="sourceLineNo">954</span>          "meta: thread is interrupted.");<a name="line.954"></a>
+<span class="sourceLineNo">955</span>      }<a name="line.955"></a>
+<span class="sourceLineNo">956</span>    }<a name="line.956"></a>
+<span class="sourceLineNo">957</span>  }<a name="line.957"></a>
+<span class="sourceLineNo">958</span><a name="line.958"></a>
+<span class="sourceLineNo">959</span>  /**<a name="line.959"></a>
+<span class="sourceLineNo">960</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.960"></a>
+<span class="sourceLineNo">961</span>   * @param tableName The table name.<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   * @param location the new location<a name="line.962"></a>
+<span class="sourceLineNo">963</span>   */<a name="line.963"></a>
+<span class="sourceLineNo">964</span>  @Override<a name="line.964"></a>
+<span class="sourceLineNo">965</span>  public void cacheLocation(final TableName tableName, final RegionLocations location) {<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    metaCache.cacheLocation(tableName, location);<a name="line.966"></a>
+<span class="sourceLineNo">967</span>  }<a name="line.967"></a>
+<span class="sourceLineNo">968</span><a name="line.968"></a>
+<span class="sourceLineNo">969</span>  /**<a name="line.969"></a>
+<span class="sourceLineNo">970</span>   * Search the cache for a location that fits our table and row key.<a name="line.970"></a>
+<span class="sourceLineNo">971</span>   * Return null if no suitable region is located.<a name="line.971"></a>
+<span class="sourceLineNo">972</span>   * @return Null or region location found in cache.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>   */<a name="line.973"></a>
+<span class="sourceLineNo">974</span>  RegionLocations getCachedLocation(final TableName tableName,<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      final byte [] row) {<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    return metaCache.getCachedLocation(tableName, row);<a name="line.976"></a>
+<span class="sourceLineNo">977</span>  }<a name="line.977"></a>
+<span class="sourceLineNo">978</span><a name="line.978"></a>
+<span class="sourceLineNo">979</span>  public void clearRegionCache(final TableName tableName, byte[] row) {<a name="line.979"></a>
+<span class="sourceLineNo">980</span>    metaCache.clearCache(tableName, row);<a name="line.980"></a>
 <span class="sourceLineNo">981</span>  }<a name="line.981"></a>
 <span class="sourceLineNo">982</span><a name="line.982"></a>
-<span class="sourceLineNo">983</span>  public void clearRegionCache(final TableName tableName, byte[] row) {<a name="line.983"></a>
-<span class="sourceLineNo">984</span>    metaCache.clearCache(tableName, row);<a name="line.984"></a>
-<span class="sourceLineNo">985</span>  }<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>  /*<a name="line.987"></a>
-<span class="sourceLineNo">988</span>   * Delete all cached entries of a table that maps to a specific location.<a name="line.988"></a>
-<span class="sourceLineNo">989</span>   */<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  @Override<a name="line.990"></a>
-<span class="sourceLineNo">991</span>  public void clearCaches(final ServerName serverName) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    metaCache.clearCache(serverName);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>  }<a name="line.993"></a>
-<span class="sourceLineNo">994</span><a name="line.994"></a>
-<span class="sourceLineNo">995</span>  @Override<a name="line.995"></a>
-<span class="sourceLineNo">996</span>  public void clearRegionCache() {<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    metaCache.clearCache();<a name="line.997"></a>
-<span class="sourceLineNo">998</span>  }<a name="line.998"></a>
-<span class="sourceLineNo">999</span><a name="line.999"></a>
-<span class="sourceLineNo">1000</span>  @Override<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public void clearRegionCache(final TableName tableName) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    metaCache.clearCache(tableName);<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  }<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span><a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>  /**<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   * @param tableName The table name.<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   * @param source the source of the new location, if it's not coming from meta<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>   * @param location the new location<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>   */<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>  private void cacheLocation(final TableName tableName, final ServerName source,<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      final HRegionLocation location) {<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    metaCache.cacheLocation(tableName, source, location);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  // Map keyed by service name + regionserver to service stub implementation<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  private final ConcurrentMap&lt;String, Object&gt; stubs = new ConcurrentHashMap&lt;&gt;();<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span><a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>  /**<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * State of the MasterService connection/setup.<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   */<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>  static class MasterServiceState {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    Connection connection;<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    MasterProtos.MasterService.BlockingInterface stub;<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>    int userCount;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span><a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>    MasterServiceState(final Connection connection) {<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>      super();<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      this.connection = connection;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span><a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    @Override<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>    public String toString() {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>      return "MasterService";<a name="line.1035"></a>
+<span class="sourceLineNo">983</span>  /*<a name="line.983"></a>
+<span class="sourceLineNo">984</span>   * Delete all cached entries of a table that maps to a specific location.<a name="line.984"></a>
+<span class="sourceLineNo">985</span>   */<a name="line.985"></a>
+<span class="sourceLineNo">986</span>  @Override<a name="line.986"></a>
+<span class="sourceLineNo">987</span>  public void clearCaches(final ServerName serverName) {<a name="line.987"></a>
+<span class="sourceLineNo">988</span>    metaCache.clearCache(serverName);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
+<span class="sourceLineNo">990</span><a name="line.990"></a>
+<span class="sourceLineNo">991</span>  @Override<a name="line.991"></a>
+<span class="sourceLineNo">992</span>  public void clearRegionCache() {<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    metaCache.clearCache();<a name="line.993"></a>
+<span class="sourceLineNo">994</span>  }<a name="line.994"></a>
+<span class="sourceLineNo">995</span><a name="line.995"></a>
+<span class="sourceLineNo">996</span>  @Override<a name="line.996"></a>
+<span class="sourceLineNo">997</span>  public void clearRegionCache(final TableName tableName) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>    metaCache.clearCache(tableName);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>  }<a name="line.999"></a>
+<span class="sourceLineNo">1000</span><a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>  /**<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>   * @param tableName The table name.<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>   * @param source the source of the new location, if it's not coming from meta<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>   * @param location the new location<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>   */<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>  private void cacheLocation(final TableName tableName, final ServerName source,<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>      final HRegionLocation location) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>    metaCache.cacheLocation(tableName, source, location);<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>  }<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span><a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>  // Map keyed by service name + regionserver to service stub implementation<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>  private final ConcurrentMap&lt;String, Object&gt; stubs = new ConcurrentHashMap&lt;&gt;();<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span><a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>  /**<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>   * State of the MasterService connection/setup.<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>   */<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  static class MasterServiceState {<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>    Connection connection;<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span><a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>    MasterProtos.MasterService.BlockingInterface stub;<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    int userCount;<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span><a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>    MasterServiceState(final Connection connection) {<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>      super();<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      this.connection = connection;<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    }<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span><a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    @Override<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    public String toString() {<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>      return "MasterService";<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    }<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span><a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>    Object getStub() {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>      return this.stub;<a name="line.1035"></a>
 <span class="sourceLineNo">1036</span>    }<a name="line.1036"></a>
 <span class="sourceLineNo">1037</span><a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    Object getStub() {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>      return this.stub;<a name="line.1039"></a>
+<span class="sourceLineNo">1038</span>    void clearStub() {<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      this.stub = null;<a name="line.1039"></a>
 <span class="sourceLineNo">1040</span>    }<a name="line.1040"></a>
 <span class="sourceLineNo">1041</span><a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    void clearStub() {<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>      this.stub = null;<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>    }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span><a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>    boolean isMasterRunning() throws IOException {<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>      MasterProtos.IsMasterRunningResponse response = null;<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>      try {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>        response = this.stub.isMasterRunning(null, RequestConverter.buildIsMasterRunningRequest());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>      } catch (Exception e) {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>        throw ProtobufUtil.handleRemoteException(e);<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>      }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>      return response != null? response.getIsMasterRunning(): false;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    }<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>  }<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span><a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>  /**<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>   * The record of errors for servers.<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>   */<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  static class ServerErrorTracker {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>    // We need a concurrent map here, as we could have multiple threads updating it in parallel.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>    private final ConcurrentMap&lt;ServerName, ServerErrors&gt; errorsByServer = new ConcurrentHashMap&lt;&gt;();<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>    private final long canRetryUntil;<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>    private final int maxTries;// max number to try<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    private final long startTrackingTime;<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span><a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    /**<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>     * Constructor<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>     * @param timeout how long to wait before timeout, in unit of millisecond<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>     * @param maxTries how many times to try<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>     */<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>    public ServerErrorTracker(long timeout, int maxTries) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      this.maxTries = maxTries;<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>      this.canRetryUntil = EnvironmentEdgeManager.currentTime() + timeout;<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      this.startTrackingTime = new Date().getTime();<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span><a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    /**<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>     * We stop to retry when we have exhausted BOTH the number of tries and the time allocated.<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>     * @param numAttempt how many times we have tried by now<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>     */<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    boolean canTryMore(int numAttempt) {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>      // If there is a single try we must not take into account the time.<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      return numAttempt &lt; maxTries || (maxTries &gt; 1 &amp;&amp;<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>          EnvironmentEdgeManager.currentTime() &lt; this.canRetryUntil);<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    }<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span><a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    /**<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>     * Calculates the back-off time for a retrying request to a particular server.<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>     *<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>     * @param server    The server in question.<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>     * @param basePause The default hci pause.<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>     * @return The time to wait before sending next request.<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>     */<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    long calculateBackoffTime(ServerName server, long basePause) {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      long result;<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      ServerErrors errorStats = errorsByServer.get(server);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>      if (errorStats != null) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>        result = ConnectionUtils.getPauseTime(basePause, Math.max(0, errorStats.getCount() - 1));<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      } else {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        result = 0; // yes, if the server is not in our list we don't wait before retrying.<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      return result;<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    }<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span><a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>    /**<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>     * Reports that there was an error on the server to do whatever bean-counting necessary.<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>     * @param server The server in question.<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>     */<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>    void reportServerError(ServerName server) {<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>      computeIfAbsent(errorsByServer, server, ServerErrors::new).addError();<a name="line.1111"></a>
+<span class="sourceLineNo">1042</span>    boolean isMasterRunning() throws IOException {<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>      MasterProtos.IsMasterRunningResponse response = null;<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>      try {<a name="line.104

<TRUNCATED>

[21/26] hbase-site git commit: Published site at dfeab9f5c968625ac1c642c53c721eb5e81068c0.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/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 981ebcd..b8c030f 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
@@ -237,1811 +237,1817 @@
 <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>  private void waitForSystemTable(Admin admin, TableName tableName) throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    long TIMEOUT = 60000;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    long startTime = EnvironmentEdgeManager.currentTime();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    while (!admin.tableExists(tableName) || !admin.isTableAvailable(tableName)) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      try {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        Thread.sleep(100);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      } catch (InterruptedException e) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      if (EnvironmentEdgeManager.currentTime() - startTime &gt; TIMEOUT) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        throw new IOException(<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          "Failed to create backup system table " + tableName + " after " + TIMEOUT + "ms");<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    LOG.debug("Backup table " + tableName + " exists and available");<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>  @Override<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  public void close() {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // do nothing<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>  /**<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * Updates status (state) of a backup session in backup system table table<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param info backup info<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @throws IOException exception<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public void updateBackupInfo(BackupInfo info) throws IOException {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    if (LOG.isTraceEnabled()) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      LOG.trace("update backup status in backup system table for: " + info.getBackupId()<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        + " set status=" + info.getState());<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    try (Table table = connection.getTable(tableName)) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      Put put = createPutForBackupInfo(info);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      table.put(put);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>  /*<a name="line.268"></a>
-<span class="sourceLineNo">269</span>   * @param backupId the backup Id<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * @return Map of rows to path of bulk loaded hfile<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   */<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  Map&lt;byte[], String&gt; readBulkLoadedFiles(String backupId) throws IOException {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    Scan scan = BackupSystemTable.createScanForBulkLoadedFiles(backupId);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    try (Table table = connection.getTable(bulkLoadTableName);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      Result res = null;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      Map&lt;byte[], String&gt; map = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      while ((res = scanner.next()) != null) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        res.advance();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        byte[] row = CellUtil.cloneRow(res.listCells().get(0));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        for (Cell cell : res.listCells()) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.282"></a>
-<span class="sourceLineNo">283</span>            BackupSystemTable.PATH_COL.length) == 0) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>            map.put(row, Bytes.toString(CellUtil.cloneValue(cell)));<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>      return map;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>  /*<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * Used during restore<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * @param backupId the backup Id<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param sTableList List of tables<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @return array of Map of family to List of Paths<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   */<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public Map&lt;byte[], List&lt;Path&gt;&gt;[] readBulkLoadedFiles(String backupId, List&lt;TableName&gt; sTableList)<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      throws IOException {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    Scan scan = BackupSystemTable.createScanForBulkLoadedFiles(backupId);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Map&lt;byte[], List&lt;Path&gt;&gt;[] mapForSrc = new Map[sTableList == null ? 1 : sTableList.size()];<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    try (Table table = connection.getTable(bulkLoadTableName);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      Result res = null;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      while ((res = scanner.next()) != null) {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        res.advance();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        TableName tbl = null;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        byte[] fam = null;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        String path = null;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        for (Cell cell : res.listCells()) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>          if (CellUtil.compareQualifiers(cell, BackupSystemTable.TBL_COL, 0,<a name="line.311"></a>
-<span class="sourceLineNo">312</span>            BackupSystemTable.TBL_COL.length) == 0) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>            tbl = TableName.valueOf(CellUtil.cloneValue(cell));<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.FAM_COL, 0,<a name="line.314"></a>
-<span class="sourceLineNo">315</span>            BackupSystemTable.FAM_COL.length) == 0) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>            fam = CellUtil.cloneValue(cell);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>          } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.317"></a>
-<span class="sourceLineNo">318</span>            BackupSystemTable.PATH_COL.length) == 0) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>            path = Bytes.toString(CellUtil.cloneValue(cell));<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>        int srcIdx = IncrementalTableBackupClient.getIndex(tbl, sTableList);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        if (srcIdx == -1) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          // the table is not among the query<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          continue;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        }<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        if (mapForSrc[srcIdx] == null) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>          mapForSrc[srcIdx] = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        }<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        List&lt;Path&gt; files;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        if (!mapForSrc[srcIdx].containsKey(fam)) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          files = new ArrayList&lt;Path&gt;();<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          mapForSrc[srcIdx].put(fam, files);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        } else {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          files = mapForSrc[srcIdx].get(fam);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        }<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        files.add(new Path(path));<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        if (LOG.isDebugEnabled()) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          LOG.debug("found bulk loaded file : " + tbl + " " + Bytes.toString(fam) + " " + path);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      }<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>      return mapForSrc;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>  /**<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   * Deletes backup status from backup system table table<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   * @param backupId backup id<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * @throws IOException exception<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  public void deleteBackupInfo(String backupId) throws IOException {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    if (LOG.isTraceEnabled()) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      LOG.trace("delete backup status in backup system table for " + backupId);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    try (Table table = connection.getTable(tableName)) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      Delete del = createDeleteForBackupInfo(backupId);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      table.delete(del);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  /*<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * For postBulkLoadHFile() hook.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * @param tabName table name<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * @param region the region receiving hfile<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @param finalPaths family and associated hfiles<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void writePathsPostBulkLoad(TableName tabName, byte[] region,<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      Map&lt;byte[], List&lt;Path&gt;&gt; finalPaths) throws IOException {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    if (LOG.isDebugEnabled()) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      LOG.debug("write bulk load descriptor to backup " + tabName + " with " + finalPaths.size()<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        + " entries");<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      List&lt;Put&gt; puts = BackupSystemTable.createPutForCommittedBulkload(tabName, region, finalPaths);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      table.put(puts);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      LOG.debug("written " + puts.size() + " rows for bulk load of " + tabName);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>  /*<a name="line.381"></a>
-<span class="sourceLineNo">382</span>   * For preCommitStoreFile() hook<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   * @param tabName table name<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * @param region the region receiving hfile<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * @param family column family<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   * @param pairs list of paths for hfiles<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   */<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void writeFilesForBulkLoadPreCommit(TableName tabName, byte[] region, final byte[] family,<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      final List&lt;Pair&lt;Path, Path&gt;&gt; pairs) throws IOException {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    if (LOG.isDebugEnabled()) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      LOG.debug(<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        "write bulk load descriptor to backup " + tabName + " with " + pairs.size() + " entries");<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      List&lt;Put&gt; puts =<a name="line.395"></a>
-<span class="sourceLineNo">396</span>          BackupSystemTable.createPutForPreparedBulkload(tabName, region, family, pairs);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      table.put(puts);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      LOG.debug("written " + puts.size() + " rows for bulk load of " + tabName);<a name="line.398"></a>
+<span class="sourceLineNo">232</span>    // Return fast if the table is available and avoid a log message<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    if (admin.tableExists(tableName) &amp;&amp; admin.isTableAvailable(tableName)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      return;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    long TIMEOUT = 60000;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    long startTime = EnvironmentEdgeManager.currentTime();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    LOG.debug("Backup table {} is not present and available, waiting for it to become so",<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        tableName);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    while (!admin.tableExists(tableName) || !admin.isTableAvailable(tableName)) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      try {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        Thread.sleep(100);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      } catch (InterruptedException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      }<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      if (EnvironmentEdgeManager.currentTime() - startTime &gt; TIMEOUT) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        throw new IOException(<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          "Failed to create backup system table " + tableName + " after " + TIMEOUT + "ms");<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>    LOG.debug("Backup table {} exists and available", tableName);<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>  @Override<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  public void close() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    // do nothing<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  /**<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * Updates status (state) of a backup session in backup system table table<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   * @param info backup info<a name="line.260"></a>
+<span class="sourceLineNo">261</span>   * @throws IOException exception<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   */<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  public void updateBackupInfo(BackupInfo info) throws IOException {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    if (LOG.isTraceEnabled()) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      LOG.trace("update backup status in backup system table for: " + info.getBackupId()<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        + " set status=" + info.getState());<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    try (Table table = connection.getTable(tableName)) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      Put put = createPutForBackupInfo(info);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      table.put(put);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  }<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>  /*<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   * @param backupId the backup Id<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   * @return Map of rows to path of bulk loaded hfile<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   */<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  Map&lt;byte[], String&gt; readBulkLoadedFiles(String backupId) 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>    try (Table table = connection.getTable(bulkLoadTableName);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      Result res = null;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      Map&lt;byte[], String&gt; map = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<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>        byte[] row = CellUtil.cloneRow(res.listCells().get(0));<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        for (Cell cell : res.listCells()) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.288"></a>
+<span class="sourceLineNo">289</span>            BackupSystemTable.PATH_COL.length) == 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>            map.put(row, Bytes.toString(CellUtil.cloneValue(cell)));<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      return map;<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>  /*<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * Used during restore<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @param backupId the backup Id<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   * @param sTableList List of tables<a name="line.301"></a>
+<span class="sourceLineNo">302</span>   * @return array of Map of family to List of Paths<a name="line.302"></a>
+<span class="sourceLineNo">303</span>   */<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public Map&lt;byte[], List&lt;Path&gt;&gt;[] readBulkLoadedFiles(String backupId, List&lt;TableName&gt; sTableList)<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      throws IOException {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    Scan scan = BackupSystemTable.createScanForBulkLoadedFiles(backupId);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    Map&lt;byte[], List&lt;Path&gt;&gt;[] mapForSrc = new Map[sTableList == null ? 1 : sTableList.size()];<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    try (Table table = connection.getTable(bulkLoadTableName);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      Result res = null;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      while ((res = scanner.next()) != null) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        res.advance();<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        TableName tbl = null;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        byte[] fam = null;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        String path = null;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        for (Cell cell : res.listCells()) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>          if (CellUtil.compareQualifiers(cell, BackupSystemTable.TBL_COL, 0,<a name="line.317"></a>
+<span class="sourceLineNo">318</span>            BackupSystemTable.TBL_COL.length) == 0) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>            tbl = TableName.valueOf(CellUtil.cloneValue(cell));<a name="line.319"></a>
+<span class="sourceLineNo">320</span>          } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.FAM_COL, 0,<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            BackupSystemTable.FAM_COL.length) == 0) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>            fam = CellUtil.cloneValue(cell);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>            BackupSystemTable.PATH_COL.length) == 0) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>            path = Bytes.toString(CellUtil.cloneValue(cell));<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>        int srcIdx = IncrementalTableBackupClient.getIndex(tbl, sTableList);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        if (srcIdx == -1) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          // the table is not among the query<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          continue;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        }<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        if (mapForSrc[srcIdx] == null) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          mapForSrc[srcIdx] = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        }<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        List&lt;Path&gt; files;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        if (!mapForSrc[srcIdx].containsKey(fam)) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>          files = new ArrayList&lt;Path&gt;();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          mapForSrc[srcIdx].put(fam, files);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        } else {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          files = mapForSrc[srcIdx].get(fam);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        files.add(new Path(path));<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        if (LOG.isDebugEnabled()) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>          LOG.debug("found bulk loaded file : " + tbl + " " + Bytes.toString(fam) + " " + path);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>        }<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>      return mapForSrc;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * Deletes backup status from backup system table table<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param backupId backup id<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @throws IOException exception<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public void deleteBackupInfo(String backupId) throws IOException {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (LOG.isTraceEnabled()) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      LOG.trace("delete backup status in backup system table for " + backupId);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    try (Table table = connection.getTable(tableName)) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      Delete del = createDeleteForBackupInfo(backupId);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      table.delete(del);<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><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  /*<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * For postBulkLoadHFile() hook.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   * @param tabName table name<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * @param region the region receiving hfile<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * @param finalPaths family and associated hfiles<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public void writePathsPostBulkLoad(TableName tabName, byte[] region,<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      Map&lt;byte[], List&lt;Path&gt;&gt; finalPaths) throws IOException {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    if (LOG.isDebugEnabled()) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      LOG.debug("write bulk load descriptor to backup " + tabName + " with " + finalPaths.size()<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        + " entries");<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      List&lt;Put&gt; puts = BackupSystemTable.createPutForCommittedBulkload(tabName, region, finalPaths);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      table.put(puts);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      LOG.debug("written " + puts.size() + " rows for bulk load of " + tabName);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  /*<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * For preCommitStoreFile() hook<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * @param tabName table name<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * @param region the region receiving hfile<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * @param family column family<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * @param pairs list of paths for hfiles<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  public void writeFilesForBulkLoadPreCommit(TableName tabName, byte[] region, final byte[] family,<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      final List&lt;Pair&lt;Path, Path&gt;&gt; pairs) throws IOException {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    if (LOG.isDebugEnabled()) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      LOG.debug(<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        "write bulk load descriptor to backup " + tabName + " with " + pairs.size() + " entries");<a name="line.398"></a>
 <span class="sourceLineNo">399</span>    }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  /*<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * Removes rows recording bulk loaded hfiles from backup table<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @param lst list of table names<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * @param rows the rows to be deleted<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public void deleteBulkLoadedRows(List&lt;byte[]&gt; rows) throws IOException {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      List&lt;Delete&gt; lstDels = new ArrayList&lt;&gt;();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      for (byte[] row : rows) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        Delete del = new Delete(row);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        lstDels.add(del);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        LOG.debug("orig deleting the row: " + Bytes.toString(row));<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      table.delete(lstDels);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      LOG.debug("deleted " + rows.size() + " original bulkload rows");<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><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /*<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * Reads the rows from backup table recording bulk loaded hfiles<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * @param tableList list of table names<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @return The keys of the Map are table, region and column family. Value of the map reflects<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * whether the hfile was recorded by preCommitStoreFile hook (true)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   */<a name="line.425"></a>
-<span class="sourceLineNo">426</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.426"></a>
-<span class="sourceLineNo">427</span>    readBulkloadRows(List&lt;TableName&gt; tableList) throws IOException {<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</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.429"></a>
-<span class="sourceLineNo">430</span>    List&lt;byte[]&gt; rows = new ArrayList&lt;&gt;();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    for (TableName tTable : tableList) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      Scan scan = BackupSystemTable.createScanForOrigBulkLoadedFiles(tTable);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      Map&lt;String, Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;&gt; tblMap = map.get(tTable);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      try (Table table = connection.getTable(bulkLoadTableName);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          ResultScanner scanner = table.getScanner(scan)) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        Result res = null;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        while ((res = scanner.next()) != null) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          res.advance();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          String fam = null;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          String path = null;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>          boolean raw = false;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          byte[] row;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          String region = null;<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          for (Cell cell : res.listCells()) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            row = CellUtil.cloneRow(cell);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>            rows.add(row);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>            String rowStr = Bytes.toString(row);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>            region = BackupSystemTable.getRegionNameFromOrigBulkLoadRow(rowStr);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>            if (CellUtil.compareQualifiers(cell, BackupSystemTable.FAM_COL, 0,<a name="line.449"></a>
-<span class="sourceLineNo">450</span>              BackupSystemTable.FAM_COL.length) == 0) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>              fam = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.451"></a>
-<span class="sourceLineNo">452</span>            } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              BackupSystemTable.PATH_COL.length) == 0) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>              path = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.454"></a>
-<span class="sourceLineNo">455</span>            } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.STATE_COL, 0,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>              BackupSystemTable.STATE_COL.length) == 0) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>              byte[] state = CellUtil.cloneValue(cell);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>              if (Bytes.equals(BackupSystemTable.BL_PREPARE, state)) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>                raw = true;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>              } else {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>                raw = false;<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>          }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          if (map.get(tTable) == null) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>            map.put(tTable, new HashMap&lt;&gt;());<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            tblMap = map.get(tTable);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          }<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          if (tblMap.get(region) == null) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>            tblMap.put(region, new HashMap&lt;&gt;());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt; famMap = tblMap.get(region);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          if (famMap.get(fam) == null) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>            famMap.put(fam, new ArrayList&lt;&gt;());<a name="line.474"></a>
-<span class="sourceLineNo">475</span>          }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>          famMap.get(fam).add(new Pair&lt;&gt;(path, raw));<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          LOG.debug("found orig " + path + " for " + fam + " of table " + region);<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>    return new Pair&lt;&gt;(map, rows);<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>  /*<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param sTableList List of tables<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param maps array of Map of family to List of Paths<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param backupId the backup Id<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   */<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  public void writeBulkLoadedFiles(List&lt;TableName&gt; sTableList, Map&lt;byte[], List&lt;Path&gt;&gt;[] maps,<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      String backupId) throws IOException {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      long ts = EnvironmentEdgeManager.currentTime();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      int cnt = 0;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      for (int idx = 0; idx &lt; maps.length; idx++) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        Map&lt;byte[], List&lt;Path&gt;&gt; map = maps[idx];<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        TableName tn = sTableList.get(idx);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>        if (map == null) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>          continue;<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>        for (Map.Entry&lt;byte[], List&lt;Path&gt;&gt; entry : map.entrySet()) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>          byte[] fam = entry.getKey();<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          List&lt;Path&gt; paths = entry.getValue();<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          for (Path p : paths) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>            Put put = BackupSystemTable.createPutForBulkLoadedFile(tn, fam, p.toString(), backupId,<a name="line.507"></a>
-<span class="sourceLineNo">508</span>              ts, cnt++);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>            puts.add(put);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>          }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      if (!puts.isEmpty()) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        table.put(puts);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      }<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>  }<a name="line.517"></a>
-<span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span>  /**<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * Reads backup status object (instance of backup info) from backup system table table<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param backupId backup id<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @return Current status of backup session or null<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   */<a name="line.523"></a>
-<span class="sourceLineNo">524</span>  public BackupInfo readBackupInfo(String backupId) throws IOException {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    if (LOG.isTraceEnabled()) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      LOG.trace("read backup status from backup system table for: " + backupId);<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>    try (Table table = connection.getTable(tableName)) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      Get get = createGetForBackupInfo(backupId);<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      Result res = table.get(get);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      if (res.isEmpty()) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        return null;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      return resultToBackupInfo(res);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    }<a name="line.536"></a>
-<span class="sourceLineNo">537</span>  }<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span>  /**<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * Read the last backup start code (timestamp) of last successful backup. Will return null if<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * there is no start code stored on hbase or the value is of length 0. These two cases indicate<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * there is no successful backup completed so far.<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @param backupRoot directory path to backup destination<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * @return the timestamp of last successful backup<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   * @throws IOException exception<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   */<a name="line.546"></a>
-<span class="sourceLineNo">547</span>  public String readBackupStartCode(String backupRoot) throws IOException {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    LOG.trace("read backup start code from backup system table");<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    try (Table table = connection.getTable(tableName)) {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      Get get = createGetForStartCode(backupRoot);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      Result res = table.get(get);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      if (res.isEmpty()) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>        return null;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      Cell cell = res.listCells().get(0);<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      byte[] val = CellUtil.cloneValue(cell);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      if (val.length == 0) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        return null;<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      }<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      return new String(val);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
-<span class="sourceLineNo">563</span>  }<a name="line.563"></a>
-<span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span>  /**<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * Write the start code (timestamp) to backup system table. If passed in null, then write 0 byte.<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * @param startCode start code<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * @param backupRoot root directory path to backup<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   * @throws IOException exception<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   */<a name="line.570"></a>
-<span class="sourceLineNo">571</span>  public void writeBackupStartCode(Long startCode, String backupRoot) throws IOException {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    if (LOG.isTraceEnabled()) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      LOG.trace("write backup start code to backup system table " + startCode);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    }<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    try (Table table = connection.getTable(tableName)) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      Put put = createPutForStartCode(startCode.toString(), backupRoot);<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      table.put(put);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span>  /**<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * Exclusive operations are: create, delete, merge<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * @throws IOException if a table operation fails or an active backup exclusive operation is<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   *           already underway<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   */<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void startBackupExclusiveOperation() throws IOException {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    LOG.debug("Start new backup exclusive operation");<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span>    try (Table table = connection.getTable(tableName)) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      Put put = createPutForStartBackupSession();<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      // First try to put if row does not exist<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.592"></a>
-<span class="sourceLineNo">593</span>          .ifNotExists().thenPut(put)) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>        // Row exists, try to put if value == ACTIVE_SESSION_NO<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.595"></a>
-<span class="sourceLineNo">596</span>            .ifEquals(ACTIVE_SESSION_NO).thenPut(put)) {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>          throw new ExclusiveOperationException();<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        }<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>  }<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>  private Put createPutForStartBackupSession() {<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    Put put = new Put(ACTIVE_SESSION_ROW);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    put.addColumn(SESSIONS_FAMILY, ACTIVE_SESSION_COL, ACTIVE_SESSION_YES);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    return put;<a name="line.606"></a>
+<span class="sourceLineNo">400</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      List&lt;Put&gt; puts =<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          BackupSystemTable.createPutForPreparedBulkload(tabName, region, family, pairs);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      table.put(puts);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      LOG.debug("written " + puts.size() + " rows for bulk load of " + tabName);<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>  /*<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Removes rows recording bulk loaded hfiles from backup table<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * @param lst list of table names<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * @param rows the rows to be deleted<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   */<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  public void deleteBulkLoadedRows(List&lt;byte[]&gt; rows) throws IOException {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      List&lt;Delete&gt; lstDels = new ArrayList&lt;&gt;();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      for (byte[] row : rows) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        Delete del = new Delete(row);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        lstDels.add(del);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        LOG.debug("orig deleting the row: " + Bytes.toString(row));<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      table.delete(lstDels);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      LOG.debug("deleted " + rows.size() + " original bulkload rows");<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  }<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>  /*<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * Reads the rows from backup table recording bulk loaded hfiles<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param tableList list of table names<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @return The keys of the Map are table, region and column family. Value of the map reflects<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * whether the hfile was recorded by preCommitStoreFile hook (true)<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</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.432"></a>
+<span class="sourceLineNo">433</span>    readBulkloadRows(List&lt;TableName&gt; tableList) throws IOException {<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</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.435"></a>
+<span class="sourceLineNo">436</span>    List&lt;byte[]&gt; rows = new ArrayList&lt;&gt;();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    for (TableName tTable : tableList) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      Scan scan = BackupSystemTable.createScanForOrigBulkLoadedFiles(tTable);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      Map&lt;String, Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;&gt; tblMap = map.get(tTable);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      try (Table table = connection.getTable(bulkLoadTableName);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>          ResultScanner scanner = table.getScanner(scan)) {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        Result res = null;<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        while ((res = scanner.next()) != null) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          res.advance();<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          String fam = null;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>          String path = null;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          boolean raw = false;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>          byte[] row;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          String region = null;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          for (Cell cell : res.listCells()) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>            row = CellUtil.cloneRow(cell);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>            rows.add(row);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>            String rowStr = Bytes.toString(row);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>            region = BackupSystemTable.getRegionNameFromOrigBulkLoadRow(rowStr);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>            if (CellUtil.compareQualifiers(cell, BackupSystemTable.FAM_COL, 0,<a name="line.455"></a>
+<span class="sourceLineNo">456</span>              BackupSystemTable.FAM_COL.length) == 0) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>              fam = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.457"></a>
+<span class="sourceLineNo">458</span>            } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.458"></a>
+<span class="sourceLineNo">459</span>              BackupSystemTable.PATH_COL.length) == 0) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>              path = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.460"></a>
+<span class="sourceLineNo">461</span>            } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.STATE_COL, 0,<a name="line.461"></a>
+<span class="sourceLineNo">462</span>              BackupSystemTable.STATE_COL.length) == 0) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>              byte[] state = CellUtil.cloneValue(cell);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>              if (Bytes.equals(BackupSystemTable.BL_PREPARE, state)) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>                raw = true;<a name="line.465"></a>
+<span class="sourceLineNo">466</span>              } else {<a name="line.466"></a>
+<span class="sourceLineNo">467</span>                raw = false;<a name="line.467"></a>
+<span class="sourceLineNo">468</span>              }<a name="line.468"></a>
+<span class="sourceLineNo">469</span>            }<a name="line.469"></a>
+<span class="sourceLineNo">470</span>          }<a name="line.470"></a>
+<span class="sourceLineNo">471</span>          if (map.get(tTable) == null) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>            map.put(tTable, new HashMap&lt;&gt;());<a name="line.472"></a>
+<span class="sourceLineNo">473</span>            tblMap = map.get(tTable);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>          }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>          if (tblMap.get(region) == null) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>            tblMap.put(region, new HashMap&lt;&gt;());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          }<a name="line.477"></a>
+<span class="sourceLineNo">478</span>          Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt; famMap = tblMap.get(region);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>          if (famMap.get(fam) == null) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>            famMap.put(fam, new ArrayList&lt;&gt;());<a name="line.480"></a>
+<span class="sourceLineNo">481</span>          }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          famMap.get(fam).add(new Pair&lt;&gt;(path, raw));<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          LOG.debug("found orig " + path + " for " + fam + " of table " + region);<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>    }<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    return new Pair&lt;&gt;(map, rows);<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>   * @param sTableList List of tables<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * @param maps array of Map of family to List of Paths<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * @param backupId the backup Id<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   */<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  public void writeBulkLoadedFiles(List&lt;TableName&gt; sTableList, Map&lt;byte[], List&lt;Path&gt;&gt;[] maps,<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      String backupId) throws IOException {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>      long ts = EnvironmentEdgeManager.currentTime();<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      int cnt = 0;<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      for (int idx = 0; idx &lt; maps.length; idx++) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        Map&lt;byte[], List&lt;Path&gt;&gt; map = maps[idx];<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        TableName tn = sTableList.get(idx);<a name="line.503"></a>
+<span class="sourceLineNo">504</span><a name="line.504"></a>
+<span class="sourceLineNo">505</span>        if (map == null) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>          continue;<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>        for (Map.Entry&lt;byte[], List&lt;Path&gt;&gt; entry : map.entrySet()) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>          byte[] fam = entry.getKey();<a name="line.510"></a>
+<span class="sourceLineNo">511</span>          List&lt;Path&gt; paths = entry.getValue();<a name="line.511"></a>
+<span class="sourceLineNo">512</span>          for (Path p : paths) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>            Put put = BackupSystemTable.createPutForBulkLoadedFile(tn, fam, p.toString(), backupId,<a name="line.513"></a>
+<span class="sourceLineNo">514</span>              ts, cnt++);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>            puts.add(put);<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>      }<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      if (!puts.isEmpty()) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        table.put(puts);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      }<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    }<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * Reads backup status object (instance of backup info) from backup system table table<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * @param backupId backup id<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * @return Current status of backup session or null<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   */<a name="line.529"></a>
+<span class="sourceLineNo">530</span>  public BackupInfo readBackupInfo(String backupId) throws IOException {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    if (LOG.isTraceEnabled()) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      LOG.trace("read backup status from backup system table for: " + backupId);<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span>    try (Table table = connection.getTable(tableName)) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      Get get = createGetForBackupInfo(backupId);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      Result res = table.get(get);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      if (res.isEmpty()) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        return null;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      return resultToBackupInfo(res);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    }<a name="line.542"></a>
+<span class="sourceLineNo">543</span>  }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>  /**<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   * Read the last backup start code (timestamp) of last successful backup. Will return null if<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   * there is no start code stored on hbase or the value is of length 0. These two cases indicate<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   * there is no successful backup completed so far.<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * @param backupRoot directory path to backup destination<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * @return the timestamp of last successful backup<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @throws IOException exception<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   */<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  public String readBackupStartCode(String backupRoot) throws IOException {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    LOG.trace("read backup start code from backup system table");<a name="line.554"></a>
+<span class="sourceLineNo">555</span><a name="line.555"></a>
+<span class="sourceLineNo">556</span>    try (Table table = connection.getTable(tableName)) {<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      Get get = createGetForStartCode(backupRoot);<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      Result res = table.get(get);<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      if (res.isEmpty()) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>        return null;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      }<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      Cell cell = res.listCells().get(0);<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      byte[] val = CellUtil.cloneValue(cell);<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      if (val.length == 0) {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        return null;<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      }<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      return new String(val);<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>  /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * Write the start code (timestamp) to backup system table. If passed in null, then write 0 byte.<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * @param startCode start code<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @param backupRoot root directory path to backup<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   * @throws IOException exception<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   */<a name="line.576"></a>
+<span class="sourceLineNo">577</span>  public void writeBackupStartCode(Long startCode, String backupRoot) throws IOException {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>    if (LOG.isTraceEnabled()) {<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      LOG.trace("write backup start code to backup system table " + startCode);<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    }<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    try (Table table = connection.getTable(tableName)) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      Put put = createPutForStartCode(startCode.toString(), backupRoot);<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      table.put(put);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    }<a name="line.584"></a>
+<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
+<span class="sourceLineNo">586</span><a name="line.586"></a>
+<span class="sourceLineNo">587</span>  /**<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * Exclusive operations are: create, delete, merge<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * @throws IOException if a table operation fails or an active backup exclusive operation is<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   *           already underway<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   */<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  public void startBackupExclusiveOperation() throws IOException {<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    LOG.debug("Start new backup exclusive operation");<a name="line.593"></a>
+<span class="sourceLineNo">594</span><a name="line.594"></a>
+<span class="sourceLineNo">595</span>    try (Table table = connection.getTable(tableName)) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      Put put = createPutForStartBackupSession();<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      // First try to put if row does not exist<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.598"></a>
+<span class="sourceLineNo">599</span>          .ifNotExists().thenPut(put)) {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>        // Row exists, try to put if value == ACTIVE_SESSION_NO<a name="line.600"></a>
+<span class="sourceLineNo">601</span>        if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.601"></a>
+<span class="sourceLineNo">602</span>            .ifEquals(ACTIVE_SESSION_NO).thenPut(put)) {<a name="line.602"></a>
+<span class="sourceLineNo">603</span>          throw new ExclusiveOperationException();<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        }<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      }<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
 <span class="sourceLineNo">607</span>  }<a name="line.607"></a>
 <span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  public void finishBackupExclusiveOperation() throws IOException {<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    LOG.debug("Finish backup exclusive operation");<a name="line.610"></a>
-<span class="sourceLineNo">611</span><a name="line.611"></a>
-<span class="sourceLineNo">612</span>    try (Table table = connection.getTable(tableName)) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      Put put = createPutForStopBackupSession();<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.614"></a>
-<span class="sourceLineNo">615</span>          .ifEquals(ACTIVE_SESSION_YES).thenPut(put)) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>        throw new IOException("There is no active backup exclusive operation");<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      }<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    }<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  private Put createPutForStopBackupSession() {<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    Put put = new Put(ACTIVE_SESSION_ROW);<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    put.addColumn(SESSIONS_FAMILY, ACTIVE_SESSION_COL, ACTIVE_SESSION_NO);<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    return put;<a name="line.624"></a>
+<span class="sourceLineNo">609</span>  private Put createPutForStartBackupSession() {<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    Put put = new Put(ACTIVE_SESSION_ROW);<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    put.addColumn(SESSIONS_FAMILY, ACTIVE_SESSION_COL, ACTIVE_SESSION_YES);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    return put;<a name="line.612"></a>
+<span class="sourceLineNo">613</span>  }<a name="line.613"></a>
+<span class="sourceLineNo">614</span><a name="line.614"></a>
+<span class="sourceLineNo">615</span>  public void finishBackupExclusiveOperation() throws IOException {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    LOG.debug("Finish backup exclusive operation");<a name="line.616"></a>
+<span class="sourceLineNo">617</span><a name="line.617"></a>
+<span class="sourceLineNo">618</span>    try (Table table = connection.getTable(tableName)) {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>      Put put = createPutForStopBackupSession();<a name="line.619"></a>
+<span class="sourceLineNo">620</span>      if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.620"></a>
+<span class="sourceLineNo">621</span>          .ifEquals(ACTIVE_SESSION_YES).thenPut(put)) {<a name="line.621"></a>
+<span class="sourceLineNo">622</span>        throw new IOException("There is no active backup exclusive operation");<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      }<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
 <span class="sourceLineNo">625</span>  }<a name="line.625"></a>
 <span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>  /**<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * Get the Region Servers log information after the last log roll from backup system table.<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @param backupRoot root directory path to backup<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @return RS log info<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   * @throws IOException exception<a name="line.631"></a>
-<span class="sourceLineNo">632</span>   */<a name="line.632"></a>
-<span class="sourceLineNo">633</span>  public HashMap&lt;String, Long&gt; readRegionServerLastLogRollResult(String backupRoot)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      throws IOException {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    LOG.trace("read region server last roll log result to backup system table");<a name="line.635"></a>
-<span class="sourceLineNo">636</span><a name="line.636"></a>
-<span class="sourceLineNo">637</span>    Scan scan = createScanForReadRegionServerLastLogRollResult(backupRoot);<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    try (Table table = connection.getTable(tableName);<a name="line.639"></a>
-<span class="sourceLineNo">640</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      Result res;<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      HashMap&lt;String, Long&gt; rsTimestampMap = new HashMap&lt;&gt;();<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      while ((res = scanner.next()) != null) {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>        res.advance();<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        Cell cell = res.current();<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        byte[] row = CellUtil.cloneRow(cell);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>        String server = getServerNameForReadRegionServerLastLogRollResult(row);<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        byte[] data = CellUtil.cloneValue(cell);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>        rsTimestampMap.put(server, Bytes.toLong(data));<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      }<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      return rsTimestampMap;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>  }<a name="line.653"></a>
-<span class="sourceLineNo">654</span><a name="line.654"></a>
-<span class="sourceLineNo">655</span>  /**<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   * Writes Region Server last roll log result (timestamp) to backup system table table<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   * @param server Region Server name<a name="line.657"></a>
-<span class="sourceLineNo">658</span>   * @param ts last log timestamp<a name="line.658"></a>
-<span class="sourceLineNo">659</span>   * @param backupRoot root directory path to backup<a name="line.659"></a>
-<span class="sourceLineNo">660</span>   * @throws IOException exception<a name="line.660"></a>
-<span class="sourceLineNo">661</span>   */<a name="line.661"></a>
-<span class="sourceLineNo">662</span>  public void writeRegionServerLastLogRollResult(String server, Long ts, String backupRoot)<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      throws IOException {<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    LOG.trace("write region server last roll log result to backup system table");<a name="line.664"></a>
-<span class="sourceLineNo">665</span><a name="line.665"></a>
-<span class="sourceLineNo">666</span>    try (Table table = connection.getTable(tableName)) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>      Put put = createPutForRegionServerLastLogRollResult(server, ts, backupRoot);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      table.put(put);<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>  }<a name="line.670"></a>
+<span class="sourceLineNo">627</span>  private Put createPutForStopBackupSession() {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    Put put = new Put(ACTIVE_SESSION_ROW);<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    put.addColumn(SESSIONS_FAMILY, ACTIVE_SESSION_COL, ACTIVE_SESSION_NO);<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    return put;<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>  /**<a name="line.633"></a>
+<span class="sourceLineNo">634</span>   * Get the Region Servers log information after the last log roll from backup system table.<a name="line.634"></a>
+<span class="sourceLineNo">635</span>   * @param backupRoot root directory path to backup<a name="line.635"></a>
+<span class="sourceLineNo">636</span>   * @return RS log info<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * @throws IOException exception<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   */<a name="line.638"></a>
+<span class="sourceLineNo">639</span>  public HashMap&lt;String, Long&gt; readRegionServerLastLogRollResult(String backupRoot)<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      throws IOException {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    LOG.trace("read region server last roll log result to backup system table");<a name="line.641"></a>
+<span class="sourceLineNo">642</span><a name="line.642"></a>
+<span class="sourceLineNo">643</span>    Scan scan = createScanForReadRegionServerLastLogRollResult(backupRoot);<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>    try (Table table = connection.getTable(tableName);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      Result res;<a name="line.647"></a>
+<span class="sourceLineNo">648</span>      HashMap&lt;String, Long&gt; rsTimestampMap = new HashMap&lt;&gt;();<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      while ((res = scanner.next()) != null) {<a name="line.649"></a>
+<span class="sourceLineNo">650</span>        res.advance();<a name="line.650"></a>
+<span class="sourceLineNo">651</span>        Cell cell = res.current();<a name="line.651"></a>
+<span class="sourceLineNo">652</span>        byte[] row = CellUtil.cloneRow(cell);<a name="line.652"></a>
+<span class="sourceLineNo">653</span>        String server = getServerNameForReadRegionServerLastLogRollResult(row);<a name="line.653"></a>
+<span class="sourceLineNo">654</span>        byte[] data = CellUtil.cloneValue(cell);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        rsTimestampMap.put(server, Bytes.toLong(data));<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      return rsTimestampMap;<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>   * Writes Region Server last roll log result (timestamp) to backup system table table<a name="line.662"></a>
+<span class="sourceLineNo">663</span>   * @param server Region Server name<a name="line.663"></a>
+<span class="sourceLineNo">664</span>   * @param ts last log timestamp<a name="line.664"></a>
+<span class="sourceLineNo">665</span>   * @param backupRoot root directory path to backup<a name="line.665"></a>
+<span class="sourceLineNo">666</span>   * @throws IOException exception<a name="line.666"></a>
+<span class="sourceLineNo">667</span>   */<a name="line.667"></a>
+<span class="sourceLineNo">668</span>  public void writeRegionServerLastLogRollResult(String server, Long ts, String backupRoot)<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      throws IOException {<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    LOG.trace("write region server last roll log result to backup system table");<a name="line.670"></a>
 <span class="sourceLineNo">671</span><a name="line.671"></a>
-<span class="sourceLineNo">672</span>  /**<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * Get all completed backup information (in desc order by time)<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   * @param onlyCompleted true, if only successfully completed sessions<a name="line.674"></a>
-<span class="sourceLineNo">675</span>   * @return history info of BackupCompleteData<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   * @throws IOException exception<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  public ArrayList&lt;BackupInfo&gt; getBackupHistory(boolean onlyCompleted) throws IOException {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    LOG.trace("get backup history from backup system table");<a name="line.679"></a>
-<span class="sourceLineNo">680</span><a name="line.680"></a>
-<span class="sourceLineNo">681</span>    BackupState state = onlyCompleted ? BackupState.COMPLETE : BackupState.ANY;<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    ArrayList&lt;BackupInfo&gt; list = getBackupInfos(state);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    return BackupUtils.sortHistoryListDesc(list);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>  }<a name="line.684"></a>
-<span class="sourceLineNo">685</span><a name="line.685"></a>
-<span class="sourceLineNo">686</span>  /**<a name="line.686"></a>
-<span class="sou

<TRUNCATED>

[23/26] hbase-site git commit: Published site at dfeab9f5c968625ac1c642c53c721eb5e81068c0.

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

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

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

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

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
index 7b435d2..4b549da 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -127,8 +127,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
 </ul>
 </li>
 </ul>

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HStoreFile.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HStoreFile.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HStoreFile.html
index 845e729..dc7822f 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HStoreFile.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/HStoreFile.html
@@ -1535,6 +1535,21 @@
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/package-summary.html">org.apache.hadoop.hbase.regionserver.compactions</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><span class="typeNameLabel">FIFOCompactionPolicy.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html#isEmptyStoreFile-org.apache.hadoop.hbase.regionserver.HStoreFile-">isEmptyStoreFile</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;sf)</code>
+<div class="block">The FIFOCompactionPolicy only choose those TTL expired HFiles as the compaction candidates.</div>
+</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
 <caption><span>Method parameters in <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/package-summary.html">org.apache.hadoop.hbase.regionserver.compactions</a> with type arguments of type <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html b/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html
index 67d1e73..545fb0b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -212,13 +212,19 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html#hasExpiredStores-java.util.Collection-">hasExpiredStores</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;files)</code>&nbsp;</td>
 </tr>
 <tr id="i2" class="altColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html#isEmptyStoreFile-org.apache.hadoop.hbase.regionserver.HStoreFile-">isEmptyStoreFile</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;sf)</code>
+<div class="block">The FIFOCompactionPolicy only choose those TTL expired HFiles as the compaction candidates.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html#needsCompaction-java.util.Collection-java.util.List-">needsCompaction</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;storeFiles,
                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesCompacting)</code>
 <div class="block">A heuristic method to decide whether to schedule a compaction request</div>
 </td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html#selectCompaction-java.util.Collection-java.util.List-boolean-boolean-boolean-">selectCompaction</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;candidateFiles,
                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesCompacting,
@@ -226,7 +232,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
                 boolean&nbsp;mayUseOffPeak,
                 boolean&nbsp;forceMajor)</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html#shouldPerformMajorCompaction-java.util.Collection-">shouldPerformMajorCompaction</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesToCompact)</code>&nbsp;</td>
 </tr>
@@ -382,13 +388,27 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 </dl>
 </li>
 </ul>
+<a name="isEmptyStoreFile-org.apache.hadoop.hbase.regionserver.HStoreFile-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isEmptyStoreFile</h4>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html#line.106">isEmptyStoreFile</a>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;sf)</pre>
+<div class="block">The FIFOCompactionPolicy only choose those TTL expired HFiles as the compaction candidates. So
+ if all HFiles are TTL expired, then the compaction will generate a new empty HFile. While its
+ max timestamp will be Long.MAX_VALUE. If not considered separately, the HFile will never be
+ archived because its TTL will be never expired. So we'll check the empty store file separately.
+ (See HBASE-21504)</div>
+</li>
+</ul>
 <a name="hasExpiredStores-java.util.Collection-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>hasExpiredStores</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html#line.99">hasExpiredStores</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;files)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html#line.110">hasExpiredStores</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;files)</pre>
 </li>
 </ul>
 <a name="getExpiredStores-java.util.Collection-java.util.Collection-">
@@ -397,7 +417,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/compacti
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getExpiredStores</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html#line.115">getExpiredStores</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;files,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html#line.128">getExpiredStores</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;files,
                                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesCompacting)</pre>
 </li>
 </ul>

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
index f8e4b11..3c7146a 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
@@ -160,8 +160,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SyncReplicationState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.PeerState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationPeer.PeerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SyncReplicationState</span></a></li>
 </ul>
 </li>
 </ul>

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

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

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

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

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

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


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
index bc4887a..b12b756 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
@@ -1245,3081 +1245,3103 @@
 <span class="sourceLineNo">1237</span>  }<a name="line.1237"></a>
 <span class="sourceLineNo">1238</span><a name="line.1238"></a>
 <span class="sourceLineNo">1239</span>  /**<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>   * Shutdown HBase mini cluster.  Does not shutdown zk or dfs if running.<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>   */<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>  public void shutdownMiniHBaseCluster() throws IOException {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>    if (hbaseAdmin != null) {<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>      hbaseAdmin.close();<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>      hbaseAdmin = null;<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>    }<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    if (this.connection != null) {<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>      this.connection.close();<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>      this.connection = null;<a name="line.1249"></a>
+<span class="sourceLineNo">1240</span>   * Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>   * @throws java.io.IOException in case command is unsuccessful<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>   */<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  public void shutdownMiniHBaseCluster() throws IOException {<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>    cleanup();<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>    if (this.hbaseCluster != null) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>      this.hbaseCluster.shutdown();<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      // Wait till hbase is down before going on to shutdown zk.<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>      this.hbaseCluster.waitUntilShutDown();<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>      this.hbaseCluster = null;<a name="line.1249"></a>
 <span class="sourceLineNo">1250</span>    }<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // unset the configuration for MIN and MAX RS to start<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1);<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>    if (this.hbaseCluster != null) {<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>      this.hbaseCluster.shutdown();<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>      // Wait till hbase is down before going on to shutdown zk.<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>      this.hbaseCluster.waitUntilShutDown();<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>      this.hbaseCluster = null;<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>    }<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>    if (zooKeeperWatcher != null) {<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>      zooKeeperWatcher.close();<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>      zooKeeperWatcher = null;<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>    }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>  }<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span><a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>  /**<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Returns the path to the default root dir the minicluster uses. If &lt;code&gt;create&lt;/code&gt;<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   * is true, a new root directory path is fetched irrespective of whether it has been fetched<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>   * before or not. If false, previous path is used.<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>   * Note: this does not cause the root dir to be created.<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>   * @throws IOException<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>   */<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public Path getDefaultRootDirPath(boolean create) throws IOException {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    if (!create) {<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>      return getDataTestDirOnTestFS();<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>    } else {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>      return getNewDataTestDirOnTestFS();<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>    }<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>  }<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span><a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>  /**<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>   * Same as {{@link HBaseTestingUtility#getDefaultRootDirPath(boolean create)}<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>   * Note: this does not cause the root dir to be created.<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>   * @throws IOException<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>   */<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public Path getDefaultRootDirPath() throws IOException {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return getDefaultRootDirPath(false);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  /**<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>   * Creates an hbase rootdir in user home directory.  Also creates hbase<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>   * version file.  Normally you won't make use of this method.  Root hbasedir<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>   * is created for you as part of mini cluster startup.  You'd only use this<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>   * method if you were doing manual operation.<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>   * @param create This flag decides whether to get a new<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>   * root or data directory path or not, if it has been fetched already.<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>   * Note : Directory will be made irrespective of whether path has been fetched or not.<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>   * If directory already exists, it will be overwritten<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>   * @return Fully qualified path to hbase root dir<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>   * @throws IOException<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>   */<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>  public Path createRootDir(boolean create) throws IOException {<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>    Path hbaseRootdir = getDefaultRootDirPath(create);<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>    FSUtils.setRootDir(this.conf, hbaseRootdir);<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>    fs.mkdirs(hbaseRootdir);<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    FSUtils.setVersion(fs, hbaseRootdir);<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>    return hbaseRootdir;<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>  }<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span><a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  /**<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>   * Same as {@link HBaseTestingUtility#createRootDir(boolean create)}<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>   * @return Fully qualified path to hbase root dir<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>   * @throws IOException<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>   */<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>  public Path createRootDir() throws IOException {<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>    return createRootDir(false);<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>  }<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span><a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  /**<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>   * Creates a hbase walDir in the user's home directory.<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>   * Normally you won't make use of this method. Root hbaseWALDir<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>   * is created for you as part of mini cluster startup. You'd only use this<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>   * method if you were doing manual operation.<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>   *<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>   * @return Fully qualified path to hbase root dir<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>   * @throws IOException<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>  */<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>  public Path createWALRootDir() throws IOException {<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    Path walDir = getNewDataTestDirOnTestFS();<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>    FSUtils.setWALRootDir(this.conf, walDir);<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>    fs.mkdirs(walDir);<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>    return walDir;<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  }<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span><a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  private void setHBaseFsTmpDir() throws IOException {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    String hbaseFsTmpDirInString = this.conf.get("hbase.fs.tmp.dir");<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>    if (hbaseFsTmpDirInString == null) {<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>      this.conf.set("hbase.fs.tmp.dir",  getDataTestDirOnTestFS("hbase-staging").toString());<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>      LOG.info("Setting hbase.fs.tmp.dir to " + this.conf.get("hbase.fs.tmp.dir"));<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>    } else {<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>      LOG.info("The hbase.fs.tmp.dir is set to " + hbaseFsTmpDirInString);<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>    }<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>  }<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span><a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>  /**<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>   * Flushes all caches in the mini hbase cluster<a name="line.1352"></a>
+<span class="sourceLineNo">1251</span>    if (zooKeeperWatcher != null) {<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>      zooKeeperWatcher.close();<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>      zooKeeperWatcher = null;<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>    }<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>  }<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span><a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>  /**<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>   * Abruptly Shutdown HBase mini cluster. Does not shutdown zk or dfs if running.<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>   * @throws java.io.IOException throws in case command is unsuccessful<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>   */<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>  public void killMiniHBaseCluster() throws IOException {<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    cleanup();<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>    if (this.hbaseCluster != null) {<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>      getMiniHBaseCluster().killAll();<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>      this.hbaseCluster = null;<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>    }<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>    if (zooKeeperWatcher != null) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>      zooKeeperWatcher.close();<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>      zooKeeperWatcher = null;<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    }<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span><a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>  // close hbase admin, close current connection and reset MIN MAX configs for RS.<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>  private void cleanup() throws IOException {<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>    if (hbaseAdmin != null) {<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span>      hbaseAdmin.close();<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>      hbaseAdmin = null;<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>    }<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    if (this.connection != null) {<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>      this.connection.close();<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span>      this.connection = null;<a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>    }<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>    // unset the configuration for MIN and MAX RS to start<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1);<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span>  }<a name="line.1286"></a>
+<span class="sourceLineNo">1287</span><a name="line.1287"></a>
+<span class="sourceLineNo">1288</span>  /**<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>   * Returns the path to the default root dir the minicluster uses. If &lt;code&gt;create&lt;/code&gt;<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span>   * is true, a new root directory path is fetched irrespective of whether it has been fetched<a name="line.1290"></a>
+<span class="sourceLineNo">1291</span>   * before or not. If false, previous path is used.<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>   * Note: this does not cause the root dir to be created.<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span>   * @throws IOException<a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>   */<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span>  public Path getDefaultRootDirPath(boolean create) throws IOException {<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>    if (!create) {<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span>      return getDataTestDirOnTestFS();<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>    } else {<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>      return getNewDataTestDirOnTestFS();<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span>    }<a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>  }<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span><a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>  /**<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span>   * Same as {{@link HBaseTestingUtility#getDefaultRootDirPath(boolean create)}<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span>   * Note: this does not cause the root dir to be created.<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>   * @throws IOException<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>   */<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span>  public Path getDefaultRootDirPath() throws IOException {<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>    return getDefaultRootDirPath(false);<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span>  }<a name="line.1313"></a>
+<span class="sourceLineNo">1314</span><a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>  /**<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>   * Creates an hbase rootdir in user home directory.  Also creates hbase<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span>   * version file.  Normally you won't make use of this method.  Root hbasedir<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>   * is created for you as part of mini cluster startup.  You'd only use this<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span>   * method if you were doing manual operation.<a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>   * @param create This flag decides whether to get a new<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span>   * root or data directory path or not, if it has been fetched already.<a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>   * Note : Directory will be made irrespective of whether path has been fetched or not.<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>   * If directory already exists, it will be overwritten<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>   * @return Fully qualified path to hbase root dir<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>   * @throws IOException<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>   */<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span>  public Path createRootDir(boolean create) throws IOException {<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span>    Path hbaseRootdir = getDefaultRootDirPath(create);<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span>    FSUtils.setRootDir(this.conf, hbaseRootdir);<a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>    fs.mkdirs(hbaseRootdir);<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>    FSUtils.setVersion(fs, hbaseRootdir);<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>    return hbaseRootdir;<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>  }<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span><a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>  /**<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span>   * Same as {@link HBaseTestingUtility#createRootDir(boolean create)}<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>   * @return Fully qualified path to hbase root dir<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>   * @throws IOException<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span>   */<a name="line.1341"></a>
+<span class="sourceLineNo">1342</span>  public Path createRootDir() throws IOException {<a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>    return createRootDir(false);<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>  }<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span><a name="line.1345"></a>
+<span class="sourceLineNo">1346</span>  /**<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span>   * Creates a hbase walDir in the user's home directory.<a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>   * Normally you won't make use of this method. Root hbaseWALDir<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>   * is created for you as part of mini cluster startup. You'd only use this<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span>   * method if you were doing manual operation.<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>   *<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>   * @return Fully qualified path to hbase root dir<a name="line.1352"></a>
 <span class="sourceLineNo">1353</span>   * @throws IOException<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>   */<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>  public void flush() throws IOException {<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    getMiniHBaseCluster().flushcache();<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>  }<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>  /**<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>   * Flushes all caches in the mini hbase cluster<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>   * @throws IOException<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>   */<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>  public void flush(TableName tableName) throws IOException {<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    getMiniHBaseCluster().flushcache(tableName);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>  }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>  /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>   * Compact all regions in the mini hbase cluster<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>   * @throws IOException<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>   */<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>  public void compact(boolean major) throws IOException {<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>    getMiniHBaseCluster().compact(major);<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>  }<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span><a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>  /**<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>   * Compact all of a table's reagion in the mini hbase cluster<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>   * @throws IOException<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>   */<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>  public void compact(TableName tableName, boolean major) throws IOException {<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>    getMiniHBaseCluster().compact(tableName, major);<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>  }<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span><a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>  /**<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>   * Create a table.<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>   * @param tableName<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>   * @param family<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>   * @return A Table instance for the created table.<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>   * @throws IOException<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>   */<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>  public Table createTable(TableName tableName, String family)<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>  throws IOException{<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>    return createTable(tableName, new String[]{family});<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>  }<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>  /**<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>   * Create a table.<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>   * @param tableName<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>   * @param families<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>   * @return A Table instance for the created table.<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>   * @throws IOException<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>   */<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>  public Table createTable(TableName tableName, String[] families)<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>  throws IOException {<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>    List&lt;byte[]&gt; fams = new ArrayList&lt;&gt;(families.length);<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>    for (String family : families) {<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>      fams.add(Bytes.toBytes(family));<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>    }<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>    return createTable(tableName, fams.toArray(new byte[0][]));<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>  }<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span><a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>  /**<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>   * Create a table.<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>   * @param tableName<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>   * @param family<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>   * @return A Table instance for the created table.<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>   * @throws IOException<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>   */<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>  public Table createTable(TableName tableName, byte[] family)<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>  throws IOException{<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>    return createTable(tableName, new byte[][]{family});<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>  }<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span><a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>  /**<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>   * Create a table with multiple regions.<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>   * @param tableName<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>   * @param family<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>   * @param numRegions<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>   * @return A Table instance for the created table.<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>   * @throws IOException<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>   */<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>  public Table createMultiRegionTable(TableName tableName, byte[] family, int numRegions)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>      throws IOException {<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>    if (numRegions &lt; 3) throw new IOException("Must create at least 3 regions");<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>    byte[] startKey = Bytes.toBytes("aaaaa");<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>    byte[] endKey = Bytes.toBytes("zzzzz");<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>    byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span><a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>    return createTable(tableName, new byte[][] { family }, splitKeys);<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>  }<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span><a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>  /**<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>   * Create a table.<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>   * @param tableName<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>   * @param families<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>   * @return A Table instance for the created table.<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>   * @throws IOException<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>   */<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>  public Table createTable(TableName tableName, byte[][] families)<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>  throws IOException {<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>    return createTable(tableName, families, (byte[][]) null);<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>  }<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span><a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>  /**<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>   * Create a table with multiple regions.<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>   * @param tableName<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>   * @param families<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>   * @return A Table instance for the created table.<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>   * @throws IOException<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>   */<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families) throws IOException {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>    return createTable(tableName, families, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>  }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span><a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>  /**<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>   * Create a table.<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>   * @param tableName<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>   * @param families<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>   * @param splitKeys<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>   * @return A Table instance for the created table.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>   * @throws IOException<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>   */<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys)<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>      throws IOException {<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>    return createTable(tableName, families, splitKeys, 1, new Configuration(getConfiguration()));<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>  }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>  /**<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>   * Create a table.<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>   * @param tableName the table name<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>   * @param families the families<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>   * @param splitKeys the splitkeys<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>   * @param replicaCount the region replica count<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>   * @return A Table instance for the created table.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>   * @throws IOException throws IOException<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>   */<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>      int replicaCount) throws IOException {<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>    return createTable(tableName, families, splitKeys, replicaCount,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>      new Configuration(getConfiguration()));<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>  }<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span><a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>      int numVersions, byte[] startKey, byte[] endKey, int numRegions)<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>  throws IOException{<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions);<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>    getAdmin().createTable(desc, startKey, endKey, numRegions);<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>    // should wait until they are assigned<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>    return getConnection().getTable(tableName);<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>  }<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span><a name="line.1503"></a>
-<span class="sourceLineNo">1504</span>  /**<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>   * Create a table.<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>   * @param htd<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>   * @param families<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>   * @param c Configuration to use<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>   * @return A Table instance for the created table.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>   * @throws IOException<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>   */<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>  public Table createTable(TableDescriptor htd, byte[][] families, Configuration c)<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>  throws IOException {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>    return createTable(htd, families, null, c);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>  }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span><a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>  /**<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>   * Create a table.<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>   * @param htd table descriptor<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>   * @param families array of column families<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>   * @param splitKeys array of split keys<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>   * @param c Configuration to use<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>   * @return A Table instance for the created table.<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>   */<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>      Configuration c) throws IOException {<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>    // Disable blooms (they are on by default as of 0.95) but we disable them here because<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    // tests have hard coded counts of what to expect in block cache, etc., and blooms being<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>    // on is interfering.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>    return createTable(htd, families, splitKeys, BloomType.NONE, HConstants.DEFAULT_BLOCKSIZE, c);<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>  }<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span><a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>  /**<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>   * Create a table.<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>   * @param htd table descriptor<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>   * @param families array of column families<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>   * @param splitKeys array of split keys<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>   * @param type Bloom type<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>   * @param blockSize block size<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>   * @param c Configuration to use<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>   * @return A Table instance for the created table.<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>   */<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span><a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>      BloomType type, int blockSize, Configuration c) throws IOException {<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>    for (byte[] family : families) {<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>      builder.setColumnFamily(<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>          ColumnFamilyDescriptorBuilder.newBuilder(family).setBloomFilterType(type)<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>              .setBlocksize(blockSize).build());<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>    }<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>    TableDescriptor td = builder.build();<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>    getAdmin().createTable(td, splitKeys);<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>    // we should wait until they are assigned<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>    waitUntilAllRegionsAssigned(td.getTableName());<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>    return getConnection().getTable(td.getTableName());<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>  /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>   * Create a table.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>   * @param htd table descriptor<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>   * @param splitRows array of split keys<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>   * @return A Table instance for the created table.<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>   * @throws IOException<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>   */<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>  public Table createTable(TableDescriptor htd, byte[][] splitRows)<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>      throws IOException {<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>    getAdmin().createTable(htd, splitRows);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>    // we should wait until they are assigned<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>    waitUntilAllRegionsAssigned(htd.getTableName());<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    return getConnection().getTable(htd.getTableName());<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>  }<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span><a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>  /**<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>   * Create a table.<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>   * @param tableName the table name<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>   * @param families the families<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>   * @param splitKeys the split keys<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>   * @param replicaCount the replica count<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>   * @param c Configuration to use<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>   * @return A Table instance for the created table.<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>   * @throws IOException<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>   */<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>      int replicaCount, final Configuration c) throws IOException {<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>    htd.setRegionReplication(replicaCount);<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>    return createTable(htd, families, splitKeys, c);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>  }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span><a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>  /**<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>   * Create a table.<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>   * @param tableName<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>   * @param family<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>   * @param numVersions<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>   * @return A Table instance for the created table.<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>   * @throws IOException<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>   */<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>  public Table createTable(TableName tableName, byte[] family, int numVersions)<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>  throws IOException {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>    return createTable(tableName, new byte[][]{family}, numVersions);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>  }<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span><a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>  /**<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>   * Create a table.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>   * @param tableName<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>   * @param families<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>   * @param numVersions<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>   * @return A Table instance for the created table.<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>   * @throws IOException<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>   */<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>      throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>    return createTable(tableName, families, numVersions, (byte[][]) null);<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>  }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span><a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>  /**<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>   * Create a table.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>   * @param tableName<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>   * @param families<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>   * @param numVersions<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>   * @param splitKeys<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>   * @return A Table instance for the created table.<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>   * @throws IOException<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>   */<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions,<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      byte[][] splitKeys) throws IOException {<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>    for (byte[] family : families) {<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>      HColumnDescriptor hcd = new HColumnDescriptor(family).setMaxVersions(numVersions);<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>      desc.addFamily(hcd);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>    }<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>    getAdmin().createTable(desc, splitKeys);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>    // assigned<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>    return getConnection().getTable(tableName);<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>  }<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span><a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>  /**<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>   * Create a table with multiple regions.<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>   * @param tableName<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>   * @param families<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>   * @param numVersions<a name="line.1648"></a>
+<span class="sourceLineNo">1354</span>  */<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>  public Path createWALRootDir() throws IOException {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>    Path walDir = getNewDataTestDirOnTestFS();<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    FSUtils.setWALRootDir(this.conf, walDir);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    fs.mkdirs(walDir);<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span>    return walDir;<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span>  }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>  private void setHBaseFsTmpDir() throws IOException {<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>    String hbaseFsTmpDirInString = this.conf.get("hbase.fs.tmp.dir");<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    if (hbaseFsTmpDirInString == null) {<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>      this.conf.set("hbase.fs.tmp.dir",  getDataTestDirOnTestFS("hbase-staging").toString());<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      LOG.info("Setting hbase.fs.tmp.dir to " + this.conf.get("hbase.fs.tmp.dir"));<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>    } else {<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      LOG.info("The hbase.fs.tmp.dir is set to " + hbaseFsTmpDirInString);<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>    }<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>  }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span><a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>  /**<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>   * Flushes all caches in the mini hbase cluster<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>   * @throws IOException<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>   */<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>  public void flush() throws IOException {<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>    getMiniHBaseCluster().flushcache();<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>  }<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span><a name="line.1380"></a>
+<span class="sourceLineNo">1381</span>  /**<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>   * Flushes all caches in the mini hbase cluster<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>   * @throws IOException<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>   */<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>  public void flush(TableName tableName) throws IOException {<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    getMiniHBaseCluster().flushcache(tableName);<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>  }<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span><a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>  /**<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>   * Compact all regions in the mini hbase cluster<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>   * @throws IOException<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>   */<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>  public void compact(boolean major) throws IOException {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>    getMiniHBaseCluster().compact(major);<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span>  }<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span><a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>  /**<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>   * Compact all of a table's reagion in the mini hbase cluster<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>   * @throws IOException<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>   */<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>  public void compact(TableName tableName, boolean major) throws IOException {<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>    getMiniHBaseCluster().compact(tableName, major);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>  }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>  /**<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>   * Create a table.<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>   * @param tableName<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>   * @param family<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>   * @return A Table instance for the created table.<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>   * @throws IOException<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>   */<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>  public Table createTable(TableName tableName, String family)<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>  throws IOException{<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>    return createTable(tableName, new String[]{family});<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>  }<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span><a name="line.1416"></a>
+<span class="sourceLineNo">1417</span>  /**<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>   * Create a table.<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>   * @param tableName<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>   * @param families<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>   * @return A Table instance for the created table.<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>   * @throws IOException<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>   */<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>  public Table createTable(TableName tableName, String[] families)<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>  throws IOException {<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>    List&lt;byte[]&gt; fams = new ArrayList&lt;&gt;(families.length);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>    for (String family : families) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>      fams.add(Bytes.toBytes(family));<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>    }<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>    return createTable(tableName, fams.toArray(new byte[0][]));<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>  }<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span><a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>  /**<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>   * Create a table.<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>   * @param tableName<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>   * @param family<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>   * @return A Table instance for the created table.<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>   * @throws IOException<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>   */<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>  public Table createTable(TableName tableName, byte[] family)<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>  throws IOException{<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>    return createTable(tableName, new byte[][]{family});<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>  }<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span><a name="line.1444"></a>
+<span class="sourceLineNo">1445</span>  /**<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>   * Create a table with multiple regions.<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>   * @param tableName<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>   * @param family<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>   * @param numRegions<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span>   * @return A Table instance for the created table.<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>   * @throws IOException<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>   */<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>  public Table createMultiRegionTable(TableName tableName, byte[] family, int numRegions)<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>      throws IOException {<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>    if (numRegions &lt; 3) throw new IOException("Must create at least 3 regions");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>    byte[] startKey = Bytes.toBytes("aaaaa");<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>    byte[] endKey = Bytes.toBytes("zzzzz");<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>    byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span><a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>    return createTable(tableName, new byte[][] { family }, splitKeys);<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>  }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>  /**<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>   * Create a table.<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>   * @param tableName<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>   * @param families<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>   * @return A Table instance for the created table.<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>   * @throws IOException<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>   */<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>  public Table createTable(TableName tableName, byte[][] families)<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>  throws IOException {<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>    return createTable(tableName, families, (byte[][]) null);<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>  }<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span><a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>  /**<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>   * Create a table with multiple regions.<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span>   * @param tableName<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>   * @param families<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>   * @return A Table instance for the created table.<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>   * @throws IOException<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>   */<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families) throws IOException {<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>    return createTable(tableName, families, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>  }<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span><a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>  /**<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>   * Create a table.<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>   * @param tableName<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>   * @param families<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>   * @param splitKeys<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>   * @return A Table instance for the created table.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>   * @throws IOException<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>   */<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys)<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>      throws IOException {<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    return createTable(tableName, families, splitKeys, 1, new Configuration(getConfiguration()));<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>  }<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span><a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>  /**<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>   * Create a table.<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>   * @param tableName the table name<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>   * @param families the families<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>   * @param splitKeys the splitkeys<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>   * @param replicaCount the region replica count<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span>   * @return A Table instance for the created table.<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>   * @throws IOException throws IOException<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>   */<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>      int replicaCount) throws IOException {<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>    return createTable(tableName, families, splitKeys, replicaCount,<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>      new Configuration(getConfiguration()));<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>  }<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span><a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span>      int numVersions, byte[] startKey, byte[] endKey, int numRegions)<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>  throws IOException{<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>    HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions);<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span><a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>    getAdmin().createTable(desc, startKey, endKey, numRegions);<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>    // should wait until they are assigned<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>    return getConnection().getTable(tableName);<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>  }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span><a name="line.1525"></a>
+<span class="sourceLineNo">1526</span>  /**<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>   * Create a table.<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>   * @param htd<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>   * @param families<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>   * @param c Configuration to use<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>   * @return A Table instance for the created table.<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>   * @throws IOException<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>   */<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>  public Table createTable(TableDescriptor htd, byte[][] families, Configuration c)<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>  throws IOException {<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>    return createTable(htd, families, null, c);<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>  }<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span><a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>  /**<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>   * Create a table.<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>   * @param htd table descriptor<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>   * @param families array of column families<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>   * @param splitKeys array of split keys<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>   * @param c Configuration to use<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>   * @return A Table instance for the created table.<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>   */<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>      Configuration c) throws IOException {<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>    // Disable blooms (they are on by default as of 0.95) but we disable them here because<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span>    // tests have hard coded counts of what to expect in block cache, etc., and blooms being<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>    // on is interfering.<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>    return createTable(htd, families, splitKeys, BloomType.NONE, HConstants.DEFAULT_BLOCKSIZE, c);<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>  }<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span><a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>  /**<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>   * Create a table.<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>   * @param htd table descriptor<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>   * @param families array of column families<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>   * @param splitKeys array of split keys<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>   * @param type Bloom type<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>   * @param blockSize block size<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>   * @param c Configuration to use<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>   * @return A Table instance for the created table.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>   */<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span><a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>      BloomType type, int blockSize, Configuration c) throws IOException {<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>    for (byte[] family : families) {<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>      builder.setColumnFamily(<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>          ColumnFamilyDescriptorBuilder.newBuilder(family).setBloomFilterType(type)<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>              .setBlocksize(blockSize).build());<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>    }<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    TableDescriptor td = builder.build();<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>    getAdmin().createTable(td, splitKeys);<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    // we should wait until they are assigned<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    waitUntilAllRegionsAssigned(td.getTableName());<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>    return getConnection().getTable(td.getTableName());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>  }<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span><a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>  /**<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>   * Create a table.<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>   * @param htd table descriptor<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>   * @param splitRows array of split keys<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>   * @return A Table instance for the created table.<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>   * @throws IOException<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>   */<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>  public Table createTable(TableDescriptor htd, byte[][] splitRows)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>      throws IOException {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>    getAdmin().createTable(htd, splitRows);<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>    // we should wait until they are assigned<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>    waitUntilAllRegionsAssigned(htd.getTableName());<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>    return getConnection().getTable(htd.getTableName());<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>  }<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span><a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>  /**<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>   * Create a table.<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>   * @param tableName the table name<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>   * @param families the families<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>   * @param splitKeys the split keys<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>   * @param replicaCount the replica count<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span>   * @param c Configuration to use<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>   * @return A Table instance for the created table.<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>   * @throws IOException<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>   */<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>      int replicaCount, final Configuration c) throws IOException {<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>    htd.setRegionReplication(replicaCount);<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>    return createTable(htd, families, splitKeys, c);<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span>  }<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span><a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>  /**<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>   * Create a table.<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>   * @param tableName<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>   * @param family<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>   * @param numVersions<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>   * @return A Table instance for the created table.<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>   * @throws IOException<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>   */<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>  public Table createTable(TableName tableName, byte[] family, int numVersions)<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>  throws IOException {<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>    return createTable(tableName, new byte[][]{family}, numVersions);<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>  }<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span><a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>  /**<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>   * Create a table.<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span>   * @param tableName<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>   * @param families<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>   * @param numVersions<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>   * @return A Table instance for the created table.<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>   * @throws IOException<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>   */<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>      throws IOException {<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>    return createTable(tableName, families, numVersions, (byte[][]) null);<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span>  }<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span><a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>  /**<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>   * Create a table.<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span>   * @param tableName<a name="line.1645"></a>
+<span class="sourceLineNo">1646</span>   * @param families<a name="line.1646"></a>
+<span class="sourceLineNo">1647</span>   * @param numVersions<a name="line.1647"></a>
+<span class="sourceLineNo">1648</span>   * @param splitKeys<a name="line.1648"></a>
 <span class="sourceLineNo">1649</span>   * @return A Table instance for the created table.<a name="line.1649"></a>
 <span class="sourceLineNo">1650</span>   * @throws IOException<a name="line.1650"></a>
 <span class="sourceLineNo">1651</span>   */<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>      throws IOException {<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>    return createTable(tableName, families, numVersions, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>  }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>  /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>   * Create a table.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>   * @param tableName<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>   * @param families<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>   * @param numVersions<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>   * @param blockSize<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>   * @return A Table instance for the created table.<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>   * @throws IOException<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>   */<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>    int numVersions, int blockSize) throws IOException {<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>    for (byte[] family : families) {<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>      HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          .setMaxVersions(numVersions)<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          .setBlocksize(blockSize);<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>      desc.addFamily(hcd);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>    }<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>    getAdmin().createTable(desc);<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>    // assigned<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>    return getConnection().getTable(tableName);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>  }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span><a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>      int numVersions, int blockSize, String cpName) throws IOException {<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>      HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>      for (byte[] family : families) {<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>            .setMaxVersions(numVersions)<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>            .setBlocksize(blockSize);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        desc.addFamily(hcd);<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span>      if(cpName != null) {<a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>        desc.addCoprocessor(cpName);<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>      }<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      getAdmin().createTable(desc);<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>      // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      // assigned<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>      waitUntilAllRegionsAssigned(tableName);<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      return getConnection().getTable(tableName);<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span>    }<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span><a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>  /**<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>   * Create a table.<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>   * @param tableName<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>   * @param families<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>   * @param numVersions<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span>   * @return A Table instance for the created table.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>   * @throws IOException<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span>   */<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      int[] numVersions)<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>  throws IOException {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>    int i = 0;<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>    for (byte[] family : families) {<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>          .setMaxVersions(numVersions[i]);<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      desc.addFamily(hcd);<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      i++;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>    getAdmin().createTable(desc);<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>    // assigned<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span>    return getConnection().getTable(tableName);<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>  }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span><a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>  /**<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>   * Create a table.<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>   * @param tableName<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>   * @param family<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>   * @param splitRows<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>   * @return A Table instance for the created table.<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>   * @throws IOException<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>   */<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>  public Table createTable(TableName tableName, byte[] family, byte[][] splitRows)<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      throws IOException {<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    desc.addFamily(hcd);<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>    getAdmin().createTable(desc, splitRows);<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>    // assigned<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>    return getConnection().getTable(tableName);<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>  }<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span><a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>  /**<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>   * Create a table with multiple regions.<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>   * @param ta

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
index bc4887a..b12b756 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
@@ -1245,3081 +1245,3103 @@
 <span class="sourceLineNo">1237</span>  }<a name="line.1237"></a>
 <span class="sourceLineNo">1238</span><a name="line.1238"></a>
 <span class="sourceLineNo">1239</span>  /**<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>   * Shutdown HBase mini cluster.  Does not shutdown zk or dfs if running.<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>   */<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>  public void shutdownMiniHBaseCluster() throws IOException {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>    if (hbaseAdmin != null) {<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>      hbaseAdmin.close();<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>      hbaseAdmin = null;<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>    }<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    if (this.connection != null) {<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>      this.connection.close();<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>      this.connection = null;<a name="line.1249"></a>
+<span class="sourceLineNo">1240</span>   * Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>   * @throws java.io.IOException in case command is unsuccessful<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>   */<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  public void shutdownMiniHBaseCluster() throws IOException {<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>    cleanup();<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>    if (this.hbaseCluster != null) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>      this.hbaseCluster.shutdown();<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      // Wait till hbase is down before going on to shutdown zk.<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>      this.hbaseCluster.waitUntilShutDown();<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>      this.hbaseCluster = null;<a name="line.1249"></a>
 <span class="sourceLineNo">1250</span>    }<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // unset the configuration for MIN and MAX RS to start<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1);<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>    if (this.hbaseCluster != null) {<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>      this.hbaseCluster.shutdown();<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>      // Wait till hbase is down before going on to shutdown zk.<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>      this.hbaseCluster.waitUntilShutDown();<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>      this.hbaseCluster = null;<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>    }<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>    if (zooKeeperWatcher != null) {<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>      zooKeeperWatcher.close();<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>      zooKeeperWatcher = null;<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>    }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>  }<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span><a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>  /**<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Returns the path to the default root dir the minicluster uses. If &lt;code&gt;create&lt;/code&gt;<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   * is true, a new root directory path is fetched irrespective of whether it has been fetched<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>   * before or not. If false, previous path is used.<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>   * Note: this does not cause the root dir to be created.<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>   * @throws IOException<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>   */<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public Path getDefaultRootDirPath(boolean create) throws IOException {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    if (!create) {<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>      return getDataTestDirOnTestFS();<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>    } else {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>      return getNewDataTestDirOnTestFS();<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>    }<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>  }<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span><a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>  /**<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>   * Same as {{@link HBaseTestingUtility#getDefaultRootDirPath(boolean create)}<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>   * Note: this does not cause the root dir to be created.<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>   * @throws IOException<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>   */<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public Path getDefaultRootDirPath() throws IOException {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return getDefaultRootDirPath(false);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  /**<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>   * Creates an hbase rootdir in user home directory.  Also creates hbase<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>   * version file.  Normally you won't make use of this method.  Root hbasedir<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>   * is created for you as part of mini cluster startup.  You'd only use this<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>   * method if you were doing manual operation.<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>   * @param create This flag decides whether to get a new<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>   * root or data directory path or not, if it has been fetched already.<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>   * Note : Directory will be made irrespective of whether path has been fetched or not.<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>   * If directory already exists, it will be overwritten<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>   * @return Fully qualified path to hbase root dir<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>   * @throws IOException<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>   */<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>  public Path createRootDir(boolean create) throws IOException {<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>    Path hbaseRootdir = getDefaultRootDirPath(create);<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>    FSUtils.setRootDir(this.conf, hbaseRootdir);<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>    fs.mkdirs(hbaseRootdir);<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    FSUtils.setVersion(fs, hbaseRootdir);<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>    return hbaseRootdir;<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>  }<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span><a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  /**<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>   * Same as {@link HBaseTestingUtility#createRootDir(boolean create)}<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>   * @return Fully qualified path to hbase root dir<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>   * @throws IOException<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>   */<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>  public Path createRootDir() throws IOException {<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>    return createRootDir(false);<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>  }<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span><a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  /**<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>   * Creates a hbase walDir in the user's home directory.<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>   * Normally you won't make use of this method. Root hbaseWALDir<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>   * is created for you as part of mini cluster startup. You'd only use this<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>   * method if you were doing manual operation.<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>   *<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>   * @return Fully qualified path to hbase root dir<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>   * @throws IOException<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>  */<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>  public Path createWALRootDir() throws IOException {<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    Path walDir = getNewDataTestDirOnTestFS();<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>    FSUtils.setWALRootDir(this.conf, walDir);<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>    fs.mkdirs(walDir);<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>    return walDir;<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  }<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span><a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  private void setHBaseFsTmpDir() throws IOException {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    String hbaseFsTmpDirInString = this.conf.get("hbase.fs.tmp.dir");<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>    if (hbaseFsTmpDirInString == null) {<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>      this.conf.set("hbase.fs.tmp.dir",  getDataTestDirOnTestFS("hbase-staging").toString());<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>      LOG.info("Setting hbase.fs.tmp.dir to " + this.conf.get("hbase.fs.tmp.dir"));<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>    } else {<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>      LOG.info("The hbase.fs.tmp.dir is set to " + hbaseFsTmpDirInString);<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>    }<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>  }<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span><a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>  /**<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>   * Flushes all caches in the mini hbase cluster<a name="line.1352"></a>
+<span class="sourceLineNo">1251</span>    if (zooKeeperWatcher != null) {<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>      zooKeeperWatcher.close();<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>      zooKeeperWatcher = null;<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>    }<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>  }<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span><a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>  /**<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>   * Abruptly Shutdown HBase mini cluster. Does not shutdown zk or dfs if running.<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>   * @throws java.io.IOException throws in case command is unsuccessful<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>   */<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>  public void killMiniHBaseCluster() throws IOException {<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    cleanup();<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>    if (this.hbaseCluster != null) {<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>      getMiniHBaseCluster().killAll();<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>      this.hbaseCluster = null;<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>    }<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>    if (zooKeeperWatcher != null) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>      zooKeeperWatcher.close();<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>      zooKeeperWatcher = null;<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    }<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span><a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>  // close hbase admin, close current connection and reset MIN MAX configs for RS.<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>  private void cleanup() throws IOException {<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>    if (hbaseAdmin != null) {<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span>      hbaseAdmin.close();<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>      hbaseAdmin = null;<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>    }<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    if (this.connection != null) {<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>      this.connection.close();<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span>      this.connection = null;<a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>    }<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>    // unset the configuration for MIN and MAX RS to start<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1);<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span>  }<a name="line.1286"></a>
+<span class="sourceLineNo">1287</span><a name="line.1287"></a>
+<span class="sourceLineNo">1288</span>  /**<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>   * Returns the path to the default root dir the minicluster uses. If &lt;code&gt;create&lt;/code&gt;<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span>   * is true, a new root directory path is fetched irrespective of whether it has been fetched<a name="line.1290"></a>
+<span class="sourceLineNo">1291</span>   * before or not. If false, previous path is used.<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>   * Note: this does not cause the root dir to be created.<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span>   * @throws IOException<a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>   */<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span>  public Path getDefaultRootDirPath(boolean create) throws IOException {<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>    if (!create) {<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span>      return getDataTestDirOnTestFS();<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>    } else {<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>      return getNewDataTestDirOnTestFS();<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span>    }<a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>  }<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span><a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>  /**<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span>   * Same as {{@link HBaseTestingUtility#getDefaultRootDirPath(boolean create)}<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span>   * Note: this does not cause the root dir to be created.<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>   * @throws IOException<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>   */<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span>  public Path getDefaultRootDirPath() throws IOException {<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>    return getDefaultRootDirPath(false);<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span>  }<a name="line.1313"></a>
+<span class="sourceLineNo">1314</span><a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>  /**<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>   * Creates an hbase rootdir in user home directory.  Also creates hbase<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span>   * version file.  Normally you won't make use of this method.  Root hbasedir<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>   * is created for you as part of mini cluster startup.  You'd only use this<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span>   * method if you were doing manual operation.<a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>   * @param create This flag decides whether to get a new<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span>   * root or data directory path or not, if it has been fetched already.<a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>   * Note : Directory will be made irrespective of whether path has been fetched or not.<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>   * If directory already exists, it will be overwritten<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>   * @return Fully qualified path to hbase root dir<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>   * @throws IOException<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>   */<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span>  public Path createRootDir(boolean create) throws IOException {<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span>    Path hbaseRootdir = getDefaultRootDirPath(create);<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span>    FSUtils.setRootDir(this.conf, hbaseRootdir);<a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>    fs.mkdirs(hbaseRootdir);<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>    FSUtils.setVersion(fs, hbaseRootdir);<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>    return hbaseRootdir;<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>  }<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span><a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>  /**<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span>   * Same as {@link HBaseTestingUtility#createRootDir(boolean create)}<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>   * @return Fully qualified path to hbase root dir<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>   * @throws IOException<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span>   */<a name="line.1341"></a>
+<span class="sourceLineNo">1342</span>  public Path createRootDir() throws IOException {<a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>    return createRootDir(false);<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>  }<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span><a name="line.1345"></a>
+<span class="sourceLineNo">1346</span>  /**<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span>   * Creates a hbase walDir in the user's home directory.<a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>   * Normally you won't make use of this method. Root hbaseWALDir<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>   * is created for you as part of mini cluster startup. You'd only use this<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span>   * method if you were doing manual operation.<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>   *<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>   * @return Fully qualified path to hbase root dir<a name="line.1352"></a>
 <span class="sourceLineNo">1353</span>   * @throws IOException<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>   */<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>  public void flush() throws IOException {<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    getMiniHBaseCluster().flushcache();<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>  }<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>  /**<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>   * Flushes all caches in the mini hbase cluster<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>   * @throws IOException<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>   */<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>  public void flush(TableName tableName) throws IOException {<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    getMiniHBaseCluster().flushcache(tableName);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>  }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>  /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>   * Compact all regions in the mini hbase cluster<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>   * @throws IOException<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>   */<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>  public void compact(boolean major) throws IOException {<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>    getMiniHBaseCluster().compact(major);<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>  }<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span><a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>  /**<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>   * Compact all of a table's reagion in the mini hbase cluster<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>   * @throws IOException<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>   */<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>  public void compact(TableName tableName, boolean major) throws IOException {<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>    getMiniHBaseCluster().compact(tableName, major);<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>  }<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span><a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>  /**<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>   * Create a table.<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>   * @param tableName<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>   * @param family<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>   * @return A Table instance for the created table.<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>   * @throws IOException<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>   */<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>  public Table createTable(TableName tableName, String family)<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>  throws IOException{<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>    return createTable(tableName, new String[]{family});<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>  }<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>  /**<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>   * Create a table.<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>   * @param tableName<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>   * @param families<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>   * @return A Table instance for the created table.<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>   * @throws IOException<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>   */<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>  public Table createTable(TableName tableName, String[] families)<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>  throws IOException {<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>    List&lt;byte[]&gt; fams = new ArrayList&lt;&gt;(families.length);<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>    for (String family : families) {<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>      fams.add(Bytes.toBytes(family));<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>    }<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>    return createTable(tableName, fams.toArray(new byte[0][]));<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>  }<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span><a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>  /**<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>   * Create a table.<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>   * @param tableName<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>   * @param family<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>   * @return A Table instance for the created table.<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>   * @throws IOException<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>   */<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>  public Table createTable(TableName tableName, byte[] family)<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>  throws IOException{<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>    return createTable(tableName, new byte[][]{family});<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>  }<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span><a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>  /**<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>   * Create a table with multiple regions.<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>   * @param tableName<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>   * @param family<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>   * @param numRegions<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>   * @return A Table instance for the created table.<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>   * @throws IOException<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>   */<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>  public Table createMultiRegionTable(TableName tableName, byte[] family, int numRegions)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>      throws IOException {<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>    if (numRegions &lt; 3) throw new IOException("Must create at least 3 regions");<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>    byte[] startKey = Bytes.toBytes("aaaaa");<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>    byte[] endKey = Bytes.toBytes("zzzzz");<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>    byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span><a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>    return createTable(tableName, new byte[][] { family }, splitKeys);<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>  }<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span><a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>  /**<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>   * Create a table.<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>   * @param tableName<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>   * @param families<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>   * @return A Table instance for the created table.<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>   * @throws IOException<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>   */<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>  public Table createTable(TableName tableName, byte[][] families)<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>  throws IOException {<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>    return createTable(tableName, families, (byte[][]) null);<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>  }<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span><a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>  /**<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>   * Create a table with multiple regions.<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>   * @param tableName<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>   * @param families<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>   * @return A Table instance for the created table.<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>   * @throws IOException<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>   */<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families) throws IOException {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>    return createTable(tableName, families, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>  }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span><a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>  /**<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>   * Create a table.<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>   * @param tableName<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>   * @param families<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>   * @param splitKeys<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>   * @return A Table instance for the created table.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>   * @throws IOException<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>   */<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys)<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>      throws IOException {<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>    return createTable(tableName, families, splitKeys, 1, new Configuration(getConfiguration()));<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>  }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>  /**<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>   * Create a table.<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>   * @param tableName the table name<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>   * @param families the families<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>   * @param splitKeys the splitkeys<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>   * @param replicaCount the region replica count<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>   * @return A Table instance for the created table.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>   * @throws IOException throws IOException<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>   */<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>      int replicaCount) throws IOException {<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>    return createTable(tableName, families, splitKeys, replicaCount,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>      new Configuration(getConfiguration()));<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>  }<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span><a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>      int numVersions, byte[] startKey, byte[] endKey, int numRegions)<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>  throws IOException{<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions);<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>    getAdmin().createTable(desc, startKey, endKey, numRegions);<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>    // should wait until they are assigned<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>    return getConnection().getTable(tableName);<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>  }<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span><a name="line.1503"></a>
-<span class="sourceLineNo">1504</span>  /**<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>   * Create a table.<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>   * @param htd<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>   * @param families<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>   * @param c Configuration to use<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>   * @return A Table instance for the created table.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>   * @throws IOException<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>   */<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>  public Table createTable(TableDescriptor htd, byte[][] families, Configuration c)<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>  throws IOException {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>    return createTable(htd, families, null, c);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>  }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span><a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>  /**<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>   * Create a table.<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>   * @param htd table descriptor<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>   * @param families array of column families<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>   * @param splitKeys array of split keys<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>   * @param c Configuration to use<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>   * @return A Table instance for the created table.<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>   */<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>      Configuration c) throws IOException {<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>    // Disable blooms (they are on by default as of 0.95) but we disable them here because<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    // tests have hard coded counts of what to expect in block cache, etc., and blooms being<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>    // on is interfering.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>    return createTable(htd, families, splitKeys, BloomType.NONE, HConstants.DEFAULT_BLOCKSIZE, c);<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>  }<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span><a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>  /**<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>   * Create a table.<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>   * @param htd table descriptor<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>   * @param families array of column families<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>   * @param splitKeys array of split keys<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>   * @param type Bloom type<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>   * @param blockSize block size<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>   * @param c Configuration to use<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>   * @return A Table instance for the created table.<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>   */<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span><a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>      BloomType type, int blockSize, Configuration c) throws IOException {<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>    for (byte[] family : families) {<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>      builder.setColumnFamily(<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>          ColumnFamilyDescriptorBuilder.newBuilder(family).setBloomFilterType(type)<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>              .setBlocksize(blockSize).build());<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>    }<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>    TableDescriptor td = builder.build();<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>    getAdmin().createTable(td, splitKeys);<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>    // we should wait until they are assigned<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>    waitUntilAllRegionsAssigned(td.getTableName());<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>    return getConnection().getTable(td.getTableName());<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>  /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>   * Create a table.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>   * @param htd table descriptor<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>   * @param splitRows array of split keys<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>   * @return A Table instance for the created table.<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>   * @throws IOException<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>   */<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>  public Table createTable(TableDescriptor htd, byte[][] splitRows)<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>      throws IOException {<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>    getAdmin().createTable(htd, splitRows);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>    // we should wait until they are assigned<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>    waitUntilAllRegionsAssigned(htd.getTableName());<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    return getConnection().getTable(htd.getTableName());<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>  }<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span><a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>  /**<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>   * Create a table.<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>   * @param tableName the table name<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>   * @param families the families<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>   * @param splitKeys the split keys<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>   * @param replicaCount the replica count<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>   * @param c Configuration to use<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>   * @return A Table instance for the created table.<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>   * @throws IOException<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>   */<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>      int replicaCount, final Configuration c) throws IOException {<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>    htd.setRegionReplication(replicaCount);<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>    return createTable(htd, families, splitKeys, c);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>  }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span><a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>  /**<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>   * Create a table.<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>   * @param tableName<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>   * @param family<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>   * @param numVersions<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>   * @return A Table instance for the created table.<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>   * @throws IOException<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>   */<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>  public Table createTable(TableName tableName, byte[] family, int numVersions)<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>  throws IOException {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>    return createTable(tableName, new byte[][]{family}, numVersions);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>  }<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span><a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>  /**<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>   * Create a table.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>   * @param tableName<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>   * @param families<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>   * @param numVersions<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>   * @return A Table instance for the created table.<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>   * @throws IOException<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>   */<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>      throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>    return createTable(tableName, families, numVersions, (byte[][]) null);<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>  }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span><a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>  /**<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>   * Create a table.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>   * @param tableName<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>   * @param families<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>   * @param numVersions<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>   * @param splitKeys<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>   * @return A Table instance for the created table.<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>   * @throws IOException<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>   */<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions,<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      byte[][] splitKeys) throws IOException {<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>    for (byte[] family : families) {<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>      HColumnDescriptor hcd = new HColumnDescriptor(family).setMaxVersions(numVersions);<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>      desc.addFamily(hcd);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>    }<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>    getAdmin().createTable(desc, splitKeys);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>    // assigned<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>    return getConnection().getTable(tableName);<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>  }<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span><a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>  /**<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>   * Create a table with multiple regions.<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>   * @param tableName<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>   * @param families<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>   * @param numVersions<a name="line.1648"></a>
+<span class="sourceLineNo">1354</span>  */<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>  public Path createWALRootDir() throws IOException {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>    Path walDir = getNewDataTestDirOnTestFS();<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    FSUtils.setWALRootDir(this.conf, walDir);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    fs.mkdirs(walDir);<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span>    return walDir;<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span>  }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>  private void setHBaseFsTmpDir() throws IOException {<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>    String hbaseFsTmpDirInString = this.conf.get("hbase.fs.tmp.dir");<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    if (hbaseFsTmpDirInString == null) {<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>      this.conf.set("hbase.fs.tmp.dir",  getDataTestDirOnTestFS("hbase-staging").toString());<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      LOG.info("Setting hbase.fs.tmp.dir to " + this.conf.get("hbase.fs.tmp.dir"));<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>    } else {<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      LOG.info("The hbase.fs.tmp.dir is set to " + hbaseFsTmpDirInString);<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>    }<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>  }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span><a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>  /**<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>   * Flushes all caches in the mini hbase cluster<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>   * @throws IOException<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>   */<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>  public void flush() throws IOException {<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>    getMiniHBaseCluster().flushcache();<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>  }<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span><a name="line.1380"></a>
+<span class="sourceLineNo">1381</span>  /**<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>   * Flushes all caches in the mini hbase cluster<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>   * @throws IOException<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>   */<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>  public void flush(TableName tableName) throws IOException {<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    getMiniHBaseCluster().flushcache(tableName);<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>  }<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span><a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>  /**<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>   * Compact all regions in the mini hbase cluster<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>   * @throws IOException<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>   */<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>  public void compact(boolean major) throws IOException {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>    getMiniHBaseCluster().compact(major);<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span>  }<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span><a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>  /**<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>   * Compact all of a table's reagion in the mini hbase cluster<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>   * @throws IOException<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>   */<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>  public void compact(TableName tableName, boolean major) throws IOException {<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>    getMiniHBaseCluster().compact(tableName, major);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>  }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>  /**<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>   * Create a table.<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>   * @param tableName<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>   * @param family<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>   * @return A Table instance for the created table.<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>   * @throws IOException<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>   */<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>  public Table createTable(TableName tableName, String family)<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>  throws IOException{<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>    return createTable(tableName, new String[]{family});<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>  }<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span><a name="line.1416"></a>
+<span class="sourceLineNo">1417</span>  /**<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>   * Create a table.<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>   * @param tableName<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>   * @param families<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>   * @return A Table instance for the created table.<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>   * @throws IOException<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>   */<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>  public Table createTable(TableName tableName, String[] families)<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>  throws IOException {<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>    List&lt;byte[]&gt; fams = new ArrayList&lt;&gt;(families.length);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>    for (String family : families) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>      fams.add(Bytes.toBytes(family));<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>    }<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>    return createTable(tableName, fams.toArray(new byte[0][]));<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>  }<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span><a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>  /**<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>   * Create a table.<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>   * @param tableName<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>   * @param family<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>   * @return A Table instance for the created table.<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>   * @throws IOException<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>   */<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>  public Table createTable(TableName tableName, byte[] family)<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>  throws IOException{<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>    return createTable(tableName, new byte[][]{family});<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>  }<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span><a name="line.1444"></a>
+<span class="sourceLineNo">1445</span>  /**<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>   * Create a table with multiple regions.<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>   * @param tableName<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>   * @param family<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>   * @param numRegions<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span>   * @return A Table instance for the created table.<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>   * @throws IOException<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>   */<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>  public Table createMultiRegionTable(TableName tableName, byte[] family, int numRegions)<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>      throws IOException {<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>    if (numRegions &lt; 3) throw new IOException("Must create at least 3 regions");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>    byte[] startKey = Bytes.toBytes("aaaaa");<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>    byte[] endKey = Bytes.toBytes("zzzzz");<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>    byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span><a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>    return createTable(tableName, new byte[][] { family }, splitKeys);<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>  }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>  /**<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>   * Create a table.<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>   * @param tableName<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>   * @param families<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>   * @return A Table instance for the created table.<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>   * @throws IOException<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>   */<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>  public Table createTable(TableName tableName, byte[][] families)<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>  throws IOException {<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>    return createTable(tableName, families, (byte[][]) null);<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>  }<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span><a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>  /**<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>   * Create a table with multiple regions.<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span>   * @param tableName<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>   * @param families<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>   * @return A Table instance for the created table.<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>   * @throws IOException<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>   */<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families) throws IOException {<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>    return createTable(tableName, families, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>  }<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span><a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>  /**<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>   * Create a table.<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>   * @param tableName<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>   * @param families<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>   * @param splitKeys<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>   * @return A Table instance for the created table.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>   * @throws IOException<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>   */<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys)<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>      throws IOException {<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    return createTable(tableName, families, splitKeys, 1, new Configuration(getConfiguration()));<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>  }<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span><a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>  /**<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>   * Create a table.<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>   * @param tableName the table name<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>   * @param families the families<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>   * @param splitKeys the splitkeys<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>   * @param replicaCount the region replica count<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span>   * @return A Table instance for the created table.<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>   * @throws IOException throws IOException<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>   */<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>      int replicaCount) throws IOException {<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>    return createTable(tableName, families, splitKeys, replicaCount,<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>      new Configuration(getConfiguration()));<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>  }<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span><a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span>      int numVersions, byte[] startKey, byte[] endKey, int numRegions)<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>  throws IOException{<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>    HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions);<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span><a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>    getAdmin().createTable(desc, startKey, endKey, numRegions);<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>    // should wait until they are assigned<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>    return getConnection().getTable(tableName);<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>  }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span><a name="line.1525"></a>
+<span class="sourceLineNo">1526</span>  /**<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>   * Create a table.<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>   * @param htd<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>   * @param families<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>   * @param c Configuration to use<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>   * @return A Table instance for the created table.<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>   * @throws IOException<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>   */<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>  public Table createTable(TableDescriptor htd, byte[][] families, Configuration c)<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>  throws IOException {<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>    return createTable(htd, families, null, c);<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>  }<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span><a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>  /**<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>   * Create a table.<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>   * @param htd table descriptor<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>   * @param families array of column families<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>   * @param splitKeys array of split keys<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>   * @param c Configuration to use<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>   * @return A Table instance for the created table.<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>   */<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>      Configuration c) throws IOException {<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>    // Disable blooms (they are on by default as of 0.95) but we disable them here because<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span>    // tests have hard coded counts of what to expect in block cache, etc., and blooms being<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>    // on is interfering.<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>    return createTable(htd, families, splitKeys, BloomType.NONE, HConstants.DEFAULT_BLOCKSIZE, c);<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>  }<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span><a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>  /**<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>   * Create a table.<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>   * @param htd table descriptor<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>   * @param families array of column families<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>   * @param splitKeys array of split keys<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>   * @param type Bloom type<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>   * @param blockSize block size<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>   * @param c Configuration to use<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>   * @return A Table instance for the created table.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>   */<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span><a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>      BloomType type, int blockSize, Configuration c) throws IOException {<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>    for (byte[] family : families) {<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>      builder.setColumnFamily(<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>          ColumnFamilyDescriptorBuilder.newBuilder(family).setBloomFilterType(type)<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>              .setBlocksize(blockSize).build());<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>    }<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    TableDescriptor td = builder.build();<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>    getAdmin().createTable(td, splitKeys);<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    // we should wait until they are assigned<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    waitUntilAllRegionsAssigned(td.getTableName());<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>    return getConnection().getTable(td.getTableName());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>  }<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span><a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>  /**<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>   * Create a table.<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>   * @param htd table descriptor<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>   * @param splitRows array of split keys<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>   * @return A Table instance for the created table.<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>   * @throws IOException<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>   */<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>  public Table createTable(TableDescriptor htd, byte[][] splitRows)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>      throws IOException {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>    getAdmin().createTable(htd, splitRows);<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>    // we should wait until they are assigned<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>    waitUntilAllRegionsAssigned(htd.getTableName());<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>    return getConnection().getTable(htd.getTableName());<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>  }<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span><a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>  /**<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>   * Create a table.<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>   * @param tableName the table name<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>   * @param families the families<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>   * @param splitKeys the split keys<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>   * @param replicaCount the replica count<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span>   * @param c Configuration to use<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>   * @return A Table instance for the created table.<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>   * @throws IOException<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>   */<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>      int replicaCount, final Configuration c) throws IOException {<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>    htd.setRegionReplication(replicaCount);<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>    return createTable(htd, families, splitKeys, c);<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span>  }<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span><a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>  /**<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>   * Create a table.<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>   * @param tableName<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>   * @param family<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>   * @param numVersions<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>   * @return A Table instance for the created table.<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>   * @throws IOException<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>   */<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>  public Table createTable(TableName tableName, byte[] family, int numVersions)<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>  throws IOException {<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>    return createTable(tableName, new byte[][]{family}, numVersions);<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>  }<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span><a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>  /**<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>   * Create a table.<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span>   * @param tableName<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>   * @param families<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>   * @param numVersions<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>   * @return A Table instance for the created table.<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>   * @throws IOException<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>   */<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>      throws IOException {<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>    return createTable(tableName, families, numVersions, (byte[][]) null);<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span>  }<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span><a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>  /**<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>   * Create a table.<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span>   * @param tableName<a name="line.1645"></a>
+<span class="sourceLineNo">1646</span>   * @param families<a name="line.1646"></a>
+<span class="sourceLineNo">1647</span>   * @param numVersions<a name="line.1647"></a>
+<span class="sourceLineNo">1648</span>   * @param splitKeys<a name="line.1648"></a>
 <span class="sourceLineNo">1649</span>   * @return A Table instance for the created table.<a name="line.1649"></a>
 <span class="sourceLineNo">1650</span>   * @throws IOException<a name="line.1650"></a>
 <span class="sourceLineNo">1651</span>   */<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>      throws IOException {<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>    return createTable(tableName, families, numVersions, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>  }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>  /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>   * Create a table.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>   * @param tableName<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>   * @param families<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>   * @param numVersions<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>   * @param blockSize<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>   * @return A Table instance for the created table.<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>   * @throws IOException<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>   */<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>    int numVersions, int blockSize) throws IOException {<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>    for (byte[] family : families) {<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>      HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          .setMaxVersions(numVersions)<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          .setBlocksize(blockSize);<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>      desc.addFamily(hcd);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>    }<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>    getAdmin().createTable(desc);<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>    // assigned<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>    return getConnection().getTable(tableName);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>  }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span><a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>      int numVersions, int blockSize, String cpName) throws IOException {<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>      HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>      for (byte[] family : families) {<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>            .setMaxVersions(numVersions)<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>            .setBlocksize(blockSize);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        desc.addFamily(hcd);<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span>      if(cpName != null) {<a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>        desc.addCoprocessor(cpName);<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>      }<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      getAdmin().createTable(desc);<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>      // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      // assigned<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>      waitUntilAllRegionsAssigned(tableName);<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      return getConnection().getTable(tableName);<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span>    }<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span><a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>  /**<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>   * Create a table.<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>   * @param tableName<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>   * @param families<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>   * @param numVersions<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span>   * @return A Table instance for the created table.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>   * @throws IOException<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span>   */<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      int[] numVersions)<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>  throws IOException {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>    int i = 0;<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>    for (byte[] family : families) {<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>          .setMaxVersions(numVersions[i]);<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      desc.addFamily(hcd);<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      i++;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>    getAdmin().createTable(desc);<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>    // assigned<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span>    return getConnection().getTable(tableName);<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>  }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span><a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>  /**<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>   * Create a table.<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>   * @param tableName<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>   * @param family<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>   * @param splitRows<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>   * @return A Table instance for the created table.<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>   * @throws IOException<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>   */<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>  public Table createTable(TableName tableName, byte[] family, byte[][] splitRows)<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      throws IOException {<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    desc.addFamily(hcd);<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>    getAdmin().createTable(desc, splitRows);<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>    // assigned<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>    return getConnection().getTable(tableName);<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>  }<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span><a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>  /**<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>   * Create a table with multiple regions.<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>   * @par

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
index 211aacd..ea5be52 100644
--- a/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":10,"i6":10,"i7":10,"i8":9,"i9":9,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":9,"i16":10,"i17":10,"i18":9,"i19":42,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":41,"i26":41,"i27":10,"i28":10,"i29":10,"i30":42,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":9,"i37":9,"i38":9,"i39":9,"i40":9,"i41":9,"i42":9,"i43":10,"i44":9,"i45":9,"i46":10,"i47":10,"i48":10,"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":10,"i67":42,"i68":42,"i69":10,"i70":10,"i71":10,"i72":10,"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":10,"i92":9,"i93":9,"i94":10,"i95":9,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":9,"i106":9,"i107":9,"i108":42,"i109":10,"i110":10,"i11
 1":10,"i112":9,"i113":42,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":9,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":9,"i138":9,"i139":10,"i140":10,"i141":10,"i142":10,"i143":10,"i144":9,"i145":9,"i146":10,"i147":9,"i148":10,"i149":10,"i150":10,"i151":10,"i152":9,"i153":9,"i154":10,"i155":10,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":42,"i162":10,"i163":42,"i164":42,"i165":42,"i166":42,"i167":42,"i168":42,"i169":42,"i170":42,"i171":42,"i172":42,"i173":10,"i174":10,"i175":10,"i176":10,"i177":10,"i178":10,"i179":10,"i180":42,"i181":42,"i182":42,"i183":10,"i184":10,"i185":10,"i186":10,"i187":10,"i188":10,"i189":10,"i190":10,"i191":10,"i192":10,"i193":10,"i194":10,"i195":10,"i196":10,"i197":9,"i198":10,"i199":10,"i200":10,"i201":10,"i202":10,"i203":10,"i204":10,"i205":10,"i206":10,"i207":10,"i208":10,"i209":10,"i210":10,"i211":10,"
 i212":10};
+var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":10,"i6":10,"i7":10,"i8":9,"i9":9,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":9,"i16":10,"i17":10,"i18":9,"i19":42,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":41,"i26":41,"i27":10,"i28":10,"i29":10,"i30":42,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":9,"i37":9,"i38":9,"i39":9,"i40":9,"i41":9,"i42":9,"i43":10,"i44":9,"i45":9,"i46":10,"i47":10,"i48":10,"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":10,"i67":42,"i68":42,"i69":10,"i70":10,"i71":10,"i72":10,"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":10,"i92":9,"i93":9,"i94":10,"i95":9,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":9,"i106":9,"i107":9,"i108":42,"i109":10,"i110":10,"i11
 1":10,"i112":9,"i113":42,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":9,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":9,"i139":9,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":9,"i146":9,"i147":10,"i148":9,"i149":10,"i150":10,"i151":10,"i152":10,"i153":9,"i154":9,"i155":10,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":42,"i163":10,"i164":42,"i165":42,"i166":42,"i167":42,"i168":42,"i169":42,"i170":42,"i171":42,"i172":42,"i173":42,"i174":10,"i175":10,"i176":10,"i177":10,"i178":10,"i179":10,"i180":10,"i181":42,"i182":42,"i183":42,"i184":10,"i185":10,"i186":10,"i187":10,"i188":10,"i189":10,"i190":10,"i191":10,"i192":10,"i193":10,"i194":10,"i195":10,"i196":10,"i197":10,"i198":9,"i199":10,"i200":10,"i201":10,"i202":10,"i203":10,"i204":10,"i205":10,"i206":10,"i207":10,"i208":10,"i209":10,"i210":10,"i211":10,"
 i212":10,"i213":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -1187,24 +1187,30 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </tr>
 <tr id="i127" class="rowColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#killMiniHBaseCluster--">killMiniHBaseCluster</a></span>()</code>
+<div class="block">Abruptly Shutdown HBase mini cluster.</div>
+</td>
+</tr>
+<tr id="i128" class="altColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadNumericRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
                byte[]&nbsp;f,
                int&nbsp;startRow,
                int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr id="i128" class="altColor">
+<tr id="i129" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRandomRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadRandomRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
               byte[]&nbsp;f,
               int&nbsp;rowSize,
               int&nbsp;totalRows)</code>&nbsp;</td>
 </tr>
-<tr id="i129" class="rowColor">
+<tr id="i130" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-">loadRegion</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/HRegion.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;r,
           byte[]&nbsp;f)</code>&nbsp;</td>
 </tr>
-<tr id="i130" class="altColor">
+<tr id="i131" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-boolean-">loadRegion</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/HRegion.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;r,
           byte[]&nbsp;f,
@@ -1212,26 +1218,26 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load region with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i131" class="rowColor">
+<tr id="i132" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.Region-byte:A-">loadRegion</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/Region.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;r,
           byte[]&nbsp;f)</code>&nbsp;</td>
 </tr>
-<tr id="i132" class="altColor">
+<tr id="i133" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-">loadTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
          byte[]&nbsp;f)</code>
 <div class="block">Load table with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i133" class="rowColor">
+<tr id="i134" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-">loadTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
          byte[][]&nbsp;f)</code>
 <div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i134" class="altColor">
+<tr id="i135" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-">loadTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
          byte[][]&nbsp;f,
@@ -1239,7 +1245,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i135" class="rowColor">
+<tr id="i136" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-boolean-">loadTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
          byte[][]&nbsp;f,
@@ -1248,7 +1254,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i136" class="altColor">
+<tr id="i137" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-boolean-">loadTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
          byte[]&nbsp;f,
@@ -1256,95 +1262,95 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load table with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i137" class="rowColor">
+<tr id="i138" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSTagsAndOffheapCombination--">memStoreTSTagsAndOffheapCombination</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i138" class="altColor">
+<tr id="i139" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#modifyTableSync-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.client.TableDescriptor-">modifyTableSync</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Admin.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin,
                <a href="../../../../../apidocs/org/apache/hadoop/hbase/client/TableDescriptor.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</code>
 <div class="block">Modify a table, synchronous.</div>
 </td>
 </tr>
-<tr id="i139" class="rowColor">
+<tr id="i140" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#moveRegionAndWait-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">moveRegionAndWait</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/RegionInfo.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;destRegion,
                  <a href="../../../../../apidocs/org/apache/hadoop/hbase/ServerName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">ServerName</a>&nbsp;destServer)</code>
 <div class="block">Move region to destination server and wait till region is completely moved and online</div>
 </td>
 </tr>
-<tr id="i140" class="altColor">
+<tr id="i141" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.ExplainingPredicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">Waiter.ExplainingPredicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateNoRegionsInTransition--">predicateNoRegionsInTransition</a></span>()</code>
 <div class="block">Returns a <a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase"><code>Waiter.Predicate</code></a> for checking that there are no regions in transition in master</div>
 </td>
 </tr>
-<tr id="i141" class="rowColor">
+<tr id="i142" class="altColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableAvailable-org.apache.hadoop.hbase.TableName-">predicateTableAvailable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Returns a <a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase"><code>Waiter.Predicate</code></a> for checking that table is enabled</div>
 </td>
 </tr>
-<tr id="i142" class="altColor">
+<tr id="i143" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableDisabled-org.apache.hadoop.hbase.TableName-">predicateTableDisabled</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Returns a <a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase"><code>Waiter.Predicate</code></a> for checking that table is enabled</div>
 </td>
 </tr>
-<tr id="i143" class="rowColor">
+<tr id="i144" class="altColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableEnabled-org.apache.hadoop.hbase.TableName-">predicateTableEnabled</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Returns a <a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase"><code>Waiter.Predicate</code></a> for checking that table is enabled</div>
 </td>
 </tr>
-<tr id="i144" class="altColor">
+<tr id="i145" class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort--">randomFreePort</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i145" class="rowColor">
+<tr id="i146" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomMultiCastAddress--">randomMultiCastAddress</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i146" class="altColor">
+<tr id="i147" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-int-">restartHBaseCluster</a></span>(int&nbsp;servers)</code>
 <div class="block">Starts the hbase cluster up again after shutting it down previously in a
  test.</div>
 </td>
 </tr>
-<tr id="i147" class="rowColor">
+<tr id="i148" class="altColor">
 <td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#safeGetAsStr-java.util.List-int-">safeGetAsStr</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;&nbsp;lst,
             int&nbsp;i)</code>&nbsp;</td>
 </tr>
-<tr id="i148" class="altColor">
+<tr id="i149" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-">setDFSCluster</a></span>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster)</code>&nbsp;</td>
 </tr>
-<tr id="i149" class="rowColor">
+<tr id="i150" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-boolean-">setDFSCluster</a></span>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster,
              boolean&nbsp;requireDown)</code>
 <div class="block">Set the MiniDFSCluster</div>
 </td>
 </tr>
-<tr id="i150" class="altColor">
+<tr id="i151" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFileSystemURI-java.lang.String-">setFileSystemURI</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fsURI)</code>&nbsp;</td>
 </tr>
-<tr id="i151" class="rowColor">
+<tr id="i152" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseCluster-org.apache.hadoop.hbase.HBaseCluster-">setHBaseCluster</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/HBaseCluster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">HBaseCluster</a>&nbsp;hbaseCluster)</code>&nbsp;</td>
 </tr>
-<tr id="i152" class="altColor">
+<tr id="i153" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setMaxRecoveryErrorCount-java.io.OutputStream-int-">setMaxRecoveryErrorCount</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream,
                         int&nbsp;max)</code>
 <div class="block">Set maxRecoveryErrorCount in DFSClient.</div>
 </td>
 </tr>
-<tr id="i153" class="rowColor">
+<tr id="i154" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setReplicas-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.TableName-int-">setReplicas</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Admin.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin,
            <a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
@@ -1352,50 +1358,50 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Set the number of Region replicas.</div>
 </td>
 </tr>
-<tr id="i154" class="altColor">
+<tr id="i155" class="rowColor">
 <td class="colFirst"><code>protected org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDir--">setupDataTestDir</a></span>()</code>
 <div class="block">Home our data in a dir under <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html#DEFAULT_BASE_TEST_DIRECTORY"><code>HBaseCommonTestingUtility.DEFAULT_BASE_TEST_DIRECTORY</code></a>.</div>
 </td>
 </tr>
-<tr id="i155" class="rowColor">
+<tr id="i156" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.minikdc.MiniKdc</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupMiniKdc-java.io.File-">setupMiniKdc</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;keytabFile)</code>
 <div class="block">Sets up <code>MiniKdc</code> for testing security.</div>
 </td>
 </tr>
-<tr id="i156" class="altColor">
+<tr id="i157" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster--">shutdownMiniCluster</a></span>()</code>
 <div class="block">Stops mini hbase, zk, and hdfs clusters.</div>
 </td>
 </tr>
-<tr id="i157" class="rowColor">
+<tr id="i158" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniDFSCluster--">shutdownMiniDFSCluster</a></span>()</code>
 <div class="block">Shuts down instance created by call to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-"><code>startMiniDFSCluster(int)</code></a>
  or does nothing.</div>
 </td>
 </tr>
-<tr id="i158" class="altColor">
+<tr id="i159" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster--">shutdownMiniHBaseCluster</a></span>()</code>
-<div class="block">Shutdown HBase mini cluster.</div>
+<div class="block">Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.</div>
 </td>
 </tr>
-<tr id="i159" class="rowColor">
+<tr id="i160" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster--">shutdownMiniMapReduceCluster</a></span>()</code>
 <div class="block">Stops the previously started <code>MiniMRCluster</code>.</div>
 </td>
 </tr>
-<tr id="i160" class="altColor">
+<tr id="i161" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster--">startMiniCluster</a></span>()</code>
 <div class="block">Start up a minicluster of hbase, dfs and zookeeper all using default options.</div>
 </td>
 </tr>
-<tr id="i161" class="rowColor">
+<tr id="i162" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-boolean-">startMiniCluster</a></span>(boolean&nbsp;createWALDir)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -1403,13 +1409,13 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i162" class="altColor">
+<tr id="i163" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-">startMiniCluster</a></span>(int&nbsp;numSlaves)</code>
 <div class="block">Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.</div>
 </td>
 </tr>
-<tr id="i163" class="rowColor">
+<tr id="i164" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-">startMiniCluster</a></span>(int&nbsp;numSlaves,
                 boolean&nbsp;createRootDir)</code>
@@ -1418,7 +1424,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i164" class="altColor">
+<tr id="i165" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-boolean-">startMiniCluster</a></span>(int&nbsp;numSlaves,
                 boolean&nbsp;createRootDir,
@@ -1428,7 +1434,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i165" class="rowColor">
+<tr id="i166" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves)</code>
@@ -1437,7 +1443,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i166" class="altColor">
+<tr id="i167" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-boolean-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves,
@@ -1447,7 +1453,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i167" class="rowColor">
+<tr id="i168" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numRegionServers,
@@ -1457,7 +1463,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i168" class="altColor">
+<tr id="i169" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numRegionServers,
@@ -1470,7 +1476,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i169" class="rowColor">
+<tr id="i170" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numRegionServers,
@@ -1485,7 +1491,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i170" class="altColor">
+<tr id="i171" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves,
@@ -1495,7 +1501,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i171" class="rowColor">
+<tr id="i172" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-boolean-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves,
@@ -1506,7 +1512,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i172" class="altColor">
+<tr id="i173" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves,
@@ -1518,48 +1524,48 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i173" class="rowColor">
+<tr id="i174" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniCluster</a></span>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a>&nbsp;option)</code>
 <div class="block">Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.</div>
 </td>
 </tr>
-<tr id="i174" class="altColor">
+<tr id="i175" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-">startMiniDFSCluster</a></span>(int&nbsp;servers)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr id="i175" class="rowColor">
+<tr id="i176" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-">startMiniDFSCluster</a></span>(int&nbsp;servers,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr id="i176" class="altColor">
+<tr id="i177" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-java.lang.String:A-">startMiniDFSCluster</a></span>(int&nbsp;servers,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;racks,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>&nbsp;</td>
 </tr>
-<tr id="i177" class="rowColor">
+<tr id="i178" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-java.lang.String:A-">startMiniDFSCluster</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr id="i178" class="altColor">
+<tr id="i179" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSClusterForTestWAL-int-">startMiniDFSClusterForTestWAL</a></span>(int&nbsp;namenodePort)</code>&nbsp;</td>
 </tr>
-<tr id="i179" class="rowColor">
+<tr id="i180" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster--">startMiniHBaseCluster</a></span>()</code>
 <div class="block">Starts up mini hbase cluster using default options.</div>
 </td>
 </tr>
-<tr id="i180" class="altColor">
+<tr id="i181" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-">startMiniHBaseCluster</a></span>(int&nbsp;numMasters,
                      int&nbsp;numRegionServers)</code>
@@ -1568,7 +1574,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i181" class="rowColor">
+<tr id="i182" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-">startMiniHBaseCluster</a></span>(int&nbsp;numMasters,
                      int&nbsp;numRegionServers,
@@ -1578,7 +1584,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i182" class="altColor">
+<tr id="i183" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniHBaseCluster</a></span>(int&nbsp;numMasters,
                      int&nbsp;numRegionServers,
@@ -1592,66 +1598,66 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i183" class="rowColor">
+<tr id="i184" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniHBaseCluster</a></span>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a>&nbsp;option)</code>
 <div class="block">Starts up mini hbase cluster.</div>
 </td>
 </tr>
-<tr id="i184" class="altColor">
+<tr id="i185" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.mapred.MiniMRCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster--">startMiniMapReduceCluster</a></span>()</code>
 <div class="block">Starts a <code>MiniMRCluster</code> with a default number of
  <code>TaskTracker</code>'s.</div>
 </td>
 </tr>
-<tr id="i185" class="rowColor">
+<tr id="i186" class="altColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-">truncateTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Truncate a table using the admin command.</div>
 </td>
 </tr>
-<tr id="i186" class="altColor">
+<tr id="i187" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-">truncateTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
              boolean&nbsp;preserveRegions)</code>
 <div class="block">Truncate a table using the admin command.</div>
 </td>
 </tr>
-<tr id="i187" class="rowColor">
+<tr id="i188" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-byte:A-">unassignRegion</a></span>(byte[]&nbsp;regionName)</code>
 <div class="block">Unassign the named region.</div>
 </td>
 </tr>
-<tr id="i188" class="altColor">
+<tr id="i189" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-java.lang.String-">unassignRegion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regionName)</code>
 <div class="block">Unassign the named region.</div>
 </td>
 </tr>
-<tr id="i189" class="rowColor">
+<tr id="i190" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-byte:A-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a></span>(byte[]&nbsp;row,
                    <a href="../../../../../apidocs/org/apache/hadoop/hbase/client/RegionLocator.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;table)</code>
 <div class="block">Closes the region containing the given row.</div>
 </td>
 </tr>
-<tr id="i190" class="altColor">
+<tr id="i191" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-java.lang.String-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;row,
                    <a href="../../../../../apidocs/org/apache/hadoop/hbase/client/RegionLocator.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;table)</code>
 <div class="block">Closes the region containing the given row.</div>
 </td>
 </tr>
-<tr id="i191" class="rowColor">
+<tr id="i192" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-">verifyNumericRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/HRegion.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                  byte[]&nbsp;f,
                  int&nbsp;startRow,
                  int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr id="i192" class="altColor">
+<tr id="i193" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-boolean-">verifyNumericRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/HRegion.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                  byte[]&nbsp;f,
@@ -1659,14 +1665,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                  int&nbsp;endRow,
                  boolean&nbsp;present)</code>&nbsp;</td>
 </tr>
-<tr id="i193" class="rowColor">
+<tr id="i194" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-">verifyNumericRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/Region.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;region,
                  byte[]&nbsp;f,
                  int&nbsp;startRow,
                  int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr id="i194" class="altColor">
+<tr id="i195" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-boolean-">verifyNumericRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/Region.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;region,
                  byte[]&nbsp;f,
@@ -1674,7 +1680,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                  int&nbsp;endRow,
                  boolean&nbsp;present)</code>&nbsp;</td>
 </tr>
-<tr id="i195" class="rowColor">
+<tr id="i196" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-int-">verifyNumericRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table,
                  byte[]&nbsp;f,
@@ -1682,78 +1688,78 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                  int&nbsp;endRow,
                  int&nbsp;replicaId)</code>&nbsp;</td>
 </tr>
-<tr id="i196" class="altColor">
+<tr id="i197" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyTableDescriptorIgnoreTableName-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">verifyTableDescriptorIgnoreTableName</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/TableDescriptor.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;ltd,
                                     <a href="../../../../../apidocs/org/apache/hadoop/hbase/client/TableDescriptor.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;rtd)</code>&nbsp;</td>
 </tr>
-<tr id="i197" class="rowColor">
+<tr id="i198" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitForHostPort-java.lang.String-int-">waitForHostPort</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;host,
                int&nbsp;port)</code>&nbsp;</td>
 </tr>
-<tr id="i198" class="altColor">
+<tr id="i199" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitLabelAvailable-long-java.lang.String...-">waitLabelAvailable</a></span>(long&nbsp;timeoutMillis,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;labels)</code>
 <div class="block">Wait until labels is ready in VisibilityLabelsCache.</div>
 </td>
 </tr>
-<tr id="i199" class="rowColor">
+<tr id="i200" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-byte:A-long-">waitTableAvailable</a></span>(byte[]&nbsp;table,
                   long&nbsp;timeoutMillis)</code>
 <div class="block">Wait until all regions in a table have been assigned</div>
 </td>
 </tr>
-<tr id="i200" class="altColor">
+<tr id="i201" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-">waitTableAvailable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</code>
 <div class="block">Wait until all regions in a table have been assigned.</div>
 </td>
 </tr>
-<tr id="i201" class="rowColor">
+<tr id="i202" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-long-">waitTableAvailable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                   long&nbsp;timeoutMillis)</code>&nbsp;</td>
 </tr>
-<tr id="i202" class="altColor">
+<tr id="i203" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-">waitTableDisabled</a></span>(byte[]&nbsp;table)</code>
 <div class="block">Waits for a table to be 'disabled'.</div>
 </td>
 </tr>
-<tr id="i203" class="rowColor">
+<tr id="i204" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-long-">waitTableDisabled</a></span>(byte[]&nbsp;table,
                  long&nbsp;timeoutMillis)</code>
 <div class="block">Waits for a table to be 'disabled'.</div>
 </td>
 </tr>
-<tr id="i204" class="altColor">
+<tr id="i205" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-org.apache.hadoop.hbase.TableName-long-">waitTableDisabled</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                  long&nbsp;millisTimeout)</code>&nbsp;</td>
 </tr>
-<tr id="i205" class="rowColor">
+<tr id="i206" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-byte:A-long-">waitTableEnabled</a></span>(byte[]&nbsp;table,
                 long&nbsp;timeoutMillis)</code>
 <div class="block">Waits for a table to be 'enabled'.</div>
 </td>
 </tr>
-<tr id="i206" class="altColor">
+<tr id="i207" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-">waitTableEnabled</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</code>
 <div class="block">Waits for a table to be 'enabled'.</div>
 </td>
 </tr>
-<tr id="i207" class="rowColor">
+<tr id="i208" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-long-">waitTableEnabled</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                 long&nbsp;timeoutMillis)</code>&nbsp;</td>
 </tr>
-<tr id="i208" class="altColor">
+<tr id="i209" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-">waitUntilAllRegionsAssigned</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Wait until all regions for a table in hbase:meta have a non-empty
@@ -1763,7 +1769,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
  server.</div>
 </td>
 </tr>
-<tr id="i209" class="rowColor">
+<tr id="i210" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-long-">waitUntilAllRegionsAssigned</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                            long&nbsp;timeout)</code>
@@ -1771,19 +1777,19 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
  info:server, or until timeout.</div>
 </td>
 </tr>
-<tr id="i210" class="altColor">
+<tr id="i211" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllSystemRegionsAssigned--">waitUntilAllSystemRegionsAssigned</a></span>()</code>
 <div class="block">Waith until all system table's regions get assigned</div>
 </td>
 </tr>
-<tr id="i211" class="rowColor">
+<tr id="i212" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition--">waitUntilNoRegionsInTransition</a></span>()</code>
 <div class="block">Wait until no regions in transition.</div>
 </td>
 </tr>
-<tr id="i212" class="altColor">
+<tr id="i213" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition-long-">waitUntilNoRegionsInTransition</a></span>(long&nbsp;timeout)</code>
 <div class="block">Wait until no regions in transition.</div>
@@ -1904,7 +1910,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>fam1</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1827">fam1</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1849">fam1</a></pre>
 </li>
 </ul>
 <a name="fam2">
@@ -1913,7 +1919,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>fam2</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1828">fam2</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1850">fam2</a></pre>
 </li>
 </ul>
 <a name="fam3">
@@ -1922,7 +1928,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>fam3</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1829">fam3</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1851">fam3</a></pre>
 </li>
 </ul>
 <a name="COLUMNS">
@@ -1931,7 +1937,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>COLUMNS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1830">COLUMNS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1852">COLUMNS</a></pre>
 </li>
 </ul>
 <a name="FIRST_CHAR">
@@ -1940,7 +1946,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>FIRST_CHAR</h4>
-<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1833">FIRST_CHAR</a></pre>
+<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1855">FIRST_CHAR</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.FIRST_CHAR">Constant Field Values</a></dd>
@@ -1953,7 +1959,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>LAST_CHAR</h4>
-<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1834">LAST_CHAR</a></pre>
+<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1856">LAST_CHAR</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.LAST_CHAR">Constant Field Values</a></dd>
@@ -1966,7 +1972,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>START_KEY_BYTES</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1835">START_KEY_BYTES</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1857">START_KEY_BYTES</a></pre>
 </li>
 </ul>
 <a name="START_KEY">
@@ -1975,7 +1981,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>START_KEY</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1836">START_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1858">START_KEY</a></pre>
 </li>
 </ul>
 <a name="ROWS">
@@ -1984,7 +1990,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>ROWS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2391">ROWS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2413">ROWS</a></pre>
 <div class="block">All the row values for the data loaded by <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-"><code>loadTable(Table, byte[])</code></a></div>
 </li>
 </ul>
@@ -1994,7 +2000,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2406">KEYS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2428">KEYS</a></pre>
 </li>
 </ul>
 <a name="KEYS_FOR_HBA_CREATE_TABLE">
@@ -2003,7 +2009,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>KEYS_FOR_HBA_CREATE_TABLE</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2418">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2440">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
 </li>
 </ul>
 </li>
@@ -3030,12 +3036,27 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdownMiniHBaseCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1242">shutdownMiniHBaseCluster</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1243">shutdownMiniHBaseCluster</a>()
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
-<div class="block">Shutdown HBase mini cluster.  Does not shutdown zk or dfs if running.</div>
+<div class="block">Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.</div>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - in case command is unsuccessful</dd>
+</dl>
+</li>
+</ul>
+<a name="killMiniHBaseCluster--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>killMiniHBaseCluster</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1261">killMiniHBaseCluster</a>()
+                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<div class="block">Abruptly Shutdown HBase mini cluster. Does not shutdown zk or dfs if running.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - throws in case command is unsuccessful</dd>
 </dl>
 </li>
 </ul>
@@ -3045,7 +3066,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getDefaultRootDirPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1274">getDefaultRootDirPath</a>(boolean&nbsp;create)
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1296">getDefaultRootDirPath</a>(boolean&nbsp;create)
                                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Returns the path to the default root dir the minicluster uses. If <code>create</code>
  is true, a new root directory path is fetched irrespective of whether it has been fetched
@@ -3065,7 +3086,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getDefaultRootDirPath</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1289">getDefaultRootDirPath</a>()
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1311">getDefaultRootDirPath</a>()
                                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Same as {<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath-boolean-"><code>getDefaultRootDirPath(boolean create)</code></a>
  except that <code>create</code> flag is false.
@@ -3084,7 +3105,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createRootDir</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1305">createRootDir</a>(boolean&nbsp;create)
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1327">createRootDir</a>(boolean&nbsp;create)
                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates an hbase rootdir in user home directory.  Also creates hbase
  version file.  Normally you won't make use of this method.  Root hbasedir
@@ -3109,7 +3130,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createRootDir</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1320">createRootDir</a>()
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1342">createRootDir</a>()
                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Same as <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir-boolean-"><code>createRootDir(boolean create)</code></a>
  except that <code>create</code> flag is false.</div>
@@ -3127,7 +3148,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createWALRootDir</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1333">createWALRootDir</a>()
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1355">createWALRootDir</a>()
                                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates a hbase walDir in the user's home directory.
  Normally you won't make use of this method. Root hbaseWALDir
@@ -3147,7 +3168,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>flush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1355">flush</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1377">flush</a>()
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Flushes all caches in the mini hbase cluster</div>
 <dl>
@@ -3162,7 +3183,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>flush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1363">flush</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1385">flush</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Flushes all caches in the mini hbase cluster</div>
 <dl>
@@ -3177,7 +3198,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1371">compact</a>(boolean&nbsp;major)
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1393">compact</a>(boolean&nbsp;major)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Compact all regions in the mini hbase cluster</div>
 <dl>
@@ -3192,7 +3213,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>compact</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1379">compact</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1401">compact</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                     boolean&nbsp;major)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Compact all of a table's reagion in the mini hbase cluster</div>
@@ -3208,7 +3229,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1390">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1412">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;family)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a table.</div>
@@ -3229,7 +3250,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1402">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1424">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;families)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a table.</div>
@@ -3250,7 +3271,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1418">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1440">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                          byte[]&nbsp;family)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a table.</div>
@@ -3271,7 +3292,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createMultiRegionTable</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1431">createMultiRegionTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1453">createMultiRegionTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                     byte[]&nbsp;family,
                                     int&nbsp;numRegions)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3294,7 +3315,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1448">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1470">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                          byte[][]&nbsp;families)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a table.</div>
@@ -3315,7 +3336,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createMultiRegionTable</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1460">createMultiRegionTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1482">createMultiRegionTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                     byte[][]&nbsp;families)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a table with multiple regions.</div>
@@ -3336,7 +3357,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1472">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1494">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                          byte[][]&nbsp;families,
                          byte[][]&nbsp;splitKeys)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3359,7 +3380,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1486">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1508">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                          byte[][]&nbsp;families,
                          byte[][]&nbsp;splitKeys,
                          int&nbsp;replicaCount)
@@ -3384,7 +3405,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1492">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1514">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                          byte[][]&nbsp;families,
                          int&nbsp;numVersions,
                          byte[]&nbsp;startKey,
@@ -3403,7 +3424,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1512">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/TableDescriptor.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd,
+<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1534">createTable</a>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/TableDescriptor.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd,
                          byte[][]&nbsp;families,
                          org.apache.hadoop.conf.Configuration&nbsp;c)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3426,7 +3447,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>createTable</h4>
-<pre>public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;<a href=".

<TRUNCATED>

[24/26] hbase-site git commit: Published site at dfeab9f5c968625ac1c642c53c721eb5e81068c0.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/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 f7aa217..f11e74d 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -168,9 +168,9 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
 <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/32cb0f25/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html b/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html
index 3164f8f..990213e 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1022">ConnectionImplementation.MasterServiceState</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1018">ConnectionImplementation.MasterServiceState</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">State of the MasterService connection/setup.</div>
 </li>
@@ -222,7 +222,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>connection</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1023">connection</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1019">connection</a></pre>
 </li>
 </ul>
 <a name="stub">
@@ -231,7 +231,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>stub</h4>
-<pre>org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService.BlockingInterface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1025">stub</a></pre>
+<pre>org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService.BlockingInterface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1021">stub</a></pre>
 </li>
 </ul>
 <a name="userCount">
@@ -240,7 +240,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>userCount</h4>
-<pre>int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1026">userCount</a></pre>
+<pre>int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1022">userCount</a></pre>
 </li>
 </ul>
 </li>
@@ -257,7 +257,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterServiceState</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1028">MasterServiceState</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1024">MasterServiceState</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;connection)</pre>
 </li>
 </ul>
 </li>
@@ -274,7 +274,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1034">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1030">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -287,7 +287,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getStub</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1038">getStub</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1034">getStub</a>()</pre>
 </li>
 </ul>
 <a name="clearStub--">
@@ -296,7 +296,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>clearStub</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1042">clearStub</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1038">clearStub</a>()</pre>
 </li>
 </ul>
 <a name="isMasterRunning--">
@@ -305,7 +305,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isMasterRunning</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1046">isMasterRunning</a>()
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html#line.1042">isMasterRunning</a>()
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html b/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html
index b972a4c..2827ff7 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1137">ConnectionImplementation.MasterServiceStubMaker</a>
+<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1133">ConnectionImplementation.MasterServiceStubMaker</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Class to make a MasterServiceStubMaker stub.</div>
 </li>
@@ -197,7 +197,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterServiceStubMaker</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html#line.1137">MasterServiceStubMaker</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html#line.1133">MasterServiceStubMaker</a>()</pre>
 </li>
 </ul>
 </li>
@@ -214,7 +214,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isMasterRunning</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html#line.1139">isMasterRunning</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService.BlockingInterface&nbsp;stub)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html#line.1135">isMasterRunning</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService.BlockingInterface&nbsp;stub)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -228,7 +228,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>makeStubNoRetries</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html#line.1153">makeStubNoRetries</a>()
+<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html#line.1149">makeStubNoRetries</a>()
                                                                                                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                                                                                                          org.apache.zookeeper.KeeperException</pre>
 <div class="block">Create a stub. Try once only. It is not typed because there is no common type to protobuf
@@ -248,7 +248,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>makeStub</h4>
-<pre>org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html#line.1181">makeStub</a>()
+<pre>org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos.MasterService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html#line.1177">makeStub</a>()
                                                                                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a stub against the master. Retry if necessary.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html b/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html
index 734846d..77c1336 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1121">ConnectionImplementation.ServerErrorTracker.ServerErrors</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1117">ConnectionImplementation.ServerErrorTracker.ServerErrors</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">The record of errors for a server.</div>
 </li>
@@ -208,7 +208,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>retries</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html#line.1122">retries</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html#line.1118">retries</a></pre>
 </li>
 </ul>
 </li>
@@ -225,7 +225,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ServerErrors</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html#line.1121">ServerErrors</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html#line.1117">ServerErrors</a>()</pre>
 </li>
 </ul>
 </li>
@@ -242,7 +242,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html#line.1124">getCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html#line.1120">getCount</a>()</pre>
 </li>
 </ul>
 <a name="addError--">
@@ -251,7 +251,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>addError</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html#line.1128">addError</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html#line.1124">addError</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html b/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html
index 1aa72a1..874e485 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1060">ConnectionImplementation.ServerErrorTracker</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1056">ConnectionImplementation.ServerErrorTracker</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">The record of errors for servers.</div>
 </li>
@@ -257,7 +257,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>errorsByServer</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.ServerErrorTracker.ServerErrors</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1062">errorsByServer</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.ServerErrors.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.ServerErrorTracker.ServerErrors</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1058">errorsByServer</a></pre>
 </li>
 </ul>
 <a name="canRetryUntil">
@@ -266,7 +266,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>canRetryUntil</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1063">canRetryUntil</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1059">canRetryUntil</a></pre>
 </li>
 </ul>
 <a name="maxTries">
@@ -275,7 +275,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>maxTries</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1064">maxTries</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1060">maxTries</a></pre>
 </li>
 </ul>
 <a name="startTrackingTime">
@@ -284,7 +284,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>startTrackingTime</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1065">startTrackingTime</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1061">startTrackingTime</a></pre>
 </li>
 </ul>
 </li>
@@ -301,7 +301,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ServerErrorTracker</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1072">ServerErrorTracker</a>(long&nbsp;timeout,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1068">ServerErrorTracker</a>(long&nbsp;timeout,
                           int&nbsp;maxTries)</pre>
 <div class="block">Constructor</div>
 <dl>
@@ -325,7 +325,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>canTryMore</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1082">canTryMore</a>(int&nbsp;numAttempt)</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1078">canTryMore</a>(int&nbsp;numAttempt)</pre>
 <div class="block">We stop to retry when we have exhausted BOTH the number of tries and the time allocated.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -339,7 +339,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>calculateBackoffTime</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1095">calculateBackoffTime</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1091">calculateBackoffTime</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
                           long&nbsp;basePause)</pre>
 <div class="block">Calculates the back-off time for a retrying request to a particular server.</div>
 <dl>
@@ -357,7 +357,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>reportServerError</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1110">reportServerError</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1106">reportServerError</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server)</pre>
 <div class="block">Reports that there was an error on the server to do whatever bean-counting necessary.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -371,7 +371,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getStartTrackingTime</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1114">getStartTrackingTime</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html#line.1110">getStartTrackingTime</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.html b/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.html
index 1ef7167..692aa0b 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/ConnectionImplementation.html
@@ -1215,7 +1215,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnect
 <ul class="blockList">
 <li class="blockList">
 <h4>stubs</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1017">stubs</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentMap.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1013">stubs</a></pre>
 </li>
 </ul>
 <a name="masterServiceState">
@@ -1224,7 +1224,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnect
 <ul class="blockListLast">
 <li class="blockList">
 <h4>masterServiceState</h4>
-<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.MasterServiceState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1238">masterServiceState</a></pre>
+<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.MasterServiceState</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1234">masterServiceState</a></pre>
 </li>
 </ul>
 </li>
@@ -1787,7 +1787,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>locateRegion</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.683">locateRegion</a>(byte[]&nbsp;regionName)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.679">locateRegion</a>(byte[]&nbsp;regionName)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#locateRegion-byte:A-">ClusterConnection</a></code></span></div>
 <div class="block">Gets the location of the region of <i>regionName</i>.</div>
@@ -1810,7 +1810,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isDeadServer</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.689">isDeadServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.685">isDeadServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</pre>
 </li>
 </ul>
 <a name="locateRegions-org.apache.hadoop.hbase.TableName-">
@@ -1819,7 +1819,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>locateRegions</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.698">locateRegions</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.694">locateRegions</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#locateRegions-org.apache.hadoop.hbase.TableName-">ClusterConnection</a></code></span></div>
 <div class="block">Gets the locations of all regions in the specified table, <i>tableName</i>.</div>
@@ -1841,7 +1841,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>locateRegions</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.703">locateRegions</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.699">locateRegions</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                            boolean&nbsp;useCache,
                                            boolean&nbsp;offlined)
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1868,7 +1868,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>locateRegion</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.729">locateRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.725">locateRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                     byte[]&nbsp;row)
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#locateRegion-org.apache.hadoop.hbase.TableName-byte:A-">ClusterConnection</a></code></span></div>
@@ -1894,7 +1894,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>relocateRegion</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.736">relocateRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.732">relocateRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                       byte[]&nbsp;row)
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#relocateRegion-org.apache.hadoop.hbase.TableName-byte:A-">ClusterConnection</a></code></span></div>
@@ -1920,7 +1920,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>relocateRegion</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.745">relocateRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.741">relocateRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                       byte[]&nbsp;row,
                                       int&nbsp;replicaId)
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1948,7 +1948,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>locateRegion</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.758">locateRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.754">locateRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                     byte[]&nbsp;row,
                                     boolean&nbsp;useCache,
                                     boolean&nbsp;retry)
@@ -1974,7 +1974,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>locateRegion</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.764">locateRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.760">locateRegion</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                     byte[]&nbsp;row,
                                     boolean&nbsp;useCache,
                                     boolean&nbsp;retry,
@@ -2002,7 +2002,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>locateMeta</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.778">locateMeta</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.774">locateMeta</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                    boolean&nbsp;useCache,
                                    int&nbsp;replicaId)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -2018,7 +2018,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>locateRegionInMeta</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.816">locateRegionInMeta</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.812">locateRegionInMeta</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                            byte[]&nbsp;row,
                                            boolean&nbsp;useCache,
                                            boolean&nbsp;retry,
@@ -2038,7 +2038,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.969">cacheLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.965">cacheLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                           <a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;location)</pre>
 <div class="block">Put a newly discovered HRegionLocation into the cache.</div>
 <dl>
@@ -2056,7 +2056,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getCachedLocation</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.978">getCachedLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre><a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.974">getCachedLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                   byte[]&nbsp;row)</pre>
 <div class="block">Search the cache for a location that fits our table and row key.
  Return null if no suitable region is located.</div>
@@ -2072,7 +2072,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>clearRegionCache</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.983">clearRegionCache</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.979">clearRegionCache</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                              byte[]&nbsp;row)</pre>
 </li>
 </ul>
@@ -2082,7 +2082,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>clearCaches</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.991">clearCaches</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.987">clearCaches</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#clearCaches-org.apache.hadoop.hbase.ServerName-">ClusterConnection</a></code></span></div>
 <div class="block">Clear any caches that pertain to server name <code>sn</code>.</div>
 <dl>
@@ -2099,7 +2099,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>clearRegionCache</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.996">clearRegionCache</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.992">clearRegionCache</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#clearRegionCache--">ClusterConnection</a></code></span></div>
 <div class="block">Allows flushing the region cache.</div>
 <dl>
@@ -2114,7 +2114,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>clearRegionCache</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1001">clearRegionCache</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.997">clearRegionCache</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#clearRegionCache-org.apache.hadoop.hbase.TableName-">ClusterConnection</a></code></span></div>
 <div class="block">Allows flushing the region cache of all locations that pertain to
  <code>tableName</code></div>
@@ -2133,7 +2133,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheLocation</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1011">cacheLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1007">cacheLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                            <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;source,
                            <a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;location)</pre>
 <div class="block">Put a newly discovered HRegionLocation into the cache.</div>
@@ -2151,7 +2151,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getAdminForMaster</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1203">getAdminForMaster</a>()
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1199">getAdminForMaster</a>()
                                                                                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getAdminForMaster--">ClusterConnection</a></code></span></div>
 <div class="block">Get the admin service for master.</div>
@@ -2169,7 +2169,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getAdmin</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1208">getAdmin</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1204">getAdmin</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                                                                                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getAdmin-org.apache.hadoop.hbase.ServerName-">ClusterConnection</a></code></span></div>
 <div class="block">Establishes a connection to the region server at the specified address.</div>
@@ -2191,7 +2191,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getClient</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ClientService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1224">getClient</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.ClientService.BlockingInterface&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1220">getClient</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                                                                                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getClient-org.apache.hadoop.hbase.ServerName-">ClusterConnection</a></code></span></div>
 <div class="block">Establishes a connection to the region server at the specified address, and returns
@@ -2214,7 +2214,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaster</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MasterKeepAliveConnection.html" title="interface in org.apache.hadoop.hbase.client">MasterKeepAliveConnection</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1241">getMaster</a>()
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MasterKeepAliveConnection.html" title="interface in org.apache.hadoop.hbase.client">MasterKeepAliveConnection</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1237">getMaster</a>()
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getMaster--">ClusterConnection</a></code></span></div>
 <div class="block">Returns a <a href="../../../../../org/apache/hadoop/hbase/client/MasterKeepAliveConnection.html" title="interface in org.apache.hadoop.hbase.client"><code>MasterKeepAliveConnection</code></a> to the active master</div>
@@ -2232,7 +2232,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>resetMasterServiceState</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1245">resetMasterServiceState</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.MasterServiceState</a>&nbsp;mss)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1241">resetMasterServiceState</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.MasterServiceState</a>&nbsp;mss)</pre>
 </li>
 </ul>
 <a name="getKeepAliveMasterService--">
@@ -2241,7 +2241,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getKeepAliveMasterService</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MasterKeepAliveConnection.html" title="interface in org.apache.hadoop.hbase.client">MasterKeepAliveConnection</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1249">getKeepAliveMasterService</a>()
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/MasterKeepAliveConnection.html" title="interface in org.apache.hadoop.hbase.client">MasterKeepAliveConnection</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1245">getKeepAliveMasterService</a>()
                                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2255,7 +2255,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>release</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1767">release</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.MasterServiceState</a>&nbsp;mss)</pre>
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1763">release</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.MasterServiceState</a>&nbsp;mss)</pre>
 </li>
 </ul>
 <a name="isKeepAliveMasterConnectedAndRunning-org.apache.hadoop.hbase.client.ConnectionImplementation.MasterServiceState-">
@@ -2264,7 +2264,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isKeepAliveMasterConnectedAndRunning</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1773">isKeepAliveMasterConnectedAndRunning</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.MasterServiceState</a>&nbsp;mss)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1769">isKeepAliveMasterConnectedAndRunning</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.MasterServiceState</a>&nbsp;mss)</pre>
 </li>
 </ul>
 <a name="releaseMaster-org.apache.hadoop.hbase.client.ConnectionImplementation.MasterServiceState-">
@@ -2273,7 +2273,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>releaseMaster</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1790">releaseMaster</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.MasterServiceState</a>&nbsp;mss)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1786">releaseMaster</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.MasterServiceState</a>&nbsp;mss)</pre>
 </li>
 </ul>
 <a name="closeMasterService-org.apache.hadoop.hbase.client.ConnectionImplementation.MasterServiceState-">
@@ -2282,7 +2282,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>closeMasterService</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1799">closeMasterService</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.MasterServiceState</a>&nbsp;mss)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1795">closeMasterService</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation.MasterServiceState</a>&nbsp;mss)</pre>
 </li>
 </ul>
 <a name="closeMaster--">
@@ -2291,7 +2291,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>closeMaster</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1811">closeMaster</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1807">closeMaster</a>()</pre>
 <div class="block">Immediate close of the shared master. Can be by the delayed close or when closing the
  connection itself.</div>
 </li>
@@ -2302,7 +2302,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>updateCachedLocation</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1817">updateCachedLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1813">updateCachedLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri,
                           <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;source,
                           <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                           long&nbsp;seqNum)</pre>
@@ -2314,7 +2314,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteCachedRegionLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1823">deleteCachedRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;location)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1819">deleteCachedRegionLocation</a>(<a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>&nbsp;location)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#deleteCachedRegionLocation-org.apache.hadoop.hbase.HRegionLocation-">ClusterConnection</a></code></span></div>
 <div class="block">Deletes cached locations for the specific region.</div>
 <dl>
@@ -2331,7 +2331,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>updateCachedLocations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1836">updateCachedLocations</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1832">updateCachedLocations</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                                   byte[]&nbsp;regionName,
                                   byte[]&nbsp;rowkey,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;exception,
@@ -2358,7 +2358,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getAsyncProcess</h4>
-<pre>public&nbsp;<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/ConnectionImplementation.html#line.1903">getAsyncProcess</a>()</pre>
+<pre>public&nbsp;<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/ConnectionImplementation.html#line.1899">getAsyncProcess</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getAsyncProcess--">getAsyncProcess</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a></code></dd>
@@ -2373,7 +2373,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getStatisticsTracker</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ServerStatisticTracker.html" title="class in org.apache.hadoop.hbase.client">ServerStatisticTracker</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1908">getStatisticsTracker</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ServerStatisticTracker.html" title="class in org.apache.hadoop.hbase.client">ServerStatisticTracker</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1904">getStatisticsTracker</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getStatisticsTracker--">getStatisticsTracker</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a></code></dd>
@@ -2388,7 +2388,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackoffPolicy</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/backoff/ClientBackoffPolicy.html" title="interface in org.apache.hadoop.hbase.client.backoff">ClientBackoffPolicy</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1913">getBackoffPolicy</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/backoff/ClientBackoffPolicy.html" title="interface in org.apache.hadoop.hbase.client.backoff">ClientBackoffPolicy</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1909">getBackoffPolicy</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getBackoffPolicy--">getBackoffPolicy</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a></code></dd>
@@ -2403,7 +2403,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumberOfCachedRegionLocations</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1922">getNumberOfCachedRegionLocations</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1918">getNumberOfCachedRegionLocations</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</pre>
 </li>
 </ul>
 <a name="abort-java.lang.String-java.lang.Throwable-">
@@ -2412,7 +2412,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1927">abort</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1923">abort</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Abortable.html#abort-java.lang.String-java.lang.Throwable-">Abortable</a></code></span></div>
 <div class="block">Abort the server or client.</div>
@@ -2431,7 +2431,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isClosed</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1939">isClosed</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1935">isClosed</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/Connection.html#isClosed--">Connection</a></code></span></div>
 <div class="block">Returns whether the connection is closed or not.</div>
 <dl>
@@ -2448,7 +2448,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>isAborted</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1944">isAborted</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1940">isAborted</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Abortable.html#isAborted--">Abortable</a></code></span></div>
 <div class="block">Check if the server or client was aborted.</div>
 <dl>
@@ -2465,7 +2465,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentNrHRS</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1949">getCurrentNrHRS</a>()
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1945">getCurrentNrHRS</a>()
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -2483,7 +2483,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1954">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1950">close</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true#close--" title="class or interface in java.io">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></code></dd>
@@ -2500,7 +2500,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>finalize</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1986">finalize</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1982">finalize</a>()
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a></pre>
 <div class="block">Close the connection for good. On the off chance that someone is unable to close
  the connection, perhaps because it bailed out prematurely, the method
@@ -2522,7 +2522,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonceGenerator</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/NonceGenerator.html" title="interface in org.apache.hadoop.hbase.client">NonceGenerator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1992">getNonceGenerator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/NonceGenerator.html" title="interface in org.apache.hadoop.hbase.client">NonceGenerator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1988">getNonceGenerator</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getNonceGenerator--">getNonceGenerator</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a></code></dd>
@@ -2537,7 +2537,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableState</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1997">getTableState</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/TableState.html" title="class in org.apache.hadoop.hbase.client">TableState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.1993">getTableState</a>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getTableState-org.apache.hadoop.hbase.TableName-">ClusterConnection</a></code></span></div>
 <div class="block">Retrieve TableState, represent current table state.</div>
@@ -2559,7 +2559,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getNewRpcRetryingCallerFactory</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerFactory.html" title="class in org.apache.hadoop.hbase.client">RpcRetryingCallerFactory</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.2007">getNewRpcRetryingCallerFactory</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerFactory.html" title="class in org.apache.hadoop.hbase.client">RpcRetryingCallerFactory</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.2003">getNewRpcRetryingCallerFactory</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getNewRpcRetryingCallerFactory-org.apache.hadoop.conf.Configuration-">ClusterConnection</a></code></span></div>
 <div class="block">Returns a new RpcRetryingCallerFactory from the given <code>Configuration</code>.
  This RpcRetryingCallerFactory lets the users create <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCaller.html" title="interface in org.apache.hadoop.hbase.client"><code>RpcRetryingCaller</code></a>s which can be
@@ -2580,7 +2580,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>hasCellBlockSupport</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.2013">hasCellBlockSupport</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.2009">hasCellBlockSupport</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#hasCellBlockSupport--">hasCellBlockSupport</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a></code></dd>
@@ -2596,7 +2596,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getConnectionConfiguration</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionConfiguration.html" title="class in org.apache.hadoop.hbase.client">ConnectionConfiguration</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.2018">getConnectionConfiguration</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ConnectionConfiguration.html" title="class in org.apache.hadoop.hbase.client">ConnectionConfiguration</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.2014">getConnectionConfiguration</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getConnectionConfiguration--">getConnectionConfiguration</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a></code></dd>
@@ -2611,7 +2611,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getRpcRetryingCallerFactory</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerFactory.html" title="class in org.apache.hadoop.hbase.client">RpcRetryingCallerFactory</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.2023">getRpcRetryingCallerFactory</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerFactory.html" title="class in org.apache.hadoop.hbase.client">RpcRetryingCallerFactory</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.2019">getRpcRetryingCallerFactory</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getRpcRetryingCallerFactory--">getRpcRetryingCallerFactory</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a></code></dd>
@@ -2626,7 +2626,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockList">
 <li class="blockList">
 <h4>getRpcControllerFactory</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcControllerFactory.html" title="class in org.apache.hadoop.hbase.ipc">RpcControllerFactory</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.2028">getRpcControllerFactory</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcControllerFactory.html" title="class in org.apache.hadoop.hbase.ipc">RpcControllerFactory</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.2024">getRpcControllerFactory</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html#getRpcControllerFactory--">getRpcControllerFactory</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/ClusterConnection.html" title="interface in org.apache.hadoop.hbase.client">ClusterConnection</a></code></dd>
@@ -2641,7 +2641,7 @@ public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbas
 <ul class="blockListLast">
 <li class="blockList">
 <h4>get</h4>
-<pre>private static&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.2032">get</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;T&gt;&nbsp;future)
+<pre>private static&nbsp;&lt;T&gt;&nbsp;T&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html#line.2028">get</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;T&gt;&nbsp;future)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html
index c62e029..36ceec7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.ServerErrorTracker.html
@@ -634,7 +634,7 @@
 <span class="sourceLineNo">626</span>    checkClosed();<a name="line.626"></a>
 <span class="sourceLineNo">627</span>    try {<a name="line.627"></a>
 <span class="sourceLineNo">628</span>      if (!isTableEnabled(tableName)) {<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        LOG.debug("Table " + tableName + " not enabled");<a name="line.629"></a>
+<span class="sourceLineNo">629</span>        LOG.debug("Table {} not enabled", tableName);<a name="line.629"></a>
 <span class="sourceLineNo">630</span>        return false;<a name="line.630"></a>
 <span class="sourceLineNo">631</span>      }<a name="line.631"></a>
 <span class="sourceLineNo">632</span>      List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; locations =<a name="line.632"></a>
@@ -645,1411 +645,1407 @@
 <span class="sourceLineNo">637</span>      for (Pair&lt;RegionInfo, ServerName&gt; pair : locations) {<a name="line.637"></a>
 <span class="sourceLineNo">638</span>        RegionInfo info = pair.getFirst();<a name="line.638"></a>
 <span class="sourceLineNo">639</span>        if (pair.getSecond() == null) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          if (LOG.isDebugEnabled()) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>            LOG.debug("Table " + tableName + " has not deployed region " + pair.getFirst()<a name="line.641"></a>
-<span class="sourceLineNo">642</span>                .getEncodedName());<a name="line.642"></a>
-<span class="sourceLineNo">643</span>          }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>          notDeployed++;<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        } else if (splitKeys != null<a name="line.645"></a>
-<span class="sourceLineNo">646</span>            &amp;&amp; !Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>          for (byte[] splitKey : splitKeys) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>            // Just check if the splitkey is available<a name="line.648"></a>
-<span class="sourceLineNo">649</span>            if (Bytes.equals(info.getStartKey(), splitKey)) {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>              regionCount++;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>              break;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>            }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          }<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        } else {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>          // Always empty start row should be counted<a name="line.655"></a>
-<span class="sourceLineNo">656</span>          regionCount++;<a name="line.656"></a>
-<span class="sourceLineNo">657</span>        }<a name="line.657"></a>
-<span class="sourceLineNo">658</span>      }<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      if (notDeployed &gt; 0) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        if (LOG.isDebugEnabled()) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>          LOG.debug("Table " + tableName + " has " + notDeployed + " regions");<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        return false;<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else if (splitKeys != null &amp;&amp; regionCount != splitKeys.length + 1) {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        if (LOG.isDebugEnabled()) {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>          LOG.debug("Table " + tableName + " expected to have " + (splitKeys.length + 1)<a name="line.666"></a>
-<span class="sourceLineNo">667</span>              + " regions, but only " + regionCount + " available");<a name="line.667"></a>
-<span class="sourceLineNo">668</span>        }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        return false;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      } else {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>        if (LOG.isDebugEnabled()) {<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          LOG.debug("Table " + tableName + " should be available");<a name="line.672"></a>
-<span class="sourceLineNo">673</span>        }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>        return true;<a name="line.674"></a>
-<span class="sourceLineNo">675</span>      }<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    } catch (TableNotFoundException tnfe) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>      LOG.warn("Table " + tableName + " not enabled, it is not exists");<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      return false;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    }<a name="line.679"></a>
-<span class="sourceLineNo">680</span>  }<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>  @Override<a name="line.682"></a>
-<span class="sourceLineNo">683</span>  public HRegionLocation locateRegion(final byte[] regionName) throws IOException {<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    RegionLocations locations = locateRegion(RegionInfo.getTable(regionName),<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      RegionInfo.getStartKey(regionName), false, true);<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    return locations == null ? null : locations.getRegionLocation();<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  }<a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>  private boolean isDeadServer(ServerName sn) {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    if (clusterStatusListener == null) {<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      return false;<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    } else {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      return clusterStatusListener.isDeadServer(sn);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    }<a name="line.694"></a>
-<span class="sourceLineNo">695</span>  }<a name="line.695"></a>
-<span class="sourceLineNo">696</span><a name="line.696"></a>
-<span class="sourceLineNo">697</span>  @Override<a name="line.697"></a>
-<span class="sourceLineNo">698</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName) throws IOException {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    return locateRegions(tableName, false, true);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  }<a name="line.700"></a>
-<span class="sourceLineNo">701</span><a name="line.701"></a>
-<span class="sourceLineNo">702</span>  @Override<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName, boolean useCache,<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      boolean offlined) throws IOException {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    List&lt;RegionInfo&gt; regions;<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.706"></a>
-<span class="sourceLineNo">707</span>      regions = Collections.singletonList(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    } else {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      regions = MetaTableAccessor.getTableRegions(this, tableName, !offlined);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    }<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;&gt;();<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    for (RegionInfo regionInfo : regions) {<a name="line.712"></a>
-<span class="sourceLineNo">713</span>      if (!RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.713"></a>
-<span class="sourceLineNo">714</span>        continue;<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      }<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      RegionLocations list = locateRegion(tableName, regionInfo.getStartKey(), useCache, true);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      if (list != null) {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>        for (HRegionLocation loc : list.getRegionLocations()) {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>          if (loc != null) {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>            locations.add(loc);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>          }<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        }<a name="line.722"></a>
-<span class="sourceLineNo">723</span>      }<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    }<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return locations;<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>  @Override<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public HRegionLocation locateRegion(final TableName tableName, final byte[] row)<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      throws IOException {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    RegionLocations locations = locateRegion(tableName, row, true, true);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    return locations == null ? null : locations.getRegionLocation();<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>  @Override<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  public HRegionLocation relocateRegion(final TableName tableName, final byte[] row)<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      throws IOException {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    RegionLocations locations =<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      relocateRegion(tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    return locations == null ? null<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      : locations.getRegionLocation(RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.741"></a>
-<span class="sourceLineNo">742</span>  }<a name="line.742"></a>
-<span class="sourceLineNo">743</span><a name="line.743"></a>
-<span class="sourceLineNo">744</span>  @Override<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public RegionLocations relocateRegion(final TableName tableName,<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      final byte [] row, int replicaId) throws IOException{<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    // Since this is an explicit request not to use any caching, finding<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    // disabled tables should not be desirable.  This will ensure that an exception is thrown when<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    // the first time a disabled table is interacted with.<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    if (!tableName.equals(TableName.META_TABLE_NAME) &amp;&amp; isTableDisabled(tableName)) {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>      throw new TableNotEnabledException(tableName.getNameAsString() + " is disabled.");<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    }<a name="line.752"></a>
-<span class="sourceLineNo">753</span><a name="line.753"></a>
-<span class="sourceLineNo">754</span>    return locateRegion(tableName, row, false, true, replicaId);<a name="line.754"></a>
-<span class="sourceLineNo">755</span>  }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>  @Override<a name="line.757"></a>
-<span class="sourceLineNo">758</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.758"></a>
-<span class="sourceLineNo">759</span>      boolean retry) throws IOException {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    return locateRegion(tableName, row, useCache, retry, RegionReplicaUtil.DEFAULT_REPLICA_ID);<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>  @Override<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      boolean retry, int replicaId) throws IOException {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    checkClosed();<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    if (tableName == null || tableName.getName().length == 0) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      throw new IllegalArgumentException("table name cannot be null or zero length");<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    }<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    if (tableName.equals(TableName.META_TABLE_NAME)) {<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      return locateMeta(tableName, useCache, replicaId);<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    } else {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      // Region not in the cache - have to go to the meta RS<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      return locateRegionInMeta(tableName, row, useCache, retry, replicaId);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    }<a name="line.775"></a>
-<span class="sourceLineNo">776</span>  }<a name="line.776"></a>
-<span class="sourceLineNo">777</span><a name="line.777"></a>
-<span class="sourceLineNo">778</span>  private RegionLocations locateMeta(final TableName tableName,<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      boolean useCache, int replicaId) throws IOException {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    // HBASE-10785: We cache the location of the META itself, so that we are not overloading<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // zookeeper with one request for every region lookup. We cache the META with empty row<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // key in MetaCache.<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    byte[] metaCacheKey = HConstants.EMPTY_START_ROW; // use byte[0] as the row for meta<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    RegionLocations locations = null;<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    if (useCache) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      locations = getCachedLocation(tableName, metaCacheKey);<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        return locations;<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      }<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
-<span class="sourceLineNo">791</span><a name="line.791"></a>
-<span class="sourceLineNo">792</span>    // only one thread should do the lookup.<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    synchronized (metaRegionLock) {<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      // Check the cache again for a hit in case some other thread made the<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      // same query while we were waiting on the lock.<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      if (useCache) {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>        locations = getCachedLocation(tableName, metaCacheKey);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>          return locations;<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>      // Look up from zookeeper<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      locations = get(this.registry.getMetaRegionLocation());<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      if (locations != null) {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>        cacheLocation(tableName, locations);<a name="line.806"></a>
-<span class="sourceLineNo">807</span>      }<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    }<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    return locations;<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  }<a name="line.810"></a>
-<span class="sourceLineNo">811</span><a name="line.811"></a>
-<span class="sourceLineNo">812</span>  /**<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * Search the hbase:meta table for the HRegionLocation info that contains the table and row we're<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * seeking.<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   */<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, boolean useCache,<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      boolean retry, int replicaId) throws IOException {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    // If we are supposed to be using the cache, look in the cache to see if we already have the<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    // region.<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    if (useCache) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      RegionLocations locations = getCachedLocation(tableName, row);<a name="line.821"></a>
-<span class="sourceLineNo">822</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>        return locations;<a name="line.823"></a>
-<span class="sourceLineNo">824</span>      }<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    }<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    // build the key of the meta region we should be looking for.<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    // the extra 9's on the end are necessary to allow "exact" matches<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    // without knowing the precise region names.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    byte[] metaStartKey = RegionInfo.createRegionName(tableName, row, HConstants.NINES, false);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    byte[] metaStopKey =<a name="line.830"></a>
-<span class="sourceLineNo">831</span>      RegionInfo.createRegionName(tableName, HConstants.EMPTY_START_ROW, "", false);<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    Scan s = new Scan().withStartRow(metaStartKey).withStopRow(metaStopKey, true)<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      .addFamily(HConstants.CATALOG_FAMILY).setReversed(true).setCaching(5)<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      .setReadType(ReadType.PREAD);<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    if (this.useMetaReplicas) {<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      s.setConsistency(Consistency.TIMELINE);<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    }<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    int maxAttempts = (retry ? numTries : 1);<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    boolean relocateMeta = false;<a name="line.839"></a>
-<span class="sourceLineNo">840</span>    for (int tries = 0; ; tries++) {<a name="line.840"></a>
-<span class="sourceLineNo">841</span>      if (tries &gt;= maxAttempts) {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>        throw new NoServerForRegionException("Unable to find region for "<a name="line.842"></a>
-<span class="sourceLineNo">843</span>            + Bytes.toStringBinary(row) + " in " + tableName + " after " + tries + " tries.");<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      }<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      if (useCache) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>        RegionLocations locations = getCachedLocation(tableName, row);<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.847"></a>
-<span class="sourceLineNo">848</span>          return locations;<a name="line.848"></a>
-<span class="sourceLineNo">849</span>        }<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      } else {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>        // If we are not supposed to be using the cache, delete any existing cached location<a name="line.851"></a>
-<span class="sourceLineNo">852</span>        // so it won't interfere.<a name="line.852"></a>
-<span class="sourceLineNo">853</span>        // We are only supposed to clean the cache for the specific replicaId<a name="line.853"></a>
-<span class="sourceLineNo">854</span>        metaCache.clearCache(tableName, row, replicaId);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      }<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      // Query the meta region<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      long pauseBase = this.pause;<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      userRegionLock.lock();<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      try {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>        if (useCache) {// re-check cache after get lock<a name="line.860"></a>
-<span class="sourceLineNo">861</span>          RegionLocations locations = getCachedLocation(tableName, row);<a name="line.861"></a>
-<span class="sourceLineNo">862</span>          if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.862"></a>
-<span class="sourceLineNo">863</span>            return locations;<a name="line.863"></a>
-<span class="sourceLineNo">864</span>          }<a name="line.864"></a>
+<span class="sourceLineNo">640</span>          LOG.debug("Table {} has not deployed region {}", tableName,<a name="line.640"></a>
+<span class="sourceLineNo">641</span>              pair.getFirst().getEncodedName());<a name="line.641"></a>
+<span class="sourceLineNo">642</span>          notDeployed++;<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        } else if (splitKeys != null<a name="line.643"></a>
+<span class="sourceLineNo">644</span>            &amp;&amp; !Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>          for (byte[] splitKey : splitKeys) {<a name="line.645"></a>
+<span class="sourceLineNo">646</span>            // Just check if the splitkey is available<a name="line.646"></a>
+<span class="sourceLineNo">647</span>            if (Bytes.equals(info.getStartKey(), splitKey)) {<a name="line.647"></a>
+<span class="sourceLineNo">648</span>              regionCount++;<a name="line.648"></a>
+<span class="sourceLineNo">649</span>              break;<a name="line.649"></a>
+<span class="sourceLineNo">650</span>            }<a name="line.650"></a>
+<span class="sourceLineNo">651</span>          }<a name="line.651"></a>
+<span class="sourceLineNo">652</span>        } else {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>          // Always empty start row should be counted<a name="line.653"></a>
+<span class="sourceLineNo">654</span>          regionCount++;<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        }<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      if (notDeployed &gt; 0) {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>        if (LOG.isDebugEnabled()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>          LOG.debug("Table {} has {} regions not deployed", tableName, notDeployed);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        }<a name="line.660"></a>
+<span class="sourceLineNo">661</span>        return false;<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      } else if (splitKeys != null &amp;&amp; regionCount != splitKeys.length + 1) {<a name="line.662"></a>
+<span class="sourceLineNo">663</span>        if (LOG.isDebugEnabled()) {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>          LOG.debug("Table {} expected to have {} regions, but only {} available", tableName,<a name="line.664"></a>
+<span class="sourceLineNo">665</span>              splitKeys.length + 1, regionCount);<a name="line.665"></a>
+<span class="sourceLineNo">666</span>        }<a name="line.666"></a>
+<span class="sourceLineNo">667</span>        return false;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>      } else {<a name="line.668"></a>
+<span class="sourceLineNo">669</span>        LOG.trace("Table {} should be available", tableName);<a name="line.669"></a>
+<span class="sourceLineNo">670</span>        return true;<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    } catch (TableNotFoundException tnfe) {<a name="line.672"></a>
+<span class="sourceLineNo">673</span>      LOG.warn("Table {} does not exist", tableName);<a name="line.673"></a>
+<span class="sourceLineNo">674</span>      return false;<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
+<span class="sourceLineNo">676</span>  }<a name="line.676"></a>
+<span class="sourceLineNo">677</span><a name="line.677"></a>
+<span class="sourceLineNo">678</span>  @Override<a name="line.678"></a>
+<span class="sourceLineNo">679</span>  public HRegionLocation locateRegion(final byte[] regionName) throws IOException {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    RegionLocations locations = locateRegion(RegionInfo.getTable(regionName),<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      RegionInfo.getStartKey(regionName), false, true);<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    return locations == null ? null : locations.getRegionLocation();<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>  private boolean isDeadServer(ServerName sn) {<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    if (clusterStatusListener == null) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>      return false;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    } else {<a name="line.688"></a>
+<span class="sourceLineNo">689</span>      return clusterStatusListener.isDeadServer(sn);<a name="line.689"></a>
+<span class="sourceLineNo">690</span>    }<a name="line.690"></a>
+<span class="sourceLineNo">691</span>  }<a name="line.691"></a>
+<span class="sourceLineNo">692</span><a name="line.692"></a>
+<span class="sourceLineNo">693</span>  @Override<a name="line.693"></a>
+<span class="sourceLineNo">694</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName) throws IOException {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    return locateRegions(tableName, false, true);<a name="line.695"></a>
+<span class="sourceLineNo">696</span>  }<a name="line.696"></a>
+<span class="sourceLineNo">697</span><a name="line.697"></a>
+<span class="sourceLineNo">698</span>  @Override<a name="line.698"></a>
+<span class="sourceLineNo">699</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName, boolean useCache,<a name="line.699"></a>
+<span class="sourceLineNo">700</span>      boolean offlined) throws IOException {<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    List&lt;RegionInfo&gt; regions;<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      regions = Collections.singletonList(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    } else {<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      regions = MetaTableAccessor.getTableRegions(this, tableName, !offlined);<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    }<a name="line.706"></a>
+<span class="sourceLineNo">707</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;&gt;();<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    for (RegionInfo regionInfo : regions) {<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      if (!RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>        continue;<a name="line.710"></a>
+<span class="sourceLineNo">711</span>      }<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      RegionLocations list = locateRegion(tableName, regionInfo.getStartKey(), useCache, true);<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      if (list != null) {<a name="line.713"></a>
+<span class="sourceLineNo">714</span>        for (HRegionLocation loc : list.getRegionLocations()) {<a name="line.714"></a>
+<span class="sourceLineNo">715</span>          if (loc != null) {<a name="line.715"></a>
+<span class="sourceLineNo">716</span>            locations.add(loc);<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>      }<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    }<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    return locations;<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">723</span><a name="line.723"></a>
+<span class="sourceLineNo">724</span>  @Override<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  public HRegionLocation locateRegion(final TableName tableName, final byte[] row)<a name="line.725"></a>
+<span class="sourceLineNo">726</span>      throws IOException {<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    RegionLocations locations = locateRegion(tableName, row, true, true);<a name="line.727"></a>
+<span class="sourceLineNo">728</span>    return locations == null ? null : locations.getRegionLocation();<a name="line.728"></a>
+<span class="sourceLineNo">729</span>  }<a name="line.729"></a>
+<span class="sourceLineNo">730</span><a name="line.730"></a>
+<span class="sourceLineNo">731</span>  @Override<a name="line.731"></a>
+<span class="sourceLineNo">732</span>  public HRegionLocation relocateRegion(final TableName tableName, final byte[] row)<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      throws IOException {<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    RegionLocations locations =<a name="line.734"></a>
+<span class="sourceLineNo">735</span>      relocateRegion(tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    return locations == null ? null<a name="line.736"></a>
+<span class="sourceLineNo">737</span>      : locations.getRegionLocation(RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>  }<a name="line.738"></a>
+<span class="sourceLineNo">739</span><a name="line.739"></a>
+<span class="sourceLineNo">740</span>  @Override<a name="line.740"></a>
+<span class="sourceLineNo">741</span>  public RegionLocations relocateRegion(final TableName tableName,<a name="line.741"></a>
+<span class="sourceLineNo">742</span>      final byte [] row, int replicaId) throws IOException{<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    // Since this is an explicit request not to use any caching, finding<a name="line.743"></a>
+<span class="sourceLineNo">744</span>    // disabled tables should not be desirable.  This will ensure that an exception is thrown when<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    // the first time a disabled table is interacted with.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    if (!tableName.equals(TableName.META_TABLE_NAME) &amp;&amp; isTableDisabled(tableName)) {<a name="line.746"></a>
+<span class="sourceLineNo">747</span>      throw new TableNotEnabledException(tableName.getNameAsString() + " is disabled.");<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    }<a name="line.748"></a>
+<span class="sourceLineNo">749</span><a name="line.749"></a>
+<span class="sourceLineNo">750</span>    return locateRegion(tableName, row, false, true, replicaId);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>  }<a name="line.751"></a>
+<span class="sourceLineNo">752</span><a name="line.752"></a>
+<span class="sourceLineNo">753</span>  @Override<a name="line.753"></a>
+<span class="sourceLineNo">754</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      boolean retry) throws IOException {<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    return locateRegion(tableName, row, useCache, retry, RegionReplicaUtil.DEFAULT_REPLICA_ID);<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>  @Override<a name="line.759"></a>
+<span class="sourceLineNo">760</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      boolean retry, int replicaId) throws IOException {<a name="line.761"></a>
+<span class="sourceLineNo">762</span>    checkClosed();<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    if (tableName == null || tableName.getName().length == 0) {<a name="line.763"></a>
+<span class="sourceLineNo">764</span>      throw new IllegalArgumentException("table name cannot be null or zero length");<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    }<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    if (tableName.equals(TableName.META_TABLE_NAME)) {<a name="line.766"></a>
+<span class="sourceLineNo">767</span>      return locateMeta(tableName, useCache, replicaId);<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    } else {<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      // Region not in the cache - have to go to the meta RS<a name="line.769"></a>
+<span class="sourceLineNo">770</span>      return locateRegionInMeta(tableName, row, useCache, retry, replicaId);<a name="line.770"></a>
+<span class="sourceLineNo">771</span>    }<a name="line.771"></a>
+<span class="sourceLineNo">772</span>  }<a name="line.772"></a>
+<span class="sourceLineNo">773</span><a name="line.773"></a>
+<span class="sourceLineNo">774</span>  private RegionLocations locateMeta(final TableName tableName,<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      boolean useCache, int replicaId) throws IOException {<a name="line.775"></a>
+<span class="sourceLineNo">776</span>    // HBASE-10785: We cache the location of the META itself, so that we are not overloading<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    // zookeeper with one request for every region lookup. We cache the META with empty row<a name="line.777"></a>
+<span class="sourceLineNo">778</span>    // key in MetaCache.<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    byte[] metaCacheKey = HConstants.EMPTY_START_ROW; // use byte[0] as the row for meta<a name="line.779"></a>
+<span class="sourceLineNo">780</span>    RegionLocations locations = null;<a name="line.780"></a>
+<span class="sourceLineNo">781</span>    if (useCache) {<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      locations = getCachedLocation(tableName, metaCacheKey);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.783"></a>
+<span class="sourceLineNo">784</span>        return locations;<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>    // only one thread should do the lookup.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>    synchronized (metaRegionLock) {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>      // Check the cache again for a hit in case some other thread made the<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      // same query while we were waiting on the lock.<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      if (useCache) {<a name="line.792"></a>
+<span class="sourceLineNo">793</span>        locations = getCachedLocation(tableName, metaCacheKey);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.794"></a>
+<span class="sourceLineNo">795</span>          return locations;<a name="line.795"></a>
+<span class="sourceLineNo">796</span>        }<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      }<a name="line.797"></a>
+<span class="sourceLineNo">798</span><a name="line.798"></a>
+<span class="sourceLineNo">799</span>      // Look up from zookeeper<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      locations = get(this.registry.getMetaRegionLocation());<a name="line.800"></a>
+<span class="sourceLineNo">801</span>      if (locations != null) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span>        cacheLocation(tableName, locations);<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>    return locations;<a name="line.805"></a>
+<span class="sourceLineNo">806</span>  }<a name="line.806"></a>
+<span class="sourceLineNo">807</span><a name="line.807"></a>
+<span class="sourceLineNo">808</span>  /**<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   * Search the hbase:meta table for the HRegionLocation info that contains the table and row we're<a name="line.809"></a>
+<span class="sourceLineNo">810</span>   * seeking.<a name="line.810"></a>
+<span class="sourceLineNo">811</span>   */<a name="line.811"></a>
+<span class="sourceLineNo">812</span>  private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, boolean useCache,<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      boolean retry, int replicaId) throws IOException {<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    // If we are supposed to be using the cache, look in the cache to see if we already have the<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    // region.<a name="line.815"></a>
+<span class="sourceLineNo">816</span>    if (useCache) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>      RegionLocations locations = getCachedLocation(tableName, row);<a name="line.817"></a>
+<span class="sourceLineNo">818</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>        return locations;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    }<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    // build the key of the meta region we should be looking for.<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    // the extra 9's on the end are necessary to allow "exact" matches<a name="line.823"></a>
+<span class="sourceLineNo">824</span>    // without knowing the precise region names.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    byte[] metaStartKey = RegionInfo.createRegionName(tableName, row, HConstants.NINES, false);<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    byte[] metaStopKey =<a name="line.826"></a>
+<span class="sourceLineNo">827</span>      RegionInfo.createRegionName(tableName, HConstants.EMPTY_START_ROW, "", false);<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    Scan s = new Scan().withStartRow(metaStartKey).withStopRow(metaStopKey, true)<a name="line.828"></a>
+<span class="sourceLineNo">829</span>      .addFamily(HConstants.CATALOG_FAMILY).setReversed(true).setCaching(5)<a name="line.829"></a>
+<span class="sourceLineNo">830</span>      .setReadType(ReadType.PREAD);<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    if (this.useMetaReplicas) {<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      s.setConsistency(Consistency.TIMELINE);<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    }<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    int maxAttempts = (retry ? numTries : 1);<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    boolean relocateMeta = false;<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    for (int tries = 0; ; tries++) {<a name="line.836"></a>
+<span class="sourceLineNo">837</span>      if (tries &gt;= maxAttempts) {<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        throw new NoServerForRegionException("Unable to find region for "<a name="line.838"></a>
+<span class="sourceLineNo">839</span>            + Bytes.toStringBinary(row) + " in " + tableName + " after " + tries + " tries.");<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      }<a name="line.840"></a>
+<span class="sourceLineNo">841</span>      if (useCache) {<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        RegionLocations locations = getCachedLocation(tableName, row);<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.843"></a>
+<span class="sourceLineNo">844</span>          return locations;<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        }<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      } else {<a name="line.846"></a>
+<span class="sourceLineNo">847</span>        // If we are not supposed to be using the cache, delete any existing cached location<a name="line.847"></a>
+<span class="sourceLineNo">848</span>        // so it won't interfere.<a name="line.848"></a>
+<span class="sourceLineNo">849</span>        // We are only supposed to clean the cache for the specific replicaId<a name="line.849"></a>
+<span class="sourceLineNo">850</span>        metaCache.clearCache(tableName, row, replicaId);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
+<span class="sourceLineNo">852</span>      // Query the meta region<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      long pauseBase = this.pause;<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      userRegionLock.lock();<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      try {<a name="line.855"></a>
+<span class="sourceLineNo">856</span>        if (useCache) {// re-check cache after get lock<a name="line.856"></a>
+<span class="sourceLineNo">857</span>          RegionLocations locations = getCachedLocation(tableName, row);<a name="line.857"></a>
+<span class="sourceLineNo">858</span>          if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.858"></a>
+<span class="sourceLineNo">859</span>            return locations;<a name="line.859"></a>
+<span class="sourceLineNo">860</span>          }<a name="line.860"></a>
+<span class="sourceLineNo">861</span>        }<a name="line.861"></a>
+<span class="sourceLineNo">862</span>        if (relocateMeta) {<a name="line.862"></a>
+<span class="sourceLineNo">863</span>          relocateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.863"></a>
+<span class="sourceLineNo">864</span>            RegionInfo.DEFAULT_REPLICA_ID);<a name="line.864"></a>
 <span class="sourceLineNo">865</span>        }<a name="line.865"></a>
-<span class="sourceLineNo">866</span>        if (relocateMeta) {<a name="line.866"></a>
-<span class="sourceLineNo">867</span>          relocateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.867"></a>
-<span class="sourceLineNo">868</span>            RegionInfo.DEFAULT_REPLICA_ID);<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>        s.resetMvccReadPoint();<a name="line.870"></a>
-<span class="sourceLineNo">871</span>        try (ReversedClientScanner rcs =<a name="line.871"></a>
-<span class="sourceLineNo">872</span>          new ReversedClientScanner(conf, s, TableName.META_TABLE_NAME, this, rpcCallerFactory,<a name="line.872"></a>
-<span class="sourceLineNo">873</span>            rpcControllerFactory, getMetaLookupPool(), metaReplicaCallTimeoutScanInMicroSecond)) {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>          boolean tableNotFound = true;<a name="line.874"></a>
-<span class="sourceLineNo">875</span>          for (;;) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>            Result regionInfoRow = rcs.next();<a name="line.876"></a>
-<span class="sourceLineNo">877</span>            if (regionInfoRow == null) {<a name="line.877"></a>
-<span class="sourceLineNo">878</span>              if (tableNotFound) {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>                throw new TableNotFoundException(tableName);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>              } else {<a name="line.880"></a>
-<span class="sourceLineNo">881</span>                throw new IOException(<a name="line.881"></a>
-<span class="sourceLineNo">882</span>                  "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>              }<a name="line.883"></a>
-<span class="sourceLineNo">884</span>            }<a name="line.884"></a>
-<span class="sourceLineNo">885</span>            tableNotFound = false;<a name="line.885"></a>
-<span class="sourceLineNo">886</span>            // convert the row result into the HRegionLocation we need!<a name="line.886"></a>
-<span class="sourceLineNo">887</span>            RegionLocations locations = MetaTableAccessor.getRegionLocations(regionInfoRow);<a name="line.887"></a>
-<span class="sourceLineNo">888</span>            if (locations == null || locations.getRegionLocation(replicaId) == null) {<a name="line.888"></a>
-<span class="sourceLineNo">889</span>              throw new IOException("RegionInfo null in " + tableName + ", row=" + regionInfoRow);<a name="line.889"></a>
-<span class="sourceLineNo">890</span>            }<a name="line.890"></a>
-<span class="sourceLineNo">891</span>            RegionInfo regionInfo = locations.getRegionLocation(replicaId).getRegion();<a name="line.891"></a>
-<span class="sourceLineNo">892</span>            if (regionInfo == null) {<a name="line.892"></a>
-<span class="sourceLineNo">893</span>              throw new IOException("RegionInfo null or empty in " + TableName.META_TABLE_NAME +<a name="line.893"></a>
-<span class="sourceLineNo">894</span>                ", row=" + regionInfoRow);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>            }<a name="line.895"></a>
-<span class="sourceLineNo">896</span>            // See HBASE-20182. It is possible that we locate to a split parent even after the<a name="line.896"></a>
-<span class="sourceLineNo">897</span>            // children are online, so here we need to skip this region and go to the next one.<a name="line.897"></a>
-<span class="sourceLineNo">898</span>            if (regionInfo.isSplitParent()) {<a name="line.898"></a>
-<span class="sourceLineNo">899</span>              continue;<a name="line.899"></a>
+<span class="sourceLineNo">866</span>        s.resetMvccReadPoint();<a name="line.866"></a>
+<span class="sourceLineNo">867</span>        try (ReversedClientScanner rcs =<a name="line.867"></a>
+<span class="sourceLineNo">868</span>          new ReversedClientScanner(conf, s, TableName.META_TABLE_NAME, this, rpcCallerFactory,<a name="line.868"></a>
+<span class="sourceLineNo">869</span>            rpcControllerFactory, getMetaLookupPool(), metaReplicaCallTimeoutScanInMicroSecond)) {<a name="line.869"></a>
+<span class="sourceLineNo">870</span>          boolean tableNotFound = true;<a name="line.870"></a>
+<span class="sourceLineNo">871</span>          for (;;) {<a name="line.871"></a>
+<span class="sourceLineNo">872</span>            Result regionInfoRow = rcs.next();<a name="line.872"></a>
+<span class="sourceLineNo">873</span>            if (regionInfoRow == null) {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>              if (tableNotFound) {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>                throw new TableNotFoundException(tableName);<a name="line.875"></a>
+<span class="sourceLineNo">876</span>              } else {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>                throw new IOException(<a name="line.877"></a>
+<span class="sourceLineNo">878</span>                  "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.878"></a>
+<span class="sourceLineNo">879</span>              }<a name="line.879"></a>
+<span class="sourceLineNo">880</span>            }<a name="line.880"></a>
+<span class="sourceLineNo">881</span>            tableNotFound = false;<a name="line.881"></a>
+<span class="sourceLineNo">882</span>            // convert the row result into the HRegionLocation we need!<a name="line.882"></a>
+<span class="sourceLineNo">883</span>            RegionLocations locations = MetaTableAccessor.getRegionLocations(regionInfoRow);<a name="line.883"></a>
+<span class="sourceLineNo">884</span>            if (locations == null || locations.getRegionLocation(replicaId) == null) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>              throw new IOException("RegionInfo null in " + tableName + ", row=" + regionInfoRow);<a name="line.885"></a>
+<span class="sourceLineNo">886</span>            }<a name="line.886"></a>
+<span class="sourceLineNo">887</span>            RegionInfo regionInfo = locations.getRegionLocation(replicaId).getRegion();<a name="line.887"></a>
+<span class="sourceLineNo">888</span>            if (regionInfo == null) {<a name="line.888"></a>
+<span class="sourceLineNo">889</span>              throw new IOException("RegionInfo null or empty in " + TableName.META_TABLE_NAME +<a name="line.889"></a>
+<span class="sourceLineNo">890</span>                ", row=" + regionInfoRow);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>            }<a name="line.891"></a>
+<span class="sourceLineNo">892</span>            // See HBASE-20182. It is possible that we locate to a split parent even after the<a name="line.892"></a>
+<span class="sourceLineNo">893</span>            // children are online, so here we need to skip this region and go to the next one.<a name="line.893"></a>
+<span class="sourceLineNo">894</span>            if (regionInfo.isSplitParent()) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>              continue;<a name="line.895"></a>
+<span class="sourceLineNo">896</span>            }<a name="line.896"></a>
+<span class="sourceLineNo">897</span>            if (regionInfo.isOffline()) {<a name="line.897"></a>
+<span class="sourceLineNo">898</span>              throw new RegionOfflineException("Region offline; disable table call? " +<a name="line.898"></a>
+<span class="sourceLineNo">899</span>                  regionInfo.getRegionNameAsString());<a name="line.899"></a>
 <span class="sourceLineNo">900</span>            }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>            if (regionInfo.isOffline()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>              throw new RegionOfflineException("Region offline; disable table call? " +<a name="line.902"></a>
-<span class="sourceLineNo">903</span>                  regionInfo.getRegionNameAsString());<a name="line.903"></a>
-<span class="sourceLineNo">904</span>            }<a name="line.904"></a>
-<span class="sourceLineNo">905</span>            // It is possible that the split children have not been online yet and we have skipped<a name="line.905"></a>
-<span class="sourceLineNo">906</span>            // the parent in the above condition, so we may have already reached a region which does<a name="line.906"></a>
-<span class="sourceLineNo">907</span>            // not contains us.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>            if (!regionInfo.containsRow(row)) {<a name="line.908"></a>
-<span class="sourceLineNo">909</span>              throw new IOException(<a name="line.909"></a>
-<span class="sourceLineNo">910</span>                "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.910"></a>
-<span class="sourceLineNo">911</span>            }<a name="line.911"></a>
-<span class="sourceLineNo">912</span>            ServerName serverName = locations.getRegionLocation(replicaId).getServerName();<a name="line.912"></a>
-<span class="sourceLineNo">913</span>            if (serverName == null) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>              throw new NoServerForRegionException("No server address listed in " +<a name="line.914"></a>
-<span class="sourceLineNo">915</span>                TableName.META_TABLE_NAME + " for region " + regionInfo.getRegionNameAsString() +<a name="line.915"></a>
-<span class="sourceLineNo">916</span>                " containing row " + Bytes.toStringBinary(row));<a name="line.916"></a>
-<span class="sourceLineNo">917</span>            }<a name="line.917"></a>
-<span class="sourceLineNo">918</span>            if (isDeadServer(serverName)) {<a name="line.918"></a>
-<span class="sourceLineNo">919</span>              throw new RegionServerStoppedException(<a name="line.919"></a>
-<span class="sourceLineNo">920</span>                "hbase:meta says the region " + regionInfo.getRegionNameAsString() +<a name="line.920"></a>
-<span class="sourceLineNo">921</span>                  " is managed by the server " + serverName + ", but it is dead.");<a name="line.921"></a>
-<span class="sourceLineNo">922</span>            }<a name="line.922"></a>
-<span class="sourceLineNo">923</span>            // Instantiate the location<a name="line.923"></a>
-<span class="sourceLineNo">924</span>            cacheLocation(tableName, locations);<a name="line.924"></a>
-<span class="sourceLineNo">925</span>            return locations;<a name="line.925"></a>
-<span class="sourceLineNo">926</span>          }<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        }<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      } catch (TableNotFoundException e) {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>        // if we got this error, probably means the table just plain doesn't<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // exist. rethrow the error immediately. this should always be coming<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        // from the HTable constructor.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>        throw e;<a name="line.932"></a>
-<span class="sourceLineNo">933</span>      } catch (IOException e) {<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        ExceptionUtil.rethrowIfInterrupt(e);<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        if (e instanceof RemoteException) {<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          e = ((RemoteException)e).unwrapRemoteException();<a name="line.936"></a>
+<span class="sourceLineNo">901</span>            // It is possible that the split children have not been online yet and we have skipped<a name="line.901"></a>
+<span class="sourceLineNo">902</span>            // the parent in the above condition, so we may have already reached a region which does<a name="line.902"></a>
+<span class="sourceLineNo">903</span>            // not contains us.<a name="line.903"></a>
+<span class="sourceLineNo">904</span>            if (!regionInfo.containsRow(row)) {<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              throw new IOException(<a name="line.905"></a>
+<span class="sourceLineNo">906</span>                "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.906"></a>
+<span class="sourceLineNo">907</span>            }<a name="line.907"></a>
+<span class="sourceLineNo">908</span>            ServerName serverName = locations.getRegionLocation(replicaId).getServerName();<a name="line.908"></a>
+<span class="sourceLineNo">909</span>            if (serverName == null) {<a name="line.909"></a>
+<span class="sourceLineNo">910</span>              throw new NoServerForRegionException("No server address listed in " +<a name="line.910"></a>
+<span class="sourceLineNo">911</span>                TableName.META_TABLE_NAME + " for region " + regionInfo.getRegionNameAsString() +<a name="line.911"></a>
+<span class="sourceLineNo">912</span>                " containing row " + Bytes.toStringBinary(row));<a name="line.912"></a>
+<span class="sourceLineNo">913</span>            }<a name="line.913"></a>
+<span class="sourceLineNo">914</span>            if (isDeadServer(serverName)) {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>              throw new RegionServerStoppedException(<a name="line.915"></a>
+<span class="sourceLineNo">916</span>                "hbase:meta says the region " + regionInfo.getRegionNameAsString() +<a name="line.916"></a>
+<span class="sourceLineNo">917</span>                  " is managed by the server " + serverName + ", but it is dead.");<a name="line.917"></a>
+<span class="sourceLineNo">918</span>            }<a name="line.918"></a>
+<span class="sourceLineNo">919</span>            // Instantiate the location<a name="line.919"></a>
+<span class="sourceLineNo">920</span>            cacheLocation(tableName, locations);<a name="line.920"></a>
+<span class="sourceLineNo">921</span>            return locations;<a name="line.921"></a>
+<span class="sourceLineNo">922</span>          }<a name="line.922"></a>
+<span class="sourceLineNo">923</span>        }<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      } catch (TableNotFoundException e) {<a name="line.924"></a>
+<span class="sourceLineNo">925</span>        // if we got this error, probably means the table just plain doesn't<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        // exist. rethrow the error immediately. this should always be coming<a name="line.926"></a>
+<span class="sourceLineNo">927</span>        // from the HTable constructor.<a name="line.927"></a>
+<span class="sourceLineNo">928</span>        throw e;<a name="line.928"></a>
+<span class="sourceLineNo">929</span>      } catch (IOException e) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>        ExceptionUtil.rethrowIfInterrupt(e);<a name="line.930"></a>
+<span class="sourceLineNo">931</span>        if (e instanceof RemoteException) {<a name="line.931"></a>
+<span class="sourceLineNo">932</span>          e = ((RemoteException)e).unwrapRemoteException();<a name="line.932"></a>
+<span class="sourceLineNo">933</span>        }<a name="line.933"></a>
+<span class="sourceLineNo">934</span>        if (e instanceof CallQueueTooBigException) {<a name="line.934"></a>
+<span class="sourceLineNo">935</span>          // Give a special check on CallQueueTooBigException, see #HBASE-17114<a name="line.935"></a>
+<span class="sourceLineNo">936</span>          pauseBase = this.pauseForCQTBE;<a name="line.936"></a>
 <span class="sourceLineNo">937</span>        }<a name="line.937"></a>
-<span class="sourceLineNo">938</span>        if (e instanceof CallQueueTooBigException) {<a name="line.938"></a>
-<span class="sourceLineNo">939</span>          // Give a special check on CallQueueTooBigException, see #HBASE-17114<a name="line.939"></a>
-<span class="sourceLineNo">940</span>          pauseBase = this.pauseForCQTBE;<a name="line.940"></a>
-<span class="sourceLineNo">941</span>        }<a name="line.941"></a>
-<span class="sourceLineNo">942</span>        if (tries &lt; maxAttempts - 1) {<a name="line.942"></a>
-<span class="sourceLineNo">943</span>          LOG.debug("locateRegionInMeta parentTable='{}', attempt={} of {} failed; retrying " +<a name="line.943"></a>
-<span class="sourceLineNo">944</span>            "after sleep of {}", TableName.META_TABLE_NAME, tries, maxAttempts, maxAttempts, e);<a name="line.944"></a>
-<span class="sourceLineNo">945</span>        } else {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>          throw e;<a name="line.946"></a>
-<span class="sourceLineNo">947</span>        }<a name="line.947"></a>
-<span class="sourceLineNo">948</span>        // Only relocate the parent region if necessary<a name="line.948"></a>
-<span class="sourceLineNo">949</span>        relocateMeta =<a name="line.949"></a>
-<span class="sourceLineNo">950</span>          !(e instanceof RegionOfflineException || e instanceof NoServerForRegionException);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>      } finally {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>        userRegionLock.unlock();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      try{<a name="line.954"></a>
-<span class="sourceLineNo">955</span>        Thread.sleep(ConnectionUtils.getPauseTime(pauseBase, tries));<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      } catch (InterruptedException e) {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>        throw new InterruptedIOException("Giving up trying to location region in " +<a name="line.957"></a>
-<span class="sourceLineNo">958</span>          "meta: thread is interrupted.");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span>    }<a name="line.960"></a>
-<span class="sourceLineNo">961</span>  }<a name="line.961"></a>
-<span class="sourceLineNo">962</span><a name="line.962"></a>
-<span class="sourceLineNo">963</span>  /**<a name="line.963"></a>
-<span class="sourceLineNo">964</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.964"></a>
-<span class="sourceLineNo">965</span>   * @param tableName The table name.<a name="line.965"></a>
-<span class="sourceLineNo">966</span>   * @param location the new location<a name="line.966"></a>
-<span class="sourceLineNo">967</span>   */<a name="line.967"></a>
-<span class="sourceLineNo">968</span>  @Override<a name="line.968"></a>
-<span class="sourceLineNo">969</span>  public void cacheLocation(final TableName tableName, final RegionLocations location) {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    metaCache.cacheLocation(tableName, location);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Search the cache for a location that fits our table and row key.<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * Return null if no suitable region is located.<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return Null or region location found in cache.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  RegionLocations getCachedLocation(final TableName tableName,<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      final byte [] row) {<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    return metaCache.getCachedLocation(tableName, row);<a name="line.980"></a>
+<span class="sourceLineNo">938</span>        if (tries &lt; maxAttempts - 1) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>          LOG.debug("locateRegionInMeta parentTable='{}', attempt={} of {} failed; retrying " +<a name="line.939"></a>
+<span class="sourceLineNo">940</span>            "after sleep of {}", TableName.META_TABLE_NAME, tries, maxAttempts, maxAttempts, e);<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        } else {<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          throw e;<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        }<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Only relocate the parent region if necessary<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        relocateMeta =<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          !(e instanceof RegionOfflineException || e instanceof NoServerForRegionException);<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      } finally {<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        userRegionLock.unlock();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      }<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try{<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        Thread.sleep(ConnectionUtils.getPauseTime(pauseBase, tries));<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (InterruptedException e) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        throw new InterruptedIOException("Giving up trying to location region in " +<a name="line.953"></a>
+<span class="sourceLineNo">954</span>          "meta: thread is interrupted.");<a name="line.954"></a>
+<span class="sourceLineNo">955</span>      }<a name="line.955"></a>
+<span class="sourceLineNo">956</span>    }<a name="line.956"></a>
+<span class="sourceLineNo">957</span>  }<a name="line.957"></a>
+<span class="sourceLineNo">958</span><a name="line.958"></a>
+<span class="sourceLineNo">959</span>  /**<a name="line.959"></a>
+<span class="sourceLineNo">960</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.960"></a>
+<span class="sourceLineNo">961</span>   * @param tableName The table name.<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   * @param location the new location<a name="line.962"></a>
+<span class="sourceLineNo">963</span>   */<a name="line.963"></a>
+<span class="sourceLineNo">964</span>  @Override<a name="line.964"></a>
+<span class="sourceLineNo">965</span>  public void cacheLocation(final TableName tableName, final RegionLocations location) {<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    metaCache.cacheLocation(tableName, location);<a name="line.966"></a>
+<span class="sourceLineNo">967</span>  }<a name="line.967"></a>
+<span class="sourceLineNo">968</span><a name="line.968"></a>
+<span class="sourceLineNo">969</span>  /**<a name="line.969"></a>
+<span class="sourceLineNo">970</span>   * Search the cache for a location that fits our table and row key.<a name="line.970"></a>
+<span class="sourceLineNo">971</span>   * Return null if no suitable region is located.<a name="line.971"></a>
+<span class="sourceLineNo">972</span>   * @return Null or region location found in cache.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>   */<a name="line.973"></a>
+<span class="sourceLineNo">974</span>  RegionLocations getCachedLocation(final TableName tableName,<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      final byte [] row) {<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    return metaCache.getCachedLocation(tableName, row);<a name="line.976"></a>
+<span class="sourceLineNo">977</span>  }<a name="line.977"></a>
+<span class="sourceLineNo">978</span><a name="line.978"></a>
+<span class="sourceLineNo">979</span>  public void clearRegionCache(final TableName tableName, byte[] row) {<a name="line.979"></a>
+<span class="sourceLineNo">980</span>    metaCache.clearCache(tableName, row);<a name="line.980"></a>
 <span class="sourceLineNo">981</span>  }<a name="line.981"></a>
 <span class="sourceLineNo">982</span><a name="line.982"></a>
-<span class="sourceLineNo">983</span>  public void clearRegionCache(final TableName tableName, byte[] row) {<a name="line.983"></a>
-<span class="sourceLineNo">984</span>    metaCache.clearCache(tableName, row);<a name="line.984"></a>
-<span class="sourceLineNo">985</span>  }<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>  /*<a name="line.987"></a>
-<span class="sourceLineNo">988</span>   * Delete all cached entries of a table that maps to a specific location.<a name="line.988"></a>
-<span class="sourceLineNo">989</span>   */<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  @Override<a name="line.990"></a>
-<span class="sourceLineNo">991</span>  public void clearCaches(final ServerName serverName) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    metaCache.clearCache(serverName);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>  }<a name="line.993"></a>
-<span class="sourceLineNo">994</span><a name="line.994"></a>
-<span class="sourceLineNo">995</span>  @Override<a name="line.995"></a>
-<span class="sourceLineNo">996</span>  public void clearRegionCache() {<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    metaCache.clearCache();<a name="line.997"></a>
-<span class="sourceLineNo">998</span>  }<a name="line.998"></a>
-<span class="sourceLineNo">999</span><a name="line.999"></a>
-<span class="sourceLineNo">1000</span>  @Override<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public void clearRegionCache(final TableName tableName) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    metaCache.clearCache(tableName);<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  }<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span><a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>  /**<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   * @param tableName The table name.<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   * @param source the source of the new location, if it's not coming from meta<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>   * @param location the new location<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>   */<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>  private void cacheLocation(final TableName tableName, final ServerName source,<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      final HRegionLocation location) {<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    metaCache.cacheLocation(tableName, source, location);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  // Map keyed by service name + regionserver to service stub implementation<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  private final ConcurrentMap&lt;String, Object&gt; stubs = new ConcurrentHashMap&lt;&gt;();<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span><a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>  /**<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * State of the MasterService connection/setup.<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   */<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>  static class MasterServiceState {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    Connection connection;<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    MasterProtos.MasterService.BlockingInterface stub;<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>    int userCount;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span><a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>    MasterServiceState(final Connection connection) {<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>      super();<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      this.connection = connection;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span><a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    @Override<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>    public String toString() {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>      return "MasterService";<a name="line.1035"></a>
+<span class="sourceLineNo">983</span>  /*<a name="line.983"></a>
+<span class="sourceLineNo">984</span>   * Delete all cached entries of a table that maps to a specific location.<a name="line.984"></a>
+<span class="sourceLineNo">985</span>   */<a name="line.985"></a>
+<span class="sourceLineNo">986</span>  @Override<a name="line.986"></a>
+<span class="sourceLineNo">987</span>  public void clearCaches(final ServerName serverName) {<a name="line.987"></a>
+<span class="sourceLineNo">988</span>    metaCache.clearCache(serverName);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
+<span class="sourceLineNo">990</span><a name="line.990"></a>
+<span class="sourceLineNo">991</span>  @Override<a name="line.991"></a>
+<span class="sourceLineNo">992</span>  public void clearRegionCache() {<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    metaCache.clearCache();<a name="line.993"></a>
+<span class="sourceLineNo">994</span>  }<a name="line.994"></a>
+<span class="sourceLineNo">995</span><a name="line.995"></a>
+<span class="sourceLineNo">996</span>  @Override<a name="line.996"></a>
+<span class="sourceLineNo">997</span>  public void clearRegionCache(final TableName tableName) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>    metaCache.clearCache(tableName);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>  }<a name="line.999"></a>
+<span class="sourceLineNo">1000</span><a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>  /**<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>   * @param tableName The table name.<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>   * @param source the source of the new location, if it's not coming from meta<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>   * @param location the new location<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>   */<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>  private void cacheLocation(final TableName tableName, final ServerName source,<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>      final HRegionLocation location) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>    metaCache.cacheLocation(tableName, source, location);<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>  }<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span><a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>  // Map keyed by service name + regionserver to service stub implementation<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>  private final ConcurrentMap&lt;String, Object&gt; stubs = new ConcurrentHashMap&lt;&gt;();<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span><a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>  /**<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>   * State of the MasterService connection/setup.<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>   */<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  static class MasterServiceState {<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>    Connection connection;<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span><a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>    MasterProtos.MasterService.BlockingInterface stub;<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    int userCount;<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span><a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>    MasterServiceState(final Connection connection) {<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>      super();<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      this.connection = connection;<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    }<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span><a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    @Override<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    public String toString() {<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>      return "MasterService";<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    }<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span><a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>    Object getStub() {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>      return this.stub;<a name="line.1035"></a>
 <span class="sourceLineNo">1036</span>    }<a name="line.1036"></a>
 <span class="sourceLineNo">1037</span><a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    Object getStub() {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>      return this.stub;<a name="line.1039"></a>
+<span class="sourceLineNo">1038</span>    void clearStub() {<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      this.stub = null;<a name="line.1039"></a>
 <span class="sourceLineNo">1040</span>    }<a name="line.1040"></a>
 <span class="sourceLineNo">1041</span><a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    void clearStub() {<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>      this.stub = null;<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>    }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span><a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>    boolean isMasterRunning() throws IOException {<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>      MasterProtos.IsMasterRunningResponse response = null;<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>      try {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>        response = this.stub.isMasterRunning(null, RequestConverter.buildIsMasterRunningRequest());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>      } catch (Exception e) {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>        throw ProtobufUtil.handleRemoteException(e);<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>      }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>      return response != null? response.getIsMasterRunning(): false;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    }<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>  }<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span><a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>  /**<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>   * The record of errors for servers.<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>   */<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  static class ServerErrorTracker {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>    // We need a concurrent map here, as we could have multiple threads updating it in parallel.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>    private final ConcurrentMap&lt;ServerName, ServerErrors&gt; errorsByServer = new ConcurrentHashMap&lt;&gt;();<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>    private final long canRetryUntil;<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>    private final int maxTries;// max number to try<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    private final long startTrackingTime;<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span><a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    /**<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>     * Constructor<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>     * @param timeout how long to wait before timeout, in unit of millisecond<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>     * @param maxTries how many times to try<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>     */<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>    public ServerErrorTracker(long timeout, int maxTries) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      this.maxTries = maxTries;<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>      this.canRetryUntil = EnvironmentEdgeManager.currentTime() + timeout;<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      this.startTrackingTime = new Date().getTime();<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span><a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    /**<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>     * We stop to retry when we have exhausted BOTH the number of tries and the time allocated.<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>     * @param numAttempt how many times we have tried by now<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>     */<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    boolean canTryMore(int numAttempt) {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>      // If there is a single try we must not take into account the time.<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      return numAttempt &lt; maxTries || (maxTries &gt; 1 &amp;&amp;<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>          EnvironmentEdgeManager.currentTime() &lt; this.canRetryUntil);<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    }<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span><a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    /**<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>     * Calculates the back-off time for a retrying request to a particular server.<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>     *<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>     * @param server    The server in question.<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>     * @param basePause The default hci pause.<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>     * @return The time to wait before sending next request.<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>     */<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    long calculateBackoffTime(ServerName server, long basePause) {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      long result;<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      ServerErrors errorStats = errorsByServer.get(server);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>      if (errorStats != null) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>        result = ConnectionUtils.getPauseTime(basePause, Math.max(0, errorStats.getCount() - 1));<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      } else {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        result = 0; // yes, if the server is not in our list we don't wait before retrying.<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      return result;<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    }<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span><a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>    /**<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>     * Reports that there was an error on the server to do whatever bean-counting necessary.<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>     * @param server The server in question.<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>     */<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>    void reportServerError(ServerName server) {<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>      computeIfAbsent(errorsByServer, server, ServerErrors::new).addError();<a name="line.1111"></a>
+<span class="sourceLineNo">1042</span>    boolean isMasterRunning() throws IOException {<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>      MasterProtos.IsMasterRunningResponse response = null;<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>      try {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>        response =

<TRUNCATED>

[22/26] hbase-site git commit: Published site at dfeab9f5c968625ac1c642c53c721eb5e81068c0.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/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 5f46c6b..af25c37 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -18,9 +18,9 @@
 <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 = "";<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 = "Thu Nov 29 14:44:16 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Fri Nov 30 14:44:18 UTC 2018";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://jenkins-websites1.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "76c50b67ef7b146f8930329762e594c4";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "50e37972f630f5708cca7f47f93c0b5e";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 


[18/26] hbase-site git commit: Published site at dfeab9f5c968625ac1c642c53c721eb5e81068c0.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html
index c62e029..36ceec7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceStubMaker.html
@@ -634,7 +634,7 @@
 <span class="sourceLineNo">626</span>    checkClosed();<a name="line.626"></a>
 <span class="sourceLineNo">627</span>    try {<a name="line.627"></a>
 <span class="sourceLineNo">628</span>      if (!isTableEnabled(tableName)) {<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        LOG.debug("Table " + tableName + " not enabled");<a name="line.629"></a>
+<span class="sourceLineNo">629</span>        LOG.debug("Table {} not enabled", tableName);<a name="line.629"></a>
 <span class="sourceLineNo">630</span>        return false;<a name="line.630"></a>
 <span class="sourceLineNo">631</span>      }<a name="line.631"></a>
 <span class="sourceLineNo">632</span>      List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; locations =<a name="line.632"></a>
@@ -645,1411 +645,1407 @@
 <span class="sourceLineNo">637</span>      for (Pair&lt;RegionInfo, ServerName&gt; pair : locations) {<a name="line.637"></a>
 <span class="sourceLineNo">638</span>        RegionInfo info = pair.getFirst();<a name="line.638"></a>
 <span class="sourceLineNo">639</span>        if (pair.getSecond() == null) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          if (LOG.isDebugEnabled()) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>            LOG.debug("Table " + tableName + " has not deployed region " + pair.getFirst()<a name="line.641"></a>
-<span class="sourceLineNo">642</span>                .getEncodedName());<a name="line.642"></a>
-<span class="sourceLineNo">643</span>          }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>          notDeployed++;<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        } else if (splitKeys != null<a name="line.645"></a>
-<span class="sourceLineNo">646</span>            &amp;&amp; !Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>          for (byte[] splitKey : splitKeys) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>            // Just check if the splitkey is available<a name="line.648"></a>
-<span class="sourceLineNo">649</span>            if (Bytes.equals(info.getStartKey(), splitKey)) {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>              regionCount++;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>              break;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>            }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          }<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        } else {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>          // Always empty start row should be counted<a name="line.655"></a>
-<span class="sourceLineNo">656</span>          regionCount++;<a name="line.656"></a>
-<span class="sourceLineNo">657</span>        }<a name="line.657"></a>
-<span class="sourceLineNo">658</span>      }<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      if (notDeployed &gt; 0) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        if (LOG.isDebugEnabled()) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>          LOG.debug("Table " + tableName + " has " + notDeployed + " regions");<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        return false;<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else if (splitKeys != null &amp;&amp; regionCount != splitKeys.length + 1) {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        if (LOG.isDebugEnabled()) {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>          LOG.debug("Table " + tableName + " expected to have " + (splitKeys.length + 1)<a name="line.666"></a>
-<span class="sourceLineNo">667</span>              + " regions, but only " + regionCount + " available");<a name="line.667"></a>
-<span class="sourceLineNo">668</span>        }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        return false;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      } else {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>        if (LOG.isDebugEnabled()) {<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          LOG.debug("Table " + tableName + " should be available");<a name="line.672"></a>
-<span class="sourceLineNo">673</span>        }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>        return true;<a name="line.674"></a>
-<span class="sourceLineNo">675</span>      }<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    } catch (TableNotFoundException tnfe) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>      LOG.warn("Table " + tableName + " not enabled, it is not exists");<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      return false;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    }<a name="line.679"></a>
-<span class="sourceLineNo">680</span>  }<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>  @Override<a name="line.682"></a>
-<span class="sourceLineNo">683</span>  public HRegionLocation locateRegion(final byte[] regionName) throws IOException {<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    RegionLocations locations = locateRegion(RegionInfo.getTable(regionName),<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      RegionInfo.getStartKey(regionName), false, true);<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    return locations == null ? null : locations.getRegionLocation();<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  }<a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>  private boolean isDeadServer(ServerName sn) {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    if (clusterStatusListener == null) {<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      return false;<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    } else {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      return clusterStatusListener.isDeadServer(sn);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    }<a name="line.694"></a>
-<span class="sourceLineNo">695</span>  }<a name="line.695"></a>
-<span class="sourceLineNo">696</span><a name="line.696"></a>
-<span class="sourceLineNo">697</span>  @Override<a name="line.697"></a>
-<span class="sourceLineNo">698</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName) throws IOException {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    return locateRegions(tableName, false, true);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  }<a name="line.700"></a>
-<span class="sourceLineNo">701</span><a name="line.701"></a>
-<span class="sourceLineNo">702</span>  @Override<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName, boolean useCache,<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      boolean offlined) throws IOException {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    List&lt;RegionInfo&gt; regions;<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.706"></a>
-<span class="sourceLineNo">707</span>      regions = Collections.singletonList(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    } else {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      regions = MetaTableAccessor.getTableRegions(this, tableName, !offlined);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    }<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;&gt;();<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    for (RegionInfo regionInfo : regions) {<a name="line.712"></a>
-<span class="sourceLineNo">713</span>      if (!RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.713"></a>
-<span class="sourceLineNo">714</span>        continue;<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      }<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      RegionLocations list = locateRegion(tableName, regionInfo.getStartKey(), useCache, true);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      if (list != null) {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>        for (HRegionLocation loc : list.getRegionLocations()) {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>          if (loc != null) {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>            locations.add(loc);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>          }<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        }<a name="line.722"></a>
-<span class="sourceLineNo">723</span>      }<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    }<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return locations;<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>  @Override<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public HRegionLocation locateRegion(final TableName tableName, final byte[] row)<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      throws IOException {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    RegionLocations locations = locateRegion(tableName, row, true, true);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    return locations == null ? null : locations.getRegionLocation();<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>  @Override<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  public HRegionLocation relocateRegion(final TableName tableName, final byte[] row)<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      throws IOException {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    RegionLocations locations =<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      relocateRegion(tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    return locations == null ? null<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      : locations.getRegionLocation(RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.741"></a>
-<span class="sourceLineNo">742</span>  }<a name="line.742"></a>
-<span class="sourceLineNo">743</span><a name="line.743"></a>
-<span class="sourceLineNo">744</span>  @Override<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public RegionLocations relocateRegion(final TableName tableName,<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      final byte [] row, int replicaId) throws IOException{<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    // Since this is an explicit request not to use any caching, finding<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    // disabled tables should not be desirable.  This will ensure that an exception is thrown when<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    // the first time a disabled table is interacted with.<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    if (!tableName.equals(TableName.META_TABLE_NAME) &amp;&amp; isTableDisabled(tableName)) {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>      throw new TableNotEnabledException(tableName.getNameAsString() + " is disabled.");<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    }<a name="line.752"></a>
-<span class="sourceLineNo">753</span><a name="line.753"></a>
-<span class="sourceLineNo">754</span>    return locateRegion(tableName, row, false, true, replicaId);<a name="line.754"></a>
-<span class="sourceLineNo">755</span>  }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>  @Override<a name="line.757"></a>
-<span class="sourceLineNo">758</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.758"></a>
-<span class="sourceLineNo">759</span>      boolean retry) throws IOException {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    return locateRegion(tableName, row, useCache, retry, RegionReplicaUtil.DEFAULT_REPLICA_ID);<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>  @Override<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      boolean retry, int replicaId) throws IOException {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    checkClosed();<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    if (tableName == null || tableName.getName().length == 0) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      throw new IllegalArgumentException("table name cannot be null or zero length");<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    }<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    if (tableName.equals(TableName.META_TABLE_NAME)) {<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      return locateMeta(tableName, useCache, replicaId);<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    } else {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      // Region not in the cache - have to go to the meta RS<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      return locateRegionInMeta(tableName, row, useCache, retry, replicaId);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    }<a name="line.775"></a>
-<span class="sourceLineNo">776</span>  }<a name="line.776"></a>
-<span class="sourceLineNo">777</span><a name="line.777"></a>
-<span class="sourceLineNo">778</span>  private RegionLocations locateMeta(final TableName tableName,<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      boolean useCache, int replicaId) throws IOException {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    // HBASE-10785: We cache the location of the META itself, so that we are not overloading<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // zookeeper with one request for every region lookup. We cache the META with empty row<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // key in MetaCache.<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    byte[] metaCacheKey = HConstants.EMPTY_START_ROW; // use byte[0] as the row for meta<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    RegionLocations locations = null;<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    if (useCache) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      locations = getCachedLocation(tableName, metaCacheKey);<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        return locations;<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      }<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
-<span class="sourceLineNo">791</span><a name="line.791"></a>
-<span class="sourceLineNo">792</span>    // only one thread should do the lookup.<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    synchronized (metaRegionLock) {<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      // Check the cache again for a hit in case some other thread made the<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      // same query while we were waiting on the lock.<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      if (useCache) {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>        locations = getCachedLocation(tableName, metaCacheKey);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>          return locations;<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>      // Look up from zookeeper<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      locations = get(this.registry.getMetaRegionLocation());<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      if (locations != null) {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>        cacheLocation(tableName, locations);<a name="line.806"></a>
-<span class="sourceLineNo">807</span>      }<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    }<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    return locations;<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  }<a name="line.810"></a>
-<span class="sourceLineNo">811</span><a name="line.811"></a>
-<span class="sourceLineNo">812</span>  /**<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * Search the hbase:meta table for the HRegionLocation info that contains the table and row we're<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * seeking.<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   */<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, boolean useCache,<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      boolean retry, int replicaId) throws IOException {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    // If we are supposed to be using the cache, look in the cache to see if we already have the<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    // region.<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    if (useCache) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      RegionLocations locations = getCachedLocation(tableName, row);<a name="line.821"></a>
-<span class="sourceLineNo">822</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>        return locations;<a name="line.823"></a>
-<span class="sourceLineNo">824</span>      }<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    }<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    // build the key of the meta region we should be looking for.<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    // the extra 9's on the end are necessary to allow "exact" matches<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    // without knowing the precise region names.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    byte[] metaStartKey = RegionInfo.createRegionName(tableName, row, HConstants.NINES, false);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    byte[] metaStopKey =<a name="line.830"></a>
-<span class="sourceLineNo">831</span>      RegionInfo.createRegionName(tableName, HConstants.EMPTY_START_ROW, "", false);<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    Scan s = new Scan().withStartRow(metaStartKey).withStopRow(metaStopKey, true)<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      .addFamily(HConstants.CATALOG_FAMILY).setReversed(true).setCaching(5)<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      .setReadType(ReadType.PREAD);<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    if (this.useMetaReplicas) {<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      s.setConsistency(Consistency.TIMELINE);<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    }<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    int maxAttempts = (retry ? numTries : 1);<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    boolean relocateMeta = false;<a name="line.839"></a>
-<span class="sourceLineNo">840</span>    for (int tries = 0; ; tries++) {<a name="line.840"></a>
-<span class="sourceLineNo">841</span>      if (tries &gt;= maxAttempts) {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>        throw new NoServerForRegionException("Unable to find region for "<a name="line.842"></a>
-<span class="sourceLineNo">843</span>            + Bytes.toStringBinary(row) + " in " + tableName + " after " + tries + " tries.");<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      }<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      if (useCache) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>        RegionLocations locations = getCachedLocation(tableName, row);<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.847"></a>
-<span class="sourceLineNo">848</span>          return locations;<a name="line.848"></a>
-<span class="sourceLineNo">849</span>        }<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      } else {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>        // If we are not supposed to be using the cache, delete any existing cached location<a name="line.851"></a>
-<span class="sourceLineNo">852</span>        // so it won't interfere.<a name="line.852"></a>
-<span class="sourceLineNo">853</span>        // We are only supposed to clean the cache for the specific replicaId<a name="line.853"></a>
-<span class="sourceLineNo">854</span>        metaCache.clearCache(tableName, row, replicaId);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      }<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      // Query the meta region<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      long pauseBase = this.pause;<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      userRegionLock.lock();<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      try {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>        if (useCache) {// re-check cache after get lock<a name="line.860"></a>
-<span class="sourceLineNo">861</span>          RegionLocations locations = getCachedLocation(tableName, row);<a name="line.861"></a>
-<span class="sourceLineNo">862</span>          if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.862"></a>
-<span class="sourceLineNo">863</span>            return locations;<a name="line.863"></a>
-<span class="sourceLineNo">864</span>          }<a name="line.864"></a>
+<span class="sourceLineNo">640</span>          LOG.debug("Table {} has not deployed region {}", tableName,<a name="line.640"></a>
+<span class="sourceLineNo">641</span>              pair.getFirst().getEncodedName());<a name="line.641"></a>
+<span class="sourceLineNo">642</span>          notDeployed++;<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        } else if (splitKeys != null<a name="line.643"></a>
+<span class="sourceLineNo">644</span>            &amp;&amp; !Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>          for (byte[] splitKey : splitKeys) {<a name="line.645"></a>
+<span class="sourceLineNo">646</span>            // Just check if the splitkey is available<a name="line.646"></a>
+<span class="sourceLineNo">647</span>            if (Bytes.equals(info.getStartKey(), splitKey)) {<a name="line.647"></a>
+<span class="sourceLineNo">648</span>              regionCount++;<a name="line.648"></a>
+<span class="sourceLineNo">649</span>              break;<a name="line.649"></a>
+<span class="sourceLineNo">650</span>            }<a name="line.650"></a>
+<span class="sourceLineNo">651</span>          }<a name="line.651"></a>
+<span class="sourceLineNo">652</span>        } else {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>          // Always empty start row should be counted<a name="line.653"></a>
+<span class="sourceLineNo">654</span>          regionCount++;<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        }<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      if (notDeployed &gt; 0) {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>        if (LOG.isDebugEnabled()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>          LOG.debug("Table {} has {} regions not deployed", tableName, notDeployed);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        }<a name="line.660"></a>
+<span class="sourceLineNo">661</span>        return false;<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      } else if (splitKeys != null &amp;&amp; regionCount != splitKeys.length + 1) {<a name="line.662"></a>
+<span class="sourceLineNo">663</span>        if (LOG.isDebugEnabled()) {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>          LOG.debug("Table {} expected to have {} regions, but only {} available", tableName,<a name="line.664"></a>
+<span class="sourceLineNo">665</span>              splitKeys.length + 1, regionCount);<a name="line.665"></a>
+<span class="sourceLineNo">666</span>        }<a name="line.666"></a>
+<span class="sourceLineNo">667</span>        return false;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>      } else {<a name="line.668"></a>
+<span class="sourceLineNo">669</span>        LOG.trace("Table {} should be available", tableName);<a name="line.669"></a>
+<span class="sourceLineNo">670</span>        return true;<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    } catch (TableNotFoundException tnfe) {<a name="line.672"></a>
+<span class="sourceLineNo">673</span>      LOG.warn("Table {} does not exist", tableName);<a name="line.673"></a>
+<span class="sourceLineNo">674</span>      return false;<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
+<span class="sourceLineNo">676</span>  }<a name="line.676"></a>
+<span class="sourceLineNo">677</span><a name="line.677"></a>
+<span class="sourceLineNo">678</span>  @Override<a name="line.678"></a>
+<span class="sourceLineNo">679</span>  public HRegionLocation locateRegion(final byte[] regionName) throws IOException {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    RegionLocations locations = locateRegion(RegionInfo.getTable(regionName),<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      RegionInfo.getStartKey(regionName), false, true);<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    return locations == null ? null : locations.getRegionLocation();<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>  private boolean isDeadServer(ServerName sn) {<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    if (clusterStatusListener == null) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>      return false;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    } else {<a name="line.688"></a>
+<span class="sourceLineNo">689</span>      return clusterStatusListener.isDeadServer(sn);<a name="line.689"></a>
+<span class="sourceLineNo">690</span>    }<a name="line.690"></a>
+<span class="sourceLineNo">691</span>  }<a name="line.691"></a>
+<span class="sourceLineNo">692</span><a name="line.692"></a>
+<span class="sourceLineNo">693</span>  @Override<a name="line.693"></a>
+<span class="sourceLineNo">694</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName) throws IOException {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    return locateRegions(tableName, false, true);<a name="line.695"></a>
+<span class="sourceLineNo">696</span>  }<a name="line.696"></a>
+<span class="sourceLineNo">697</span><a name="line.697"></a>
+<span class="sourceLineNo">698</span>  @Override<a name="line.698"></a>
+<span class="sourceLineNo">699</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName, boolean useCache,<a name="line.699"></a>
+<span class="sourceLineNo">700</span>      boolean offlined) throws IOException {<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    List&lt;RegionInfo&gt; regions;<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      regions = Collections.singletonList(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    } else {<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      regions = MetaTableAccessor.getTableRegions(this, tableName, !offlined);<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    }<a name="line.706"></a>
+<span class="sourceLineNo">707</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;&gt;();<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    for (RegionInfo regionInfo : regions) {<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      if (!RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>        continue;<a name="line.710"></a>
+<span class="sourceLineNo">711</span>      }<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      RegionLocations list = locateRegion(tableName, regionInfo.getStartKey(), useCache, true);<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      if (list != null) {<a name="line.713"></a>
+<span class="sourceLineNo">714</span>        for (HRegionLocation loc : list.getRegionLocations()) {<a name="line.714"></a>
+<span class="sourceLineNo">715</span>          if (loc != null) {<a name="line.715"></a>
+<span class="sourceLineNo">716</span>            locations.add(loc);<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>      }<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    }<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    return locations;<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">723</span><a name="line.723"></a>
+<span class="sourceLineNo">724</span>  @Override<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  public HRegionLocation locateRegion(final TableName tableName, final byte[] row)<a name="line.725"></a>
+<span class="sourceLineNo">726</span>      throws IOException {<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    RegionLocations locations = locateRegion(tableName, row, true, true);<a name="line.727"></a>
+<span class="sourceLineNo">728</span>    return locations == null ? null : locations.getRegionLocation();<a name="line.728"></a>
+<span class="sourceLineNo">729</span>  }<a name="line.729"></a>
+<span class="sourceLineNo">730</span><a name="line.730"></a>
+<span class="sourceLineNo">731</span>  @Override<a name="line.731"></a>
+<span class="sourceLineNo">732</span>  public HRegionLocation relocateRegion(final TableName tableName, final byte[] row)<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      throws IOException {<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    RegionLocations locations =<a name="line.734"></a>
+<span class="sourceLineNo">735</span>      relocateRegion(tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    return locations == null ? null<a name="line.736"></a>
+<span class="sourceLineNo">737</span>      : locations.getRegionLocation(RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>  }<a name="line.738"></a>
+<span class="sourceLineNo">739</span><a name="line.739"></a>
+<span class="sourceLineNo">740</span>  @Override<a name="line.740"></a>
+<span class="sourceLineNo">741</span>  public RegionLocations relocateRegion(final TableName tableName,<a name="line.741"></a>
+<span class="sourceLineNo">742</span>      final byte [] row, int replicaId) throws IOException{<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    // Since this is an explicit request not to use any caching, finding<a name="line.743"></a>
+<span class="sourceLineNo">744</span>    // disabled tables should not be desirable.  This will ensure that an exception is thrown when<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    // the first time a disabled table is interacted with.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    if (!tableName.equals(TableName.META_TABLE_NAME) &amp;&amp; isTableDisabled(tableName)) {<a name="line.746"></a>
+<span class="sourceLineNo">747</span>      throw new TableNotEnabledException(tableName.getNameAsString() + " is disabled.");<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    }<a name="line.748"></a>
+<span class="sourceLineNo">749</span><a name="line.749"></a>
+<span class="sourceLineNo">750</span>    return locateRegion(tableName, row, false, true, replicaId);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>  }<a name="line.751"></a>
+<span class="sourceLineNo">752</span><a name="line.752"></a>
+<span class="sourceLineNo">753</span>  @Override<a name="line.753"></a>
+<span class="sourceLineNo">754</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      boolean retry) throws IOException {<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    return locateRegion(tableName, row, useCache, retry, RegionReplicaUtil.DEFAULT_REPLICA_ID);<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>  @Override<a name="line.759"></a>
+<span class="sourceLineNo">760</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      boolean retry, int replicaId) throws IOException {<a name="line.761"></a>
+<span class="sourceLineNo">762</span>    checkClosed();<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    if (tableName == null || tableName.getName().length == 0) {<a name="line.763"></a>
+<span class="sourceLineNo">764</span>      throw new IllegalArgumentException("table name cannot be null or zero length");<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    }<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    if (tableName.equals(TableName.META_TABLE_NAME)) {<a name="line.766"></a>
+<span class="sourceLineNo">767</span>      return locateMeta(tableName, useCache, replicaId);<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    } else {<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      // Region not in the cache - have to go to the meta RS<a name="line.769"></a>
+<span class="sourceLineNo">770</span>      return locateRegionInMeta(tableName, row, useCache, retry, replicaId);<a name="line.770"></a>
+<span class="sourceLineNo">771</span>    }<a name="line.771"></a>
+<span class="sourceLineNo">772</span>  }<a name="line.772"></a>
+<span class="sourceLineNo">773</span><a name="line.773"></a>
+<span class="sourceLineNo">774</span>  private RegionLocations locateMeta(final TableName tableName,<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      boolean useCache, int replicaId) throws IOException {<a name="line.775"></a>
+<span class="sourceLineNo">776</span>    // HBASE-10785: We cache the location of the META itself, so that we are not overloading<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    // zookeeper with one request for every region lookup. We cache the META with empty row<a name="line.777"></a>
+<span class="sourceLineNo">778</span>    // key in MetaCache.<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    byte[] metaCacheKey = HConstants.EMPTY_START_ROW; // use byte[0] as the row for meta<a name="line.779"></a>
+<span class="sourceLineNo">780</span>    RegionLocations locations = null;<a name="line.780"></a>
+<span class="sourceLineNo">781</span>    if (useCache) {<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      locations = getCachedLocation(tableName, metaCacheKey);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.783"></a>
+<span class="sourceLineNo">784</span>        return locations;<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>    // only one thread should do the lookup.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>    synchronized (metaRegionLock) {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>      // Check the cache again for a hit in case some other thread made the<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      // same query while we were waiting on the lock.<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      if (useCache) {<a name="line.792"></a>
+<span class="sourceLineNo">793</span>        locations = getCachedLocation(tableName, metaCacheKey);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.794"></a>
+<span class="sourceLineNo">795</span>          return locations;<a name="line.795"></a>
+<span class="sourceLineNo">796</span>        }<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      }<a name="line.797"></a>
+<span class="sourceLineNo">798</span><a name="line.798"></a>
+<span class="sourceLineNo">799</span>      // Look up from zookeeper<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      locations = get(this.registry.getMetaRegionLocation());<a name="line.800"></a>
+<span class="sourceLineNo">801</span>      if (locations != null) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span>        cacheLocation(tableName, locations);<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>    return locations;<a name="line.805"></a>
+<span class="sourceLineNo">806</span>  }<a name="line.806"></a>
+<span class="sourceLineNo">807</span><a name="line.807"></a>
+<span class="sourceLineNo">808</span>  /**<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   * Search the hbase:meta table for the HRegionLocation info that contains the table and row we're<a name="line.809"></a>
+<span class="sourceLineNo">810</span>   * seeking.<a name="line.810"></a>
+<span class="sourceLineNo">811</span>   */<a name="line.811"></a>
+<span class="sourceLineNo">812</span>  private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, boolean useCache,<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      boolean retry, int replicaId) throws IOException {<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    // If we are supposed to be using the cache, look in the cache to see if we already have the<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    // region.<a name="line.815"></a>
+<span class="sourceLineNo">816</span>    if (useCache) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>      RegionLocations locations = getCachedLocation(tableName, row);<a name="line.817"></a>
+<span class="sourceLineNo">818</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>        return locations;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    }<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    // build the key of the meta region we should be looking for.<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    // the extra 9's on the end are necessary to allow "exact" matches<a name="line.823"></a>
+<span class="sourceLineNo">824</span>    // without knowing the precise region names.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    byte[] metaStartKey = RegionInfo.createRegionName(tableName, row, HConstants.NINES, false);<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    byte[] metaStopKey =<a name="line.826"></a>
+<span class="sourceLineNo">827</span>      RegionInfo.createRegionName(tableName, HConstants.EMPTY_START_ROW, "", false);<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    Scan s = new Scan().withStartRow(metaStartKey).withStopRow(metaStopKey, true)<a name="line.828"></a>
+<span class="sourceLineNo">829</span>      .addFamily(HConstants.CATALOG_FAMILY).setReversed(true).setCaching(5)<a name="line.829"></a>
+<span class="sourceLineNo">830</span>      .setReadType(ReadType.PREAD);<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    if (this.useMetaReplicas) {<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      s.setConsistency(Consistency.TIMELINE);<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    }<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    int maxAttempts = (retry ? numTries : 1);<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    boolean relocateMeta = false;<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    for (int tries = 0; ; tries++) {<a name="line.836"></a>
+<span class="sourceLineNo">837</span>      if (tries &gt;= maxAttempts) {<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        throw new NoServerForRegionException("Unable to find region for "<a name="line.838"></a>
+<span class="sourceLineNo">839</span>            + Bytes.toStringBinary(row) + " in " + tableName + " after " + tries + " tries.");<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      }<a name="line.840"></a>
+<span class="sourceLineNo">841</span>      if (useCache) {<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        RegionLocations locations = getCachedLocation(tableName, row);<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.843"></a>
+<span class="sourceLineNo">844</span>          return locations;<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        }<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      } else {<a name="line.846"></a>
+<span class="sourceLineNo">847</span>        // If we are not supposed to be using the cache, delete any existing cached location<a name="line.847"></a>
+<span class="sourceLineNo">848</span>        // so it won't interfere.<a name="line.848"></a>
+<span class="sourceLineNo">849</span>        // We are only supposed to clean the cache for the specific replicaId<a name="line.849"></a>
+<span class="sourceLineNo">850</span>        metaCache.clearCache(tableName, row, replicaId);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
+<span class="sourceLineNo">852</span>      // Query the meta region<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      long pauseBase = this.pause;<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      userRegionLock.lock();<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      try {<a name="line.855"></a>
+<span class="sourceLineNo">856</span>        if (useCache) {// re-check cache after get lock<a name="line.856"></a>
+<span class="sourceLineNo">857</span>          RegionLocations locations = getCachedLocation(tableName, row);<a name="line.857"></a>
+<span class="sourceLineNo">858</span>          if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.858"></a>
+<span class="sourceLineNo">859</span>            return locations;<a name="line.859"></a>
+<span class="sourceLineNo">860</span>          }<a name="line.860"></a>
+<span class="sourceLineNo">861</span>        }<a name="line.861"></a>
+<span class="sourceLineNo">862</span>        if (relocateMeta) {<a name="line.862"></a>
+<span class="sourceLineNo">863</span>          relocateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.863"></a>
+<span class="sourceLineNo">864</span>            RegionInfo.DEFAULT_REPLICA_ID);<a name="line.864"></a>
 <span class="sourceLineNo">865</span>        }<a name="line.865"></a>
-<span class="sourceLineNo">866</span>        if (relocateMeta) {<a name="line.866"></a>
-<span class="sourceLineNo">867</span>          relocateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.867"></a>
-<span class="sourceLineNo">868</span>            RegionInfo.DEFAULT_REPLICA_ID);<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>        s.resetMvccReadPoint();<a name="line.870"></a>
-<span class="sourceLineNo">871</span>        try (ReversedClientScanner rcs =<a name="line.871"></a>
-<span class="sourceLineNo">872</span>          new ReversedClientScanner(conf, s, TableName.META_TABLE_NAME, this, rpcCallerFactory,<a name="line.872"></a>
-<span class="sourceLineNo">873</span>            rpcControllerFactory, getMetaLookupPool(), metaReplicaCallTimeoutScanInMicroSecond)) {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>          boolean tableNotFound = true;<a name="line.874"></a>
-<span class="sourceLineNo">875</span>          for (;;) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>            Result regionInfoRow = rcs.next();<a name="line.876"></a>
-<span class="sourceLineNo">877</span>            if (regionInfoRow == null) {<a name="line.877"></a>
-<span class="sourceLineNo">878</span>              if (tableNotFound) {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>                throw new TableNotFoundException(tableName);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>              } else {<a name="line.880"></a>
-<span class="sourceLineNo">881</span>                throw new IOException(<a name="line.881"></a>
-<span class="sourceLineNo">882</span>                  "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>              }<a name="line.883"></a>
-<span class="sourceLineNo">884</span>            }<a name="line.884"></a>
-<span class="sourceLineNo">885</span>            tableNotFound = false;<a name="line.885"></a>
-<span class="sourceLineNo">886</span>            // convert the row result into the HRegionLocation we need!<a name="line.886"></a>
-<span class="sourceLineNo">887</span>            RegionLocations locations = MetaTableAccessor.getRegionLocations(regionInfoRow);<a name="line.887"></a>
-<span class="sourceLineNo">888</span>            if (locations == null || locations.getRegionLocation(replicaId) == null) {<a name="line.888"></a>
-<span class="sourceLineNo">889</span>              throw new IOException("RegionInfo null in " + tableName + ", row=" + regionInfoRow);<a name="line.889"></a>
-<span class="sourceLineNo">890</span>            }<a name="line.890"></a>
-<span class="sourceLineNo">891</span>            RegionInfo regionInfo = locations.getRegionLocation(replicaId).getRegion();<a name="line.891"></a>
-<span class="sourceLineNo">892</span>            if (regionInfo == null) {<a name="line.892"></a>
-<span class="sourceLineNo">893</span>              throw new IOException("RegionInfo null or empty in " + TableName.META_TABLE_NAME +<a name="line.893"></a>
-<span class="sourceLineNo">894</span>                ", row=" + regionInfoRow);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>            }<a name="line.895"></a>
-<span class="sourceLineNo">896</span>            // See HBASE-20182. It is possible that we locate to a split parent even after the<a name="line.896"></a>
-<span class="sourceLineNo">897</span>            // children are online, so here we need to skip this region and go to the next one.<a name="line.897"></a>
-<span class="sourceLineNo">898</span>            if (regionInfo.isSplitParent()) {<a name="line.898"></a>
-<span class="sourceLineNo">899</span>              continue;<a name="line.899"></a>
+<span class="sourceLineNo">866</span>        s.resetMvccReadPoint();<a name="line.866"></a>
+<span class="sourceLineNo">867</span>        try (ReversedClientScanner rcs =<a name="line.867"></a>
+<span class="sourceLineNo">868</span>          new ReversedClientScanner(conf, s, TableName.META_TABLE_NAME, this, rpcCallerFactory,<a name="line.868"></a>
+<span class="sourceLineNo">869</span>            rpcControllerFactory, getMetaLookupPool(), metaReplicaCallTimeoutScanInMicroSecond)) {<a name="line.869"></a>
+<span class="sourceLineNo">870</span>          boolean tableNotFound = true;<a name="line.870"></a>
+<span class="sourceLineNo">871</span>          for (;;) {<a name="line.871"></a>
+<span class="sourceLineNo">872</span>            Result regionInfoRow = rcs.next();<a name="line.872"></a>
+<span class="sourceLineNo">873</span>            if (regionInfoRow == null) {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>              if (tableNotFound) {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>                throw new TableNotFoundException(tableName);<a name="line.875"></a>
+<span class="sourceLineNo">876</span>              } else {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>                throw new IOException(<a name="line.877"></a>
+<span class="sourceLineNo">878</span>                  "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.878"></a>
+<span class="sourceLineNo">879</span>              }<a name="line.879"></a>
+<span class="sourceLineNo">880</span>            }<a name="line.880"></a>
+<span class="sourceLineNo">881</span>            tableNotFound = false;<a name="line.881"></a>
+<span class="sourceLineNo">882</span>            // convert the row result into the HRegionLocation we need!<a name="line.882"></a>
+<span class="sourceLineNo">883</span>            RegionLocations locations = MetaTableAccessor.getRegionLocations(regionInfoRow);<a name="line.883"></a>
+<span class="sourceLineNo">884</span>            if (locations == null || locations.getRegionLocation(replicaId) == null) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>              throw new IOException("RegionInfo null in " + tableName + ", row=" + regionInfoRow);<a name="line.885"></a>
+<span class="sourceLineNo">886</span>            }<a name="line.886"></a>
+<span class="sourceLineNo">887</span>            RegionInfo regionInfo = locations.getRegionLocation(replicaId).getRegion();<a name="line.887"></a>
+<span class="sourceLineNo">888</span>            if (regionInfo == null) {<a name="line.888"></a>
+<span class="sourceLineNo">889</span>              throw new IOException("RegionInfo null or empty in " + TableName.META_TABLE_NAME +<a name="line.889"></a>
+<span class="sourceLineNo">890</span>                ", row=" + regionInfoRow);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>            }<a name="line.891"></a>
+<span class="sourceLineNo">892</span>            // See HBASE-20182. It is possible that we locate to a split parent even after the<a name="line.892"></a>
+<span class="sourceLineNo">893</span>            // children are online, so here we need to skip this region and go to the next one.<a name="line.893"></a>
+<span class="sourceLineNo">894</span>            if (regionInfo.isSplitParent()) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>              continue;<a name="line.895"></a>
+<span class="sourceLineNo">896</span>            }<a name="line.896"></a>
+<span class="sourceLineNo">897</span>            if (regionInfo.isOffline()) {<a name="line.897"></a>
+<span class="sourceLineNo">898</span>              throw new RegionOfflineException("Region offline; disable table call? " +<a name="line.898"></a>
+<span class="sourceLineNo">899</span>                  regionInfo.getRegionNameAsString());<a name="line.899"></a>
 <span class="sourceLineNo">900</span>            }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>            if (regionInfo.isOffline()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>              throw new RegionOfflineException("Region offline; disable table call? " +<a name="line.902"></a>
-<span class="sourceLineNo">903</span>                  regionInfo.getRegionNameAsString());<a name="line.903"></a>
-<span class="sourceLineNo">904</span>            }<a name="line.904"></a>
-<span class="sourceLineNo">905</span>            // It is possible that the split children have not been online yet and we have skipped<a name="line.905"></a>
-<span class="sourceLineNo">906</span>            // the parent in the above condition, so we may have already reached a region which does<a name="line.906"></a>
-<span class="sourceLineNo">907</span>            // not contains us.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>            if (!regionInfo.containsRow(row)) {<a name="line.908"></a>
-<span class="sourceLineNo">909</span>              throw new IOException(<a name="line.909"></a>
-<span class="sourceLineNo">910</span>                "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.910"></a>
-<span class="sourceLineNo">911</span>            }<a name="line.911"></a>
-<span class="sourceLineNo">912</span>            ServerName serverName = locations.getRegionLocation(replicaId).getServerName();<a name="line.912"></a>
-<span class="sourceLineNo">913</span>            if (serverName == null) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>              throw new NoServerForRegionException("No server address listed in " +<a name="line.914"></a>
-<span class="sourceLineNo">915</span>                TableName.META_TABLE_NAME + " for region " + regionInfo.getRegionNameAsString() +<a name="line.915"></a>
-<span class="sourceLineNo">916</span>                " containing row " + Bytes.toStringBinary(row));<a name="line.916"></a>
-<span class="sourceLineNo">917</span>            }<a name="line.917"></a>
-<span class="sourceLineNo">918</span>            if (isDeadServer(serverName)) {<a name="line.918"></a>
-<span class="sourceLineNo">919</span>              throw new RegionServerStoppedException(<a name="line.919"></a>
-<span class="sourceLineNo">920</span>                "hbase:meta says the region " + regionInfo.getRegionNameAsString() +<a name="line.920"></a>
-<span class="sourceLineNo">921</span>                  " is managed by the server " + serverName + ", but it is dead.");<a name="line.921"></a>
-<span class="sourceLineNo">922</span>            }<a name="line.922"></a>
-<span class="sourceLineNo">923</span>            // Instantiate the location<a name="line.923"></a>
-<span class="sourceLineNo">924</span>            cacheLocation(tableName, locations);<a name="line.924"></a>
-<span class="sourceLineNo">925</span>            return locations;<a name="line.925"></a>
-<span class="sourceLineNo">926</span>          }<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        }<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      } catch (TableNotFoundException e) {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>        // if we got this error, probably means the table just plain doesn't<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // exist. rethrow the error immediately. this should always be coming<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        // from the HTable constructor.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>        throw e;<a name="line.932"></a>
-<span class="sourceLineNo">933</span>      } catch (IOException e) {<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        ExceptionUtil.rethrowIfInterrupt(e);<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        if (e instanceof RemoteException) {<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          e = ((RemoteException)e).unwrapRemoteException();<a name="line.936"></a>
+<span class="sourceLineNo">901</span>            // It is possible that the split children have not been online yet and we have skipped<a name="line.901"></a>
+<span class="sourceLineNo">902</span>            // the parent in the above condition, so we may have already reached a region which does<a name="line.902"></a>
+<span class="sourceLineNo">903</span>            // not contains us.<a name="line.903"></a>
+<span class="sourceLineNo">904</span>            if (!regionInfo.containsRow(row)) {<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              throw new IOException(<a name="line.905"></a>
+<span class="sourceLineNo">906</span>                "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.906"></a>
+<span class="sourceLineNo">907</span>            }<a name="line.907"></a>
+<span class="sourceLineNo">908</span>            ServerName serverName = locations.getRegionLocation(replicaId).getServerName();<a name="line.908"></a>
+<span class="sourceLineNo">909</span>            if (serverName == null) {<a name="line.909"></a>
+<span class="sourceLineNo">910</span>              throw new NoServerForRegionException("No server address listed in " +<a name="line.910"></a>
+<span class="sourceLineNo">911</span>                TableName.META_TABLE_NAME + " for region " + regionInfo.getRegionNameAsString() +<a name="line.911"></a>
+<span class="sourceLineNo">912</span>                " containing row " + Bytes.toStringBinary(row));<a name="line.912"></a>
+<span class="sourceLineNo">913</span>            }<a name="line.913"></a>
+<span class="sourceLineNo">914</span>            if (isDeadServer(serverName)) {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>              throw new RegionServerStoppedException(<a name="line.915"></a>
+<span class="sourceLineNo">916</span>                "hbase:meta says the region " + regionInfo.getRegionNameAsString() +<a name="line.916"></a>
+<span class="sourceLineNo">917</span>                  " is managed by the server " + serverName + ", but it is dead.");<a name="line.917"></a>
+<span class="sourceLineNo">918</span>            }<a name="line.918"></a>
+<span class="sourceLineNo">919</span>            // Instantiate the location<a name="line.919"></a>
+<span class="sourceLineNo">920</span>            cacheLocation(tableName, locations);<a name="line.920"></a>
+<span class="sourceLineNo">921</span>            return locations;<a name="line.921"></a>
+<span class="sourceLineNo">922</span>          }<a name="line.922"></a>
+<span class="sourceLineNo">923</span>        }<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      } catch (TableNotFoundException e) {<a name="line.924"></a>
+<span class="sourceLineNo">925</span>        // if we got this error, probably means the table just plain doesn't<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        // exist. rethrow the error immediately. this should always be coming<a name="line.926"></a>
+<span class="sourceLineNo">927</span>        // from the HTable constructor.<a name="line.927"></a>
+<span class="sourceLineNo">928</span>        throw e;<a name="line.928"></a>
+<span class="sourceLineNo">929</span>      } catch (IOException e) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>        ExceptionUtil.rethrowIfInterrupt(e);<a name="line.930"></a>
+<span class="sourceLineNo">931</span>        if (e instanceof RemoteException) {<a name="line.931"></a>
+<span class="sourceLineNo">932</span>          e = ((RemoteException)e).unwrapRemoteException();<a name="line.932"></a>
+<span class="sourceLineNo">933</span>        }<a name="line.933"></a>
+<span class="sourceLineNo">934</span>        if (e instanceof CallQueueTooBigException) {<a name="line.934"></a>
+<span class="sourceLineNo">935</span>          // Give a special check on CallQueueTooBigException, see #HBASE-17114<a name="line.935"></a>
+<span class="sourceLineNo">936</span>          pauseBase = this.pauseForCQTBE;<a name="line.936"></a>
 <span class="sourceLineNo">937</span>        }<a name="line.937"></a>
-<span class="sourceLineNo">938</span>        if (e instanceof CallQueueTooBigException) {<a name="line.938"></a>
-<span class="sourceLineNo">939</span>          // Give a special check on CallQueueTooBigException, see #HBASE-17114<a name="line.939"></a>
-<span class="sourceLineNo">940</span>          pauseBase = this.pauseForCQTBE;<a name="line.940"></a>
-<span class="sourceLineNo">941</span>        }<a name="line.941"></a>
-<span class="sourceLineNo">942</span>        if (tries &lt; maxAttempts - 1) {<a name="line.942"></a>
-<span class="sourceLineNo">943</span>          LOG.debug("locateRegionInMeta parentTable='{}', attempt={} of {} failed; retrying " +<a name="line.943"></a>
-<span class="sourceLineNo">944</span>            "after sleep of {}", TableName.META_TABLE_NAME, tries, maxAttempts, maxAttempts, e);<a name="line.944"></a>
-<span class="sourceLineNo">945</span>        } else {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>          throw e;<a name="line.946"></a>
-<span class="sourceLineNo">947</span>        }<a name="line.947"></a>
-<span class="sourceLineNo">948</span>        // Only relocate the parent region if necessary<a name="line.948"></a>
-<span class="sourceLineNo">949</span>        relocateMeta =<a name="line.949"></a>
-<span class="sourceLineNo">950</span>          !(e instanceof RegionOfflineException || e instanceof NoServerForRegionException);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>      } finally {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>        userRegionLock.unlock();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      try{<a name="line.954"></a>
-<span class="sourceLineNo">955</span>        Thread.sleep(ConnectionUtils.getPauseTime(pauseBase, tries));<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      } catch (InterruptedException e) {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>        throw new InterruptedIOException("Giving up trying to location region in " +<a name="line.957"></a>
-<span class="sourceLineNo">958</span>          "meta: thread is interrupted.");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span>    }<a name="line.960"></a>
-<span class="sourceLineNo">961</span>  }<a name="line.961"></a>
-<span class="sourceLineNo">962</span><a name="line.962"></a>
-<span class="sourceLineNo">963</span>  /**<a name="line.963"></a>
-<span class="sourceLineNo">964</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.964"></a>
-<span class="sourceLineNo">965</span>   * @param tableName The table name.<a name="line.965"></a>
-<span class="sourceLineNo">966</span>   * @param location the new location<a name="line.966"></a>
-<span class="sourceLineNo">967</span>   */<a name="line.967"></a>
-<span class="sourceLineNo">968</span>  @Override<a name="line.968"></a>
-<span class="sourceLineNo">969</span>  public void cacheLocation(final TableName tableName, final RegionLocations location) {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    metaCache.cacheLocation(tableName, location);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Search the cache for a location that fits our table and row key.<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * Return null if no suitable region is located.<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return Null or region location found in cache.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  RegionLocations getCachedLocation(final TableName tableName,<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      final byte [] row) {<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    return metaCache.getCachedLocation(tableName, row);<a name="line.980"></a>
+<span class="sourceLineNo">938</span>        if (tries &lt; maxAttempts - 1) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>          LOG.debug("locateRegionInMeta parentTable='{}', attempt={} of {} failed; retrying " +<a name="line.939"></a>
+<span class="sourceLineNo">940</span>            "after sleep of {}", TableName.META_TABLE_NAME, tries, maxAttempts, maxAttempts, e);<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        } else {<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          throw e;<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        }<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Only relocate the parent region if necessary<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        relocateMeta =<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          !(e instanceof RegionOfflineException || e instanceof NoServerForRegionException);<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      } finally {<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        userRegionLock.unlock();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      }<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try{<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        Thread.sleep(ConnectionUtils.getPauseTime(pauseBase, tries));<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (InterruptedException e) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        throw new InterruptedIOException("Giving up trying to location region in " +<a name="line.953"></a>
+<span class="sourceLineNo">954</span>          "meta: thread is interrupted.");<a name="line.954"></a>
+<span class="sourceLineNo">955</span>      }<a name="line.955"></a>
+<span class="sourceLineNo">956</span>    }<a name="line.956"></a>
+<span class="sourceLineNo">957</span>  }<a name="line.957"></a>
+<span class="sourceLineNo">958</span><a name="line.958"></a>
+<span class="sourceLineNo">959</span>  /**<a name="line.959"></a>
+<span class="sourceLineNo">960</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.960"></a>
+<span class="sourceLineNo">961</span>   * @param tableName The table name.<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   * @param location the new location<a name="line.962"></a>
+<span class="sourceLineNo">963</span>   */<a name="line.963"></a>
+<span class="sourceLineNo">964</span>  @Override<a name="line.964"></a>
+<span class="sourceLineNo">965</span>  public void cacheLocation(final TableName tableName, final RegionLocations location) {<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    metaCache.cacheLocation(tableName, location);<a name="line.966"></a>
+<span class="sourceLineNo">967</span>  }<a name="line.967"></a>
+<span class="sourceLineNo">968</span><a name="line.968"></a>
+<span class="sourceLineNo">969</span>  /**<a name="line.969"></a>
+<span class="sourceLineNo">970</span>   * Search the cache for a location that fits our table and row key.<a name="line.970"></a>
+<span class="sourceLineNo">971</span>   * Return null if no suitable region is located.<a name="line.971"></a>
+<span class="sourceLineNo">972</span>   * @return Null or region location found in cache.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>   */<a name="line.973"></a>
+<span class="sourceLineNo">974</span>  RegionLocations getCachedLocation(final TableName tableName,<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      final byte [] row) {<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    return metaCache.getCachedLocation(tableName, row);<a name="line.976"></a>
+<span class="sourceLineNo">977</span>  }<a name="line.977"></a>
+<span class="sourceLineNo">978</span><a name="line.978"></a>
+<span class="sourceLineNo">979</span>  public void clearRegionCache(final TableName tableName, byte[] row) {<a name="line.979"></a>
+<span class="sourceLineNo">980</span>    metaCache.clearCache(tableName, row);<a name="line.980"></a>
 <span class="sourceLineNo">981</span>  }<a name="line.981"></a>
 <span class="sourceLineNo">982</span><a name="line.982"></a>
-<span class="sourceLineNo">983</span>  public void clearRegionCache(final TableName tableName, byte[] row) {<a name="line.983"></a>
-<span class="sourceLineNo">984</span>    metaCache.clearCache(tableName, row);<a name="line.984"></a>
-<span class="sourceLineNo">985</span>  }<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>  /*<a name="line.987"></a>
-<span class="sourceLineNo">988</span>   * Delete all cached entries of a table that maps to a specific location.<a name="line.988"></a>
-<span class="sourceLineNo">989</span>   */<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  @Override<a name="line.990"></a>
-<span class="sourceLineNo">991</span>  public void clearCaches(final ServerName serverName) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    metaCache.clearCache(serverName);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>  }<a name="line.993"></a>
-<span class="sourceLineNo">994</span><a name="line.994"></a>
-<span class="sourceLineNo">995</span>  @Override<a name="line.995"></a>
-<span class="sourceLineNo">996</span>  public void clearRegionCache() {<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    metaCache.clearCache();<a name="line.997"></a>
-<span class="sourceLineNo">998</span>  }<a name="line.998"></a>
-<span class="sourceLineNo">999</span><a name="line.999"></a>
-<span class="sourceLineNo">1000</span>  @Override<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public void clearRegionCache(final TableName tableName) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    metaCache.clearCache(tableName);<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  }<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span><a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>  /**<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   * @param tableName The table name.<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   * @param source the source of the new location, if it's not coming from meta<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>   * @param location the new location<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>   */<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>  private void cacheLocation(final TableName tableName, final ServerName source,<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      final HRegionLocation location) {<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    metaCache.cacheLocation(tableName, source, location);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  // Map keyed by service name + regionserver to service stub implementation<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  private final ConcurrentMap&lt;String, Object&gt; stubs = new ConcurrentHashMap&lt;&gt;();<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span><a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>  /**<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * State of the MasterService connection/setup.<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   */<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>  static class MasterServiceState {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    Connection connection;<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    MasterProtos.MasterService.BlockingInterface stub;<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>    int userCount;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span><a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>    MasterServiceState(final Connection connection) {<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>      super();<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      this.connection = connection;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span><a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    @Override<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>    public String toString() {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>      return "MasterService";<a name="line.1035"></a>
+<span class="sourceLineNo">983</span>  /*<a name="line.983"></a>
+<span class="sourceLineNo">984</span>   * Delete all cached entries of a table that maps to a specific location.<a name="line.984"></a>
+<span class="sourceLineNo">985</span>   */<a name="line.985"></a>
+<span class="sourceLineNo">986</span>  @Override<a name="line.986"></a>
+<span class="sourceLineNo">987</span>  public void clearCaches(final ServerName serverName) {<a name="line.987"></a>
+<span class="sourceLineNo">988</span>    metaCache.clearCache(serverName);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
+<span class="sourceLineNo">990</span><a name="line.990"></a>
+<span class="sourceLineNo">991</span>  @Override<a name="line.991"></a>
+<span class="sourceLineNo">992</span>  public void clearRegionCache() {<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    metaCache.clearCache();<a name="line.993"></a>
+<span class="sourceLineNo">994</span>  }<a name="line.994"></a>
+<span class="sourceLineNo">995</span><a name="line.995"></a>
+<span class="sourceLineNo">996</span>  @Override<a name="line.996"></a>
+<span class="sourceLineNo">997</span>  public void clearRegionCache(final TableName tableName) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>    metaCache.clearCache(tableName);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>  }<a name="line.999"></a>
+<span class="sourceLineNo">1000</span><a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>  /**<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>   * @param tableName The table name.<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>   * @param source the source of the new location, if it's not coming from meta<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>   * @param location the new location<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>   */<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>  private void cacheLocation(final TableName tableName, final ServerName source,<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>      final HRegionLocation location) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>    metaCache.cacheLocation(tableName, source, location);<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>  }<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span><a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>  // Map keyed by service name + regionserver to service stub implementation<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>  private final ConcurrentMap&lt;String, Object&gt; stubs = new ConcurrentHashMap&lt;&gt;();<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span><a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>  /**<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>   * State of the MasterService connection/setup.<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>   */<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  static class MasterServiceState {<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>    Connection connection;<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span><a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>    MasterProtos.MasterService.BlockingInterface stub;<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    int userCount;<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span><a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>    MasterServiceState(final Connection connection) {<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>      super();<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      this.connection = connection;<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    }<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span><a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    @Override<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    public String toString() {<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>      return "MasterService";<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    }<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span><a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>    Object getStub() {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>      return this.stub;<a name="line.1035"></a>
 <span class="sourceLineNo">1036</span>    }<a name="line.1036"></a>
 <span class="sourceLineNo">1037</span><a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    Object getStub() {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>      return this.stub;<a name="line.1039"></a>
+<span class="sourceLineNo">1038</span>    void clearStub() {<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      this.stub = null;<a name="line.1039"></a>
 <span class="sourceLineNo">1040</span>    }<a name="line.1040"></a>
 <span class="sourceLineNo">1041</span><a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    void clearStub() {<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>      this.stub = null;<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>    }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span><a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>    boolean isMasterRunning() throws IOException {<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>      MasterProtos.IsMasterRunningResponse response = null;<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>      try {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>        response = this.stub.isMasterRunning(null, RequestConverter.buildIsMasterRunningRequest());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>      } catch (Exception e) {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>        throw ProtobufUtil.handleRemoteException(e);<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>      }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>      return response != null? response.getIsMasterRunning(): false;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    }<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>  }<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span><a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>  /**<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>   * The record of errors for servers.<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>   */<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  static class ServerErrorTracker {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>    // We need a concurrent map here, as we could have multiple threads updating it in parallel.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>    private final ConcurrentMap&lt;ServerName, ServerErrors&gt; errorsByServer = new ConcurrentHashMap&lt;&gt;();<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>    private final long canRetryUntil;<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>    private final int maxTries;// max number to try<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    private final long startTrackingTime;<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span><a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    /**<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>     * Constructor<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>     * @param timeout how long to wait before timeout, in unit of millisecond<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>     * @param maxTries how many times to try<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>     */<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>    public ServerErrorTracker(long timeout, int maxTries) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      this.maxTries = maxTries;<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>      this.canRetryUntil = EnvironmentEdgeManager.currentTime() + timeout;<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      this.startTrackingTime = new Date().getTime();<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span><a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    /**<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>     * We stop to retry when we have exhausted BOTH the number of tries and the time allocated.<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>     * @param numAttempt how many times we have tried by now<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>     */<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    boolean canTryMore(int numAttempt) {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>      // If there is a single try we must not take into account the time.<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      return numAttempt &lt; maxTries || (maxTries &gt; 1 &amp;&amp;<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>          EnvironmentEdgeManager.currentTime() &lt; this.canRetryUntil);<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    }<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span><a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    /**<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>     * Calculates the back-off time for a retrying request to a particular server.<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>     *<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>     * @param server    The server in question.<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>     * @param basePause The default hci pause.<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>     * @return The time to wait before sending next request.<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>     */<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    long calculateBackoffTime(ServerName server, long basePause) {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      long result;<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      ServerErrors errorStats = errorsByServer.get(server);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>      if (errorStats != null) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>        result = ConnectionUtils.getPauseTime(basePause, Math.max(0, errorStats.getCount() - 1));<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      } else {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        result = 0; // yes, if the server is not in our list we don't wait before retrying.<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      return result;<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    }<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span><a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>    /**<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>     * Reports that there was an error on the server to do whatever bean-counting necessary.<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>     * @param server The server in question.<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>     */<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>    void reportServerError(ServerName server) {<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>      computeIfAbsent(errorsByServer, server, ServerErrors::new).addError();<a name="line.1111"></a>
+<span class="sourceLineNo">1042</span>    boolean isMasterRunning() throws IOException {<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>      MasterProtos.IsMasterRunningResponse response = null;<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>      try {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</spa

<TRUNCATED>

[25/26] hbase-site git commit: Published site at dfeab9f5c968625ac1c642c53c721eb5e81068c0.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/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 3212827..db62a89 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html
@@ -1373,7 +1373,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.248">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.254">close</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true#close--" title="class or interface in java.io">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></code></dd>
@@ -1388,7 +1388,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>updateBackupInfo</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.257">updateBackupInfo</a>(<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&nbsp;info)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.263">updateBackupInfo</a>(<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&nbsp;info)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Updates status (state) of a backup session in backup system table table</div>
 <dl>
@@ -1405,7 +1405,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>readBulkLoadedFiles</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.272">readBulkLoadedFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.278">readBulkLoadedFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1419,7 +1419,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>readBulkLoadedFiles</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt;[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.298">readBulkLoadedFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId,
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt;[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.304">readBulkLoadedFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId,
                                                                          <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;sTableList)
                                                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -1434,7 +1434,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteBackupInfo</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.352">deleteBackupInfo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.358">deleteBackupInfo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Deletes backup status from backup system table table</div>
 <dl>
@@ -1451,7 +1451,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>writePathsPostBulkLoad</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.368">writePathsPostBulkLoad</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tabName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.374">writePathsPostBulkLoad</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tabName,
                                    byte[]&nbsp;region,
                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt;&nbsp;finalPaths)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1467,7 +1467,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>writeFilesForBulkLoadPreCommit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.388">writeFilesForBulkLoadPreCommit</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tabName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.394">writeFilesForBulkLoadPreCommit</a>(<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="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&gt;&nbsp;pairs)
@@ -1484,7 +1484,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteBulkLoadedRows</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.407">deleteBulkLoadedRows</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;rows)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.413">deleteBulkLoadedRows</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;rows)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1498,7 +1498,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>readBulkloadRows</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/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="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com
 /javase/8/docs/api/java/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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&gt;&gt;&gt;&gt;,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.427">readBulkloadRows</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../or
 g/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tableList)
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/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="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com
 /javase/8/docs/api/java/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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&gt;&gt;&gt;&gt;,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.433">readBulkloadRows</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../or
 g/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tableList)
                                                                                                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1512,7 +1512,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>writeBulkLoadedFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.489">writeBulkLoadedFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;sTableList,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.495">writeBulkLoadedFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;sTableList,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;byte[],<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt;[]&nbsp;maps,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1528,7 +1528,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>readBackupInfo</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.524">readBackupInfo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.530">readBackupInfo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Reads backup status object (instance of backup info) from backup system table table</div>
 <dl>
@@ -1547,7 +1547,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>readBackupStartCode</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.547">readBackupStartCode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.553">readBackupStartCode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Read the last backup start code (timestamp) of last successful backup. Will return null if
  there is no start code stored on hbase or the value is of length 0. These two cases indicate
@@ -1568,7 +1568,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>writeBackupStartCode</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.571">writeBackupStartCode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;startCode,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.577">writeBackupStartCode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;startCode,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Write the start code (timestamp) to backup system table. If passed in null, then write 0 byte.</div>
@@ -1587,7 +1587,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>startBackupExclusiveOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.586">startBackupExclusiveOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.592">startBackupExclusiveOperation</a>()
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Exclusive operations are: create, delete, merge</div>
 <dl>
@@ -1603,7 +1603,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>createPutForStartBackupSession</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.603">createPutForStartBackupSession</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.609">createPutForStartBackupSession</a>()</pre>
 </li>
 </ul>
 <a name="finishBackupExclusiveOperation--">
@@ -1612,7 +1612,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>finishBackupExclusiveOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.609">finishBackupExclusiveOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.615">finishBackupExclusiveOperation</a>()
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1626,7 +1626,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>createPutForStopBackupSession</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.621">createPutForStopBackupSession</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.627">createPutForStopBackupSession</a>()</pre>
 </li>
 </ul>
 <a name="readRegionServerLastLogRollResult-java.lang.String-">
@@ -1635,7 +1635,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>readRegionServerLastLogRollResult</h4>
-<pre>public&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.633">readRegionServerLastLogRollResult</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
+<pre>public&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.639">readRegionServerLastLogRollResult</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the Region Servers log information after the last log roll from backup system table.</div>
 <dl>
@@ -1654,7 +1654,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>writeRegionServerLastLogRollResult</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.662">writeRegionServerLastLogRollResult</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;server,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.668">writeRegionServerLastLogRollResult</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;server,
                                                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&nbsp;ts,
                                                <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1675,7 +1675,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackupHistory</h4>
-<pre>public&nbsp;<a href="https://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;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.678">getBackupHistory</a>(boolean&nbsp;onlyCompleted)
+<pre>public&nbsp;<a href="https://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;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.684">getBackupHistory</a>(boolean&nbsp;onlyCompleted)
                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get all completed backup information (in desc order by time)</div>
 <dl>
@@ -1694,7 +1694,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackupHistory</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.691">getBackupHistory</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.697">getBackupHistory</a>()
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get all backups history</div>
 <dl>
@@ -1711,7 +1711,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getHistory</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.701">getHistory</a>(int&nbsp;n)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.707">getHistory</a>(int&nbsp;n)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get first n backup history records</div>
 <dl>
@@ -1730,7 +1730,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackupHistory</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.716">getBackupHistory</a>(int&nbsp;n,
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.722">getBackupHistory</a>(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)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get backup history records filtered by list of filters.</div>
@@ -1751,7 +1751,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getTablesForBackupType</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.747">getTablesForBackupType</a>(<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup">BackupType</a>&nbsp;type)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.753">getTablesForBackupType</a>(<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup">BackupType</a>&nbsp;type)
                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1765,7 +1765,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackupHistory</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.764">getBackupHistory</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.770">getBackupHistory</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get history for backup destination</div>
 <dl>
@@ -1784,7 +1784,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackupHistoryForTable</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.781">getBackupHistoryForTable</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.787">getBackupHistoryForTable</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;name)
                                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get history for a table</div>
 <dl>
@@ -1803,7 +1803,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackupHistoryForTableSet</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://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;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.793">getBackupHistoryForTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;set,
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>,<a href="https://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;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.799">getBackupHistoryForTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;set,
                                                                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                                                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -1818,7 +1818,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getBackupInfos</h4>
-<pre>public&nbsp;<a href="https://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;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.823">getBackupInfos</a>(<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup">BackupInfo.BackupState</a>&nbsp;state)
+<pre>public&nbsp;<a href="https://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;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.829">getBackupInfos</a>(<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup">BackupInfo.BackupState</a>&nbsp;state)
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get all backup sessions with a given state (in descending order by time)</div>
 <dl>
@@ -1837,7 +1837,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>writeRegionServerLogTimestamp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.853">writeRegionServerLogTimestamp</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tables,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.859">writeRegionServerLogTimestamp</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tables,
                                           <a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;newTimestamps,
                                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1860,7 +1860,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>readLogTimestampMap</h4>
-<pre>public&nbsp;<a href="https://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="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.879">readLogTimestampMap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&
 nbsp;backupRoot)
+<pre>public&nbsp;<a href="https://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="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.885">readLogTimestampMap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&
 nbsp;backupRoot)
                                                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Read the timestamp for each region server log after the last successful backup. Each table has
  its own set of the timestamps. The info is stored for each table as a concatenated string of
@@ -1882,7 +1882,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>toTableServerTimestampProto</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.BackupProtos.TableServerTimestamp&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.912">toTableServerTimestampProto</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
+<pre>private&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.BackupProtos.TableServerTimestamp&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.918">toTableServerTimestampProto</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                                                                                                                         <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;map)</pre>
 </li>
 </ul>
@@ -1892,7 +1892,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>fromTableServerTimestampProto</h4>
-<pre>private&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.934">fromTableServerTimestampProto</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.BackupProtos.TableServerTimestamp&nbsp;proto)</pre>
+<pre>private&nbsp;<a href="https://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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.940">fromTableServerTimestampProto</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.BackupProtos.TableServerTimestamp&nbsp;proto)</pre>
 </li>
 </ul>
 <a name="getIncrementalBackupTableSet-java.lang.String-">
@@ -1901,7 +1901,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getIncrementalBackupTableSet</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.952">getIncrementalBackupTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.958">getIncrementalBackupTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Return the current tables covered by incremental backup.</div>
 <dl>
@@ -1920,7 +1920,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>addIncrementalBackupTableSet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.978">addIncrementalBackupTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tables,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.984">addIncrementalBackupTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tables,
                                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Add tables to global incremental backup set</div>
@@ -1939,7 +1939,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteIncrementalBackupTableSet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.997">deleteIncrementalBackupTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1003">deleteIncrementalBackupTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Deletes incremental backup set for a backup destination</div>
 <dl>
@@ -1956,7 +1956,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>addWALFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1014">addWALFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;files,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1020">addWALFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;files,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1977,7 +1977,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getWALFilesIterator</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupSystemTable.WALItem</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1034">getWALFilesIterator</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/backup/impl/BackupSystemTable.WALItem.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupSystemTable.WALItem</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1040">getWALFilesIterator</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Register WAL files as eligible for deletion</div>
 <dl>
@@ -1994,7 +1994,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>isWALFileDeletable</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1092">isWALFileDeletable</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;file)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1098">isWALFileDeletable</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;file)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Check if WAL file is eligible for deletion Future: to support all backup destinations</div>
 <dl>
@@ -2013,7 +2013,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>areWALFilesDeletable</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;org.apache.hadoop.fs.FileStatus,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1110">areWALFilesDeletable</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.hadoop.fs.FileStatus&gt;&nbsp;files)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;org.apache.hadoop.fs.FileStatus,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1116">areWALFilesDeletable</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.hadoop.fs.FileStatus&gt;&nbsp;files)
                                                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Check if WAL file is eligible for deletion using multi-get</div>
 <dl>
@@ -2033,7 +2033,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>hasBackupSessions</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1155">hasBackupSessions</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1161">hasBackupSessions</a>()
                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Checks if we have at least one backup session in backup system table This API is used by
  BackupLogCleaner</div>
@@ -2051,7 +2051,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>listBackupSets</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1179">listBackupSets</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1185">listBackupSets</a>()
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get backup set list</div>
 <dl>
@@ -2068,7 +2068,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>describeBackupSet</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1203">describeBackupSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1209">describeBackupSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get backup set description (list of tables)</div>
 <dl>
@@ -2087,7 +2087,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>addToBackupSet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1226">addToBackupSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1232">addToBackupSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;newTables)
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Add backup set (list of tables)</div>
@@ -2106,7 +2106,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>removeFromBackupSet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1252">removeFromBackupSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1258">removeFromBackupSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;toRemove)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Remove tables from backup set (list of tables)</div>
@@ -2125,7 +2125,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>merge</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1284">merge</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;existingTables,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1290">merge</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;existingTables,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;newTables)</pre>
 </li>
 </ul>
@@ -2135,7 +2135,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>disjoin</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1290">disjoin</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;existingTables,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1296">disjoin</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;existingTables,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;toRemove)</pre>
 </li>
 </ul>
@@ -2145,7 +2145,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteBackupSet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1301">deleteBackupSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1307">deleteBackupSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Delete backup set</div>
 <dl>
@@ -2162,7 +2162,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getSystemTableDescriptor</h4>
-<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1315">getSystemTableDescriptor</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1321">getSystemTableDescriptor</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Get backup system table descriptor</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -2176,7 +2176,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableName</h4>
-<pre>public static&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/backup/impl/BackupSystemTable.html#line.1336">getTableName</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&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/backup/impl/BackupSystemTable.html#line.1342">getTableName</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="getTableNameAsString-org.apache.hadoop.conf.Configuration-">
@@ -2185,7 +2185,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableNameAsString</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1342">getTableNameAsString</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1348">getTableNameAsString</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="getSnapshotName-org.apache.hadoop.conf.Configuration-">
@@ -2194,7 +2194,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getSnapshotName</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1346">getSnapshotName</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1352">getSnapshotName</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="getSystemTableForBulkLoadedDataDescriptor-org.apache.hadoop.conf.Configuration-">
@@ -2203,7 +2203,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getSystemTableForBulkLoadedDataDescriptor</h4>
-<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1354">getSystemTableForBulkLoadedDataDescriptor</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1360">getSystemTableForBulkLoadedDataDescriptor</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Get backup system table descriptor</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -2217,7 +2217,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableNameForBulkLoadedData</h4>
-<pre>public static&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/backup/impl/BackupSystemTable.html#line.1373">getTableNameForBulkLoadedData</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&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/backup/impl/BackupSystemTable.html#line.1379">getTableNameForBulkLoadedData</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="createPutForBackupInfo-org.apache.hadoop.hbase.backup.BackupInfo-">
@@ -2226,7 +2226,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>createPutForBackupInfo</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1385">createPutForBackupInfo</a>(<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&nbsp;context)
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1391">createPutForBackupInfo</a>(<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&nbsp;context)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates Put operation for a given backup info object</div>
 <dl>
@@ -2245,7 +2245,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>createGetForBackupInfo</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1398">createGetForBackupInfo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1404">createGetForBackupInfo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates Get operation for a given backup id</div>
 <dl>
@@ -2264,7 +2264,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>createDeleteForBackupInfo</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1410">createDeleteForBackupInfo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1416">createDeleteForBackupInfo</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupId)</pre>
 <div class="block">Creates Delete operation for a given backup id</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2280,7 +2280,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>resultToBackupInfo</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1422">resultToBackupInfo</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;res)
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/backup/BackupInfo.html" title="class in org.apache.hadoop.hbase.backup">BackupInfo</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1428">resultToBackupInfo</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;res)
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Converts Result to BackupInfo</div>
 <dl>
@@ -2299,7 +2299,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>createGetForStartCode</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1433">createGetForStartCode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;rootPath)
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1439">createGetForStartCode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;rootPath)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates Get operation to retrieve start code from backup system table</div>
 <dl>
@@ -2316,7 +2316,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>createPutForStartCode</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1444">createPutForStartCode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;startCode,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1450">createPutForStartCode</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;startCode,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;rootPath)</pre>
 <div class="block">Creates Put operation to store start code to backup system table</div>
 <dl>
@@ -2331,7 +2331,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>createGetForIncrBackupTableSet</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1456">createGetForIncrBackupTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1462">createGetForIncrBackupTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Creates Get to retrieve incremental backup table set from backup system table</div>
 <dl>
@@ -2348,7 +2348,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>createPutForIncrBackupTableSet</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1468">createPutForIncrBackupTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tables,
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1474">createPutForIncrBackupTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tables,
                                            <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</pre>
 <div class="block">Creates Put to store incremental backup table set</div>
 <dl>
@@ -2365,7 +2365,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>createDeleteForIncrBackupTableSet</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1482">createDeleteForIncrBackupTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#line.1488">createDeleteForIncrBackupTableSet</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;backupRoot)</pre>
 <div class="block">Creates Delete for incremental backup table set</div>
 <dl

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html
index 1876095..b4aeccc 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/compactions/FIFOCompactionPolicy.html
@@ -104,40 +104,56 @@
 <span class="sourceLineNo">096</span>    return hasExpiredStores(storeFiles);<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>  private boolean hasExpiredStores(Collection&lt;HStoreFile&gt; files) {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    long currentTime = EnvironmentEdgeManager.currentTime();<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    for(HStoreFile sf: files){<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      // Check MIN_VERSIONS is in HStore removeUnneededFiles<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      long maxTs = sf.getReader().getMaxTimestamp();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      long maxTtl = storeConfigInfo.getStoreFileTtl();<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      if (maxTtl == Long.MAX_VALUE<a name="line.105"></a>
-<span class="sourceLineNo">106</span>          || (currentTime - maxTtl &lt; maxTs)){<a name="line.106"></a>
-<span class="sourceLineNo">107</span>        continue; <a name="line.107"></a>
-<span class="sourceLineNo">108</span>      } else{<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        return true;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      }<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    }<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    return false;<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>  private Collection&lt;HStoreFile&gt; getExpiredStores(Collection&lt;HStoreFile&gt; files,<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      Collection&lt;HStoreFile&gt; filesCompacting) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    long currentTime = EnvironmentEdgeManager.currentTime();<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    Collection&lt;HStoreFile&gt; expiredStores = new ArrayList&lt;&gt;();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    for(HStoreFile sf: files){<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      // Check MIN_VERSIONS is in HStore removeUnneededFiles<a name="line.120"></a>
-<span class="sourceLineNo">121</span>      long maxTs = sf.getReader().getMaxTimestamp();<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      long maxTtl = storeConfigInfo.getStoreFileTtl();<a name="line.122"></a>
-<span class="sourceLineNo">123</span>      if (maxTtl == Long.MAX_VALUE<a name="line.123"></a>
-<span class="sourceLineNo">124</span>          || (currentTime - maxTtl &lt; maxTs)){<a name="line.124"></a>
-<span class="sourceLineNo">125</span>        continue; <a name="line.125"></a>
-<span class="sourceLineNo">126</span>      } else if(filesCompacting == null || !filesCompacting.contains(sf)){<a name="line.126"></a>
-<span class="sourceLineNo">127</span>        expiredStores.add(sf);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    return expiredStores;<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">099</span>  /**<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * The FIFOCompactionPolicy only choose those TTL expired HFiles as the compaction candidates. So<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * if all HFiles are TTL expired, then the compaction will generate a new empty HFile. While its<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * max timestamp will be Long.MAX_VALUE. If not considered separately, the HFile will never be<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * archived because its TTL will be never expired. So we'll check the empty store file separately.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * (See HBASE-21504)<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  private boolean isEmptyStoreFile(HStoreFile sf) {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    return sf.getReader().getEntries() == 0;<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>  private boolean hasExpiredStores(Collection&lt;HStoreFile&gt; files) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    long currentTime = EnvironmentEdgeManager.currentTime();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    for (HStoreFile sf : files) {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      if (isEmptyStoreFile(sf)) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        return true;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      }<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      // Check MIN_VERSIONS is in HStore removeUnneededFiles<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      long maxTs = sf.getReader().getMaxTimestamp();<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      long maxTtl = storeConfigInfo.getStoreFileTtl();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      if (maxTtl == Long.MAX_VALUE || (currentTime - maxTtl &lt; maxTs)) {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        continue;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      } else {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        return true;<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>    return false;<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 Collection&lt;HStoreFile&gt; getExpiredStores(Collection&lt;HStoreFile&gt; files,<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      Collection&lt;HStoreFile&gt; filesCompacting) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    long currentTime = EnvironmentEdgeManager.currentTime();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    Collection&lt;HStoreFile&gt; expiredStores = new ArrayList&lt;&gt;();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    for (HStoreFile sf : files) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      if (isEmptyStoreFile(sf)) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        expiredStores.add(sf);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        continue;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      // Check MIN_VERSIONS is in HStore removeUnneededFiles<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      long maxTs = sf.getReader().getMaxTimestamp();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      long maxTtl = storeConfigInfo.getStoreFileTtl();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      if (maxTtl == Long.MAX_VALUE || (currentTime - maxTtl &lt; maxTs)) {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        continue;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      } else if (filesCompacting == null || !filesCompacting.contains(sf)) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        expiredStores.add(sf);<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>    return expiredStores;<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.MasterThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.MasterThread.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.MasterThread.html
index 67f0fc6..9870370 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.MasterThread.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.MasterThread.html
@@ -257,99 +257,109 @@
 <span class="sourceLineNo">249</span>      // Do backups first.<a name="line.249"></a>
 <span class="sourceLineNo">250</span>      JVMClusterUtil.MasterThread activeMaster = null;<a name="line.250"></a>
 <span class="sourceLineNo">251</span>      for (JVMClusterUtil.MasterThread t : masters) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        if (!t.master.isActiveMaster()) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          try {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>            t.master.stopMaster();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          } catch (IOException e) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>            LOG.error("Exception occurred while stopping master", e);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>          }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        } else {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          activeMaster = t;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      // Do active after.<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      if (activeMaster != null) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        try {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          activeMaster.master.shutdown();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        } catch (IOException e) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          LOG.error("Exception occurred in HMaster.shutdown()", e);<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>    boolean wasInterrupted = false;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    final long maxTime = System.currentTimeMillis() + 30 * 1000;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    if (regionservers != null) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      // first try nicely.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      for (RegionServerThread t : regionservers) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        t.getRegionServer().stop("Shutdown requested");<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      for (RegionServerThread t : regionservers) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        long now = System.currentTimeMillis();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        if (t.isAlive() &amp;&amp; !wasInterrupted &amp;&amp; now &lt; maxTime) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          try {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            t.join(maxTime - now);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          } catch (InterruptedException e) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>            LOG.info("Got InterruptedException on shutdown - " +<a name="line.284"></a>
-<span class="sourceLineNo">285</span>                "not waiting anymore on region server ends", e);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>            wasInterrupted = true; // someone wants us to speed up.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      }<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>      // Let's try to interrupt the remaining threads if any.<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      for (int i = 0; i &lt; 100; ++i) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        boolean atLeastOneLiveServer = false;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        for (RegionServerThread t : regionservers) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          if (t.isAlive()) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            atLeastOneLiveServer = true;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            try {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>              LOG.warn("RegionServerThreads remaining, give one more chance before interrupting");<a name="line.298"></a>
-<span class="sourceLineNo">299</span>              t.join(1000);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>            } catch (InterruptedException e) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>              wasInterrupted = true;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>            }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        if (!atLeastOneLiveServer) break;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        for (RegionServerThread t : regionservers) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>          if (t.isAlive()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>            LOG.warn("RegionServerThreads taking too long to stop, interrupting; thread dump "  +<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              "if &gt; 3 attempts: i=" + i);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>            if (i &gt; 3) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>              Threads.printThreadInfo(System.out, "Thread dump " + t.getName());<a name="line.311"></a>
+<span class="sourceLineNo">252</span>        // Master was killed but could be still considered as active. Check first if it is stopped.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        if (!t.master.isStopped()) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          if (!t.master.isActiveMaster()) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>            try {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>              t.master.stopMaster();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>            } catch (IOException e) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>              LOG.error("Exception occurred while stopping master", e);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>            }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>            LOG.info("Stopped backup Master {} is stopped: {}",<a name="line.260"></a>
+<span class="sourceLineNo">261</span>                t.master.hashCode(), t.master.isStopped());<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          } else {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            if (activeMaster != null) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>              LOG.warn("Found more than 1 active master, hash {}", activeMaster.master.hashCode());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>            }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>            activeMaster = t;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>            LOG.debug("Found active master hash={}, stopped={}",<a name="line.267"></a>
+<span class="sourceLineNo">268</span>                t.master.hashCode(), t.master.isStopped());<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>      // Do active after.<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      if (activeMaster != null) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        try {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          activeMaster.master.shutdown();<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (IOException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          LOG.error("Exception occurred in HMaster.shutdown()", e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    boolean wasInterrupted = false;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    final long maxTime = System.currentTimeMillis() + 30 * 1000;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    if (regionservers != null) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      // first try nicely.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      for (RegionServerThread t : regionservers) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        t.getRegionServer().stop("Shutdown requested");<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      for (RegionServerThread t : regionservers) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        long now = System.currentTimeMillis();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        if (t.isAlive() &amp;&amp; !wasInterrupted &amp;&amp; now &lt; maxTime) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          try {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>            t.join(maxTime - now);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          } catch (InterruptedException e) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            LOG.info("Got InterruptedException on shutdown - " +<a name="line.294"></a>
+<span class="sourceLineNo">295</span>                "not waiting anymore on region server ends", e);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>            wasInterrupted = true; // someone wants us to speed up.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>      // Let's try to interrupt the remaining threads if any.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      for (int i = 0; i &lt; 100; ++i) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        boolean atLeastOneLiveServer = false;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        for (RegionServerThread t : regionservers) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>          if (t.isAlive()) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>            atLeastOneLiveServer = true;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>            try {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>              LOG.warn("RegionServerThreads remaining, give one more chance before interrupting");<a name="line.308"></a>
+<span class="sourceLineNo">309</span>              t.join(1000);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>            } catch (InterruptedException e) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>              wasInterrupted = true;<a name="line.311"></a>
 <span class="sourceLineNo">312</span>            }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>            t.interrupt();<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          }<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>    if (masters != null) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      for (JVMClusterUtil.MasterThread t : masters) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        while (t.master.isAlive() &amp;&amp; !wasInterrupted) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          try {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            // The below has been replaced to debug sometime hangs on end of<a name="line.323"></a>
-<span class="sourceLineNo">324</span>            // tests.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>            // this.master.join():<a name="line.325"></a>
-<span class="sourceLineNo">326</span>            Threads.threadDumpingIsAlive(t.master.getThread());<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          } catch(InterruptedException e) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>            LOG.info("Got InterruptedException on shutdown - " +<a name="line.328"></a>
-<span class="sourceLineNo">329</span>                "not waiting anymore on master ends", e);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>            wasInterrupted = true;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    LOG.info("Shutdown of " +<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      ((masters != null) ? masters.size() : "0") + " master(s) and " +<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      ((regionservers != null) ? regionservers.size() : "0") +<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      " regionserver(s) " + (wasInterrupted ? "interrupted" : "complete"));<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    if (wasInterrupted){<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      Thread.currentThread().interrupt();<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>}<a name="line.344"></a>
+<span class="sourceLineNo">313</span>          }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        if (!atLeastOneLiveServer) break;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        for (RegionServerThread t : regionservers) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>          if (t.isAlive()) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>            LOG.warn("RegionServerThreads taking too long to stop, interrupting; thread dump "  +<a name="line.318"></a>
+<span class="sourceLineNo">319</span>              "if &gt; 3 attempts: i=" + i);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            if (i &gt; 3) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>              Threads.printThreadInfo(System.out, "Thread dump " + t.getName());<a name="line.321"></a>
+<span class="sourceLineNo">322</span>            }<a name="line.322"></a>
+<span class="sourceLineNo">323</span>            t.interrupt();<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>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>    if (masters != null) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      for (JVMClusterUtil.MasterThread t : masters) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        while (t.master.isAlive() &amp;&amp; !wasInterrupted) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          try {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>            // The below has been replaced to debug sometime hangs on end of<a name="line.333"></a>
+<span class="sourceLineNo">334</span>            // tests.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>            // this.master.join():<a name="line.335"></a>
+<span class="sourceLineNo">336</span>            Threads.threadDumpingIsAlive(t.master.getThread());<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          } catch(InterruptedException e) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>            LOG.info("Got InterruptedException on shutdown - " +<a name="line.338"></a>
+<span class="sourceLineNo">339</span>                "not waiting anymore on master ends", e);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>            wasInterrupted = true;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    LOG.info("Shutdown of " +<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      ((masters != null) ? masters.size() : "0") + " master(s) and " +<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      ((regionservers != null) ? regionservers.size() : "0") +<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      " regionserver(s) " + (wasInterrupted ? "interrupted" : "complete"));<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>    if (wasInterrupted){<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      Thread.currentThread().interrupt();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>}<a name="line.354"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.RegionServerThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.RegionServerThread.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.RegionServerThread.html
index 67f0fc6..9870370 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.RegionServerThread.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.RegionServerThread.html
@@ -257,99 +257,109 @@
 <span class="sourceLineNo">249</span>      // Do backups first.<a name="line.249"></a>
 <span class="sourceLineNo">250</span>      JVMClusterUtil.MasterThread activeMaster = null;<a name="line.250"></a>
 <span class="sourceLineNo">251</span>      for (JVMClusterUtil.MasterThread t : masters) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        if (!t.master.isActiveMaster()) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          try {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>            t.master.stopMaster();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          } catch (IOException e) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>            LOG.error("Exception occurred while stopping master", e);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>          }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        } else {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          activeMaster = t;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      // Do active after.<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      if (activeMaster != null) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        try {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          activeMaster.master.shutdown();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        } catch (IOException e) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          LOG.error("Exception occurred in HMaster.shutdown()", e);<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>    boolean wasInterrupted = false;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    final long maxTime = System.currentTimeMillis() + 30 * 1000;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    if (regionservers != null) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      // first try nicely.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      for (RegionServerThread t : regionservers) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        t.getRegionServer().stop("Shutdown requested");<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      for (RegionServerThread t : regionservers) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        long now = System.currentTimeMillis();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        if (t.isAlive() &amp;&amp; !wasInterrupted &amp;&amp; now &lt; maxTime) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          try {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            t.join(maxTime - now);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          } catch (InterruptedException e) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>            LOG.info("Got InterruptedException on shutdown - " +<a name="line.284"></a>
-<span class="sourceLineNo">285</span>                "not waiting anymore on region server ends", e);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>            wasInterrupted = true; // someone wants us to speed up.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      }<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>      // Let's try to interrupt the remaining threads if any.<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      for (int i = 0; i &lt; 100; ++i) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        boolean atLeastOneLiveServer = false;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        for (RegionServerThread t : regionservers) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          if (t.isAlive()) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            atLeastOneLiveServer = true;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            try {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>              LOG.warn("RegionServerThreads remaining, give one more chance before interrupting");<a name="line.298"></a>
-<span class="sourceLineNo">299</span>              t.join(1000);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>            } catch (InterruptedException e) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>              wasInterrupted = true;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>            }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        if (!atLeastOneLiveServer) break;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        for (RegionServerThread t : regionservers) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>          if (t.isAlive()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>            LOG.warn("RegionServerThreads taking too long to stop, interrupting; thread dump "  +<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              "if &gt; 3 attempts: i=" + i);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>            if (i &gt; 3) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>              Threads.printThreadInfo(System.out, "Thread dump " + t.getName());<a name="line.311"></a>
+<span class="sourceLineNo">252</span>        // Master was killed but could be still considered as active. Check first if it is stopped.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        if (!t.master.isStopped()) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          if (!t.master.isActiveMaster()) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>            try {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>              t.master.stopMaster();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>            } catch (IOException e) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>              LOG.error("Exception occurred while stopping master", e);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>            }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>            LOG.info("Stopped backup Master {} is stopped: {}",<a name="line.260"></a>
+<span class="sourceLineNo">261</span>                t.master.hashCode(), t.master.isStopped());<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          } else {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            if (activeMaster != null) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>              LOG.warn("Found more than 1 active master, hash {}", activeMaster.master.hashCode());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>            }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>            activeMaster = t;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>            LOG.debug("Found active master hash={}, stopped={}",<a name="line.267"></a>
+<span class="sourceLineNo">268</span>                t.master.hashCode(), t.master.isStopped());<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>      // Do active after.<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      if (activeMaster != null) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        try {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          activeMaster.master.shutdown();<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (IOException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          LOG.error("Exception occurred in HMaster.shutdown()", e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    boolean wasInterrupted = false;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    final long maxTime = System.currentTimeMillis() + 30 * 1000;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    if (regionservers != null) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      // first try nicely.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      for (RegionServerThread t : regionservers) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        t.getRegionServer().stop("Shutdown requested");<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      for (RegionServerThread t : regionservers) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        long now = System.currentTimeMillis();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        if (t.isAlive() &amp;&amp; !wasInterrupted &amp;&amp; now &lt; maxTime) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          try {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>            t.join(maxTime - now);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          } catch (InterruptedException e) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            LOG.info("Got InterruptedException on shutdown - " +<a name="line.294"></a>
+<span class="sourceLineNo">295</span>                "not waiting anymore on region server ends", e);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>            wasInterrupted = true; // someone wants us to speed up.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>      // Let's try to interrupt the remaining threads if any.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      for (int i = 0; i &lt; 100; ++i) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        boolean atLeastOneLiveServer = false;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        for (RegionServerThread t : regionservers) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>          if (t.isAlive()) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>            atLeastOneLiveServer = true;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>            try {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>              LOG.warn("RegionServerThreads remaining, give one more chance before interrupting");<a name="line.308"></a>
+<span class="sourceLineNo">309</span>              t.join(1000);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>            } catch (InterruptedException e) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>              wasInterrupted = true;<a name="line.311"></a>
 <span class="sourceLineNo">312</span>            }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>            t.interrupt();<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          }<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>    if (masters != null) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      for (JVMClusterUtil.MasterThread t : masters) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        while (t.master.isAlive() &amp;&amp; !wasInterrupted) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          try {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            // The below has been replaced to debug sometime hangs on end of<a name="line.323"></a>
-<span class="sourceLineNo">324</span>            // tests.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>            // this.master.join():<a name="line.325"></a>
-<span class="sourceLineNo">326</span>            Threads.threadDumpingIsAlive(t.master.getThread());<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          } catch(InterruptedException e) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>            LOG.info("Got InterruptedException on shutdown - " +<a name="line.328"></a>
-<span class="sourceLineNo">329</span>                "not waiting anymore on master ends", e);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>            wasInterrupted = true;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    LOG.info("Shutdown of " +<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      ((masters != null) ? masters.size() : "0") + " master(s) and " +<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      ((regionservers != null) ? regionservers.size() : "0") +<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      " regionserver(s) " + (wasInterrupted ? "interrupted" : "complete"));<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    if (wasInterrupted){<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      Thread.currentThread().interrupt();<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>}<a name="line.344"></a>
+<span class="sourceLineNo">313</span>          }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        if (!atLeastOneLiveServer) break;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        for (RegionServerThread t : regionservers) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>          if (t.isAlive()) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>            LOG.warn("RegionServerThreads taking too long to stop, interrupting; thread dump "  +<a name="line.318"></a>
+<span class="sourceLineNo">319</span>              "if &gt; 3 attempts: i=" + i);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            if (i &gt; 3) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>              Threads.printThreadInfo(System.out, "Thread dump " + t.getName());<a name="line.321"></a>
+<span class="sourceLineNo">322</span>            }<a name="line.322"></a>
+<span class="sourceLineNo">323</span>            t.interrupt();<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>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>    if (masters != null) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      for (JVMClusterUtil.MasterThread t : masters) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        while (t.master.isAlive() &amp;&amp; !wasInterrupted) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          try {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>            // The below has been replaced to debug sometime hangs on end of<a name="line.333"></a>
+<span class="sourceLineNo">334</span>            // tests.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>            // this.master.join():<a name="line.335"></a>
+<span class="sourceLineNo">336</span>            Threads.threadDumpingIsAlive(t.master.getThread());<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          } catch(InterruptedException e) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>            LOG.info("Got InterruptedException on shutdown - " +<a name="line.338"></a>
+<span class="sourceLineNo">339</span>                "not waiting anymore on master ends", e);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>            wasInterrupted = true;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    LOG.info("Shutdown of " +<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      ((masters != null) ? masters.size() : "0") + " master(s) and " +<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      ((regionservers != null) ? regionservers.size() : "0") +<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      " regionserver(s) " + (wasInterrupted ? "interrupted" : "complete"));<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>    if (wasInterrupted){<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      Thread.currentThread().interrupt();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>}<a name="line.354"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.html b/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.html
index 67f0fc6..9870370 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/util/JVMClusterUtil.html
@@ -257,99 +257,109 @@
 <span class="sourceLineNo">249</span>      // Do backups first.<a name="line.249"></a>
 <span class="sourceLineNo">250</span>      JVMClusterUtil.MasterThread activeMaster = null;<a name="line.250"></a>
 <span class="sourceLineNo">251</span>      for (JVMClusterUtil.MasterThread t : masters) {<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        if (!t.master.isActiveMaster()) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          try {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>            t.master.stopMaster();<a name="line.254"></a>
-<span class="sourceLineNo">255</span>          } catch (IOException e) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>            LOG.error("Exception occurred while stopping master", e);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>          }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        } else {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>          activeMaster = t;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        }<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      // Do active after.<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      if (activeMaster != null) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        try {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          activeMaster.master.shutdown();<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        } catch (IOException e) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>          LOG.error("Exception occurred in HMaster.shutdown()", e);<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>    boolean wasInterrupted = false;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    final long maxTime = System.currentTimeMillis() + 30 * 1000;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    if (regionservers != null) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      // first try nicely.<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      for (RegionServerThread t : regionservers) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        t.getRegionServer().stop("Shutdown requested");<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      for (RegionServerThread t : regionservers) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        long now = System.currentTimeMillis();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        if (t.isAlive() &amp;&amp; !wasInterrupted &amp;&amp; now &lt; maxTime) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          try {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            t.join(maxTime - now);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          } catch (InterruptedException e) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>            LOG.info("Got InterruptedException on shutdown - " +<a name="line.284"></a>
-<span class="sourceLineNo">285</span>                "not waiting anymore on region server ends", e);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>            wasInterrupted = true; // someone wants us to speed up.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      }<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>      // Let's try to interrupt the remaining threads if any.<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      for (int i = 0; i &lt; 100; ++i) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        boolean atLeastOneLiveServer = false;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>        for (RegionServerThread t : regionservers) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>          if (t.isAlive()) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>            atLeastOneLiveServer = true;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            try {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>              LOG.warn("RegionServerThreads remaining, give one more chance before interrupting");<a name="line.298"></a>
-<span class="sourceLineNo">299</span>              t.join(1000);<a name="line.299"></a>
-<span class="sourceLineNo">300</span>            } catch (InterruptedException e) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>              wasInterrupted = true;<a name="line.301"></a>
-<span class="sourceLineNo">302</span>            }<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          }<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        if (!atLeastOneLiveServer) break;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        for (RegionServerThread t : regionservers) {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>          if (t.isAlive()) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>            LOG.warn("RegionServerThreads taking too long to stop, interrupting; thread dump "  +<a name="line.308"></a>
-<span class="sourceLineNo">309</span>              "if &gt; 3 attempts: i=" + i);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>            if (i &gt; 3) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>              Threads.printThreadInfo(System.out, "Thread dump " + t.getName());<a name="line.311"></a>
+<span class="sourceLineNo">252</span>        // Master was killed but could be still considered as active. Check first if it is stopped.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        if (!t.master.isStopped()) {<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          if (!t.master.isActiveMaster()) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>            try {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>              t.master.stopMaster();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>            } catch (IOException e) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>              LOG.error("Exception occurred while stopping master", e);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>            }<a name="line.259"></a>
+<span class="sourceLineNo">260</span>            LOG.info("Stopped backup Master {} is stopped: {}",<a name="line.260"></a>
+<span class="sourceLineNo">261</span>                t.master.hashCode(), t.master.isStopped());<a name="line.261"></a>
+<span class="sourceLineNo">262</span>          } else {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>            if (activeMaster != null) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>              LOG.warn("Found more than 1 active master, hash {}", activeMaster.master.hashCode());<a name="line.264"></a>
+<span class="sourceLineNo">265</span>            }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>            activeMaster = t;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>            LOG.debug("Found active master hash={}, stopped={}",<a name="line.267"></a>
+<span class="sourceLineNo">268</span>                t.master.hashCode(), t.master.isStopped());<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>      // Do active after.<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      if (activeMaster != null) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        try {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          activeMaster.master.shutdown();<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } catch (IOException e) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          LOG.error("Exception occurred in HMaster.shutdown()", e);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    boolean wasInterrupted = false;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    final long maxTime = System.currentTimeMillis() + 30 * 1000;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    if (regionservers != null) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      // first try nicely.<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      for (RegionServerThread t : regionservers) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        t.getRegionServer().stop("Shutdown requested");<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      }<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      for (RegionServerThread t : regionservers) {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        long now = System.currentTimeMillis();<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        if (t.isAlive() &amp;&amp; !wasInterrupted &amp;&amp; now &lt; maxTime) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          try {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>            t.join(maxTime - now);<a name="line.292"></a>
+<span class="sourceLineNo">293</span>          } catch (InterruptedException e) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            LOG.info("Got InterruptedException on shutdown - " +<a name="line.294"></a>
+<span class="sourceLineNo">295</span>                "not waiting anymore on region server ends", e);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>            wasInterrupted = true; // someone wants us to speed up.<a name="line.296"></a>
+<span class="sourceLineNo">297</span>          }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      }<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>      // Let's try to interrupt the remaining threads if any.<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      for (int i = 0; i &lt; 100; ++i) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        boolean atLeastOneLiveServer = false;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        for (RegionServerThread t : regionservers) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>          if (t.isAlive()) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>            atLeastOneLiveServer = true;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>            try {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>              LOG.warn("RegionServerThreads remaining, give one more chance before interrupting");<a name="line.308"></a>
+<span class="sourceLineNo">309</span>              t.join(1000);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>            } catch (InterruptedException e) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>              wasInterrupted = true;<a name="line.311"></a>
 <span class="sourceLineNo">312</span>            }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>            t.interrupt();<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          }<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    }<a name="line.317"></a>
-<span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>    if (masters != null) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      for (JVMClusterUtil.MasterThread t : masters) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        while (t.master.isAlive() &amp;&amp; !wasInterrupted) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>          try {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>            // The below has been replaced to debug sometime hangs on end of<a name="line.323"></a>
-<span class="sourceLineNo">324</span>            // tests.<a name="line.324"></a>
-<span class="sourceLineNo">325</span>            // this.master.join():<a name="line.325"></a>
-<span class="sourceLineNo">326</span>            Threads.threadDumpingIsAlive(t.master.getThread());<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          } catch(InterruptedException e) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>            LOG.info("Got InterruptedException on shutdown - " +<a name="line.328"></a>
-<span class="sourceLineNo">329</span>                "not waiting anymore on master ends", e);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>            wasInterrupted = true;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>          }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        }<a name="line.332"></a>
-<span class="sourceLineNo">333</span>      }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    LOG.info("Shutdown of " +<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      ((masters != null) ? masters.size() : "0") + " master(s) and " +<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      ((regionservers != null) ? regionservers.size() : "0") +<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      " regionserver(s) " + (wasInterrupted ? "interrupted" : "complete"));<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>    if (wasInterrupted){<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      Thread.currentThread().interrupt();<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    }<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>}<a name="line.344"></a>
+<span class="sourceLineNo">313</span>          }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        if (!atLeastOneLiveServer) break;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        for (RegionServerThread t : regionservers) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>          if (t.isAlive()) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>            LOG.warn("RegionServerThreads taking too long to stop, interrupting; thread dump "  +<a name="line.318"></a>
+<span class="sourceLineNo">319</span>              "if &gt; 3 attempts: i=" + i);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>            if (i &gt; 3) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>              Threads.printThreadInfo(System.out, "Thread dump " + t.getName());<a name="line.321"></a>
+<span class="sourceLineNo">322</span>            }<a name="line.322"></a>
+<span class="sourceLineNo">323</span>            t.interrupt();<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>    }<a name="line.327"></a>
+<span class="sourceLineNo">328</span><a name="line.328"></a>
+<span class="sourceLineNo">329</span>    if (masters != null) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      for (JVMClusterUtil.MasterThread t : masters) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        while (t.master.isAlive() &amp;&amp; !wasInterrupted) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          try {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>            // The below has been replaced to debug sometime hangs on end of<a name="line.333"></a>
+<span class="sourceLineNo">334</span>            // tests.<a name="line.334"></a>
+<span class="sourceLineNo">335</span>            // this.master.join():<a name="line.335"></a>
+<span class="sourceLineNo">336</span>            Threads.threadDumpingIsAlive(t.master.getThread());<a name="line.336"></a>
+<span class="sourceLineNo">337</span>          } catch(InterruptedException e) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>            LOG.info("Got InterruptedException on shutdown - " +<a name="line.338"></a>
+<span class="sourceLineNo">339</span>                "not waiting anymore on master ends", e);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>            wasInterrupted = true;<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          }<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    LOG.info("Shutdown of " +<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      ((masters != null) ? masters.size() : "0") + " master(s) and " +<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      ((regionservers != null) ? regionservers.size() : "0") +<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      " regionserver(s) " + (wasInterrupted ? "interrupted" : "complete"));<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>    if (wasInterrupted){<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      Thread.currentThread().interrupt();<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span>}<a name="line.354"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/downloads.html
----------------------------------------------------------------------
diff --git a/downloads.html b/downloads.html
index 4f81579..cd9bb40 100644
--- a/downloads.html
+++ b/downloads.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase Downloads</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -461,7 +461,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 76e652d..6537196 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -341,7 +341,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index f6c8c94..6f68997 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -421,7 +421,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index 9dea909..a5a4a99 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -301,7 +301,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 572dad5..ecffb87 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -351,7 +351,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 1030521..402896c 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -469,7 +469,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index ff47e6c..ba638e0 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -450,7 +450,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 2785cd0..4dcdd24 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -381,7 +381,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index c0033ff..0f33ac6 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -779,7 +779,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 5ab3541..b22451c 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -345,7 +345,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 7bfc490..8109c10 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -315,7 +315,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index fd845ec..a29a753 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -341,7 +341,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 511725b..e08887b 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -318,7 +318,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 161fa0a..fec9348 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 59e2ec3..b2a71e8 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -341,7 +341,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 


[19/26] hbase-site git commit: Published site at dfeab9f5c968625ac1c642c53c721eb5e81068c0.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html
index c62e029..36ceec7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.MasterServiceState.html
@@ -634,7 +634,7 @@
 <span class="sourceLineNo">626</span>    checkClosed();<a name="line.626"></a>
 <span class="sourceLineNo">627</span>    try {<a name="line.627"></a>
 <span class="sourceLineNo">628</span>      if (!isTableEnabled(tableName)) {<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        LOG.debug("Table " + tableName + " not enabled");<a name="line.629"></a>
+<span class="sourceLineNo">629</span>        LOG.debug("Table {} not enabled", tableName);<a name="line.629"></a>
 <span class="sourceLineNo">630</span>        return false;<a name="line.630"></a>
 <span class="sourceLineNo">631</span>      }<a name="line.631"></a>
 <span class="sourceLineNo">632</span>      List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; locations =<a name="line.632"></a>
@@ -645,1411 +645,1407 @@
 <span class="sourceLineNo">637</span>      for (Pair&lt;RegionInfo, ServerName&gt; pair : locations) {<a name="line.637"></a>
 <span class="sourceLineNo">638</span>        RegionInfo info = pair.getFirst();<a name="line.638"></a>
 <span class="sourceLineNo">639</span>        if (pair.getSecond() == null) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          if (LOG.isDebugEnabled()) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>            LOG.debug("Table " + tableName + " has not deployed region " + pair.getFirst()<a name="line.641"></a>
-<span class="sourceLineNo">642</span>                .getEncodedName());<a name="line.642"></a>
-<span class="sourceLineNo">643</span>          }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>          notDeployed++;<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        } else if (splitKeys != null<a name="line.645"></a>
-<span class="sourceLineNo">646</span>            &amp;&amp; !Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>          for (byte[] splitKey : splitKeys) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>            // Just check if the splitkey is available<a name="line.648"></a>
-<span class="sourceLineNo">649</span>            if (Bytes.equals(info.getStartKey(), splitKey)) {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>              regionCount++;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>              break;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>            }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          }<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        } else {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>          // Always empty start row should be counted<a name="line.655"></a>
-<span class="sourceLineNo">656</span>          regionCount++;<a name="line.656"></a>
-<span class="sourceLineNo">657</span>        }<a name="line.657"></a>
-<span class="sourceLineNo">658</span>      }<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      if (notDeployed &gt; 0) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        if (LOG.isDebugEnabled()) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>          LOG.debug("Table " + tableName + " has " + notDeployed + " regions");<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        return false;<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else if (splitKeys != null &amp;&amp; regionCount != splitKeys.length + 1) {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        if (LOG.isDebugEnabled()) {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>          LOG.debug("Table " + tableName + " expected to have " + (splitKeys.length + 1)<a name="line.666"></a>
-<span class="sourceLineNo">667</span>              + " regions, but only " + regionCount + " available");<a name="line.667"></a>
-<span class="sourceLineNo">668</span>        }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        return false;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      } else {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>        if (LOG.isDebugEnabled()) {<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          LOG.debug("Table " + tableName + " should be available");<a name="line.672"></a>
-<span class="sourceLineNo">673</span>        }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>        return true;<a name="line.674"></a>
-<span class="sourceLineNo">675</span>      }<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    } catch (TableNotFoundException tnfe) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>      LOG.warn("Table " + tableName + " not enabled, it is not exists");<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      return false;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    }<a name="line.679"></a>
-<span class="sourceLineNo">680</span>  }<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>  @Override<a name="line.682"></a>
-<span class="sourceLineNo">683</span>  public HRegionLocation locateRegion(final byte[] regionName) throws IOException {<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    RegionLocations locations = locateRegion(RegionInfo.getTable(regionName),<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      RegionInfo.getStartKey(regionName), false, true);<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    return locations == null ? null : locations.getRegionLocation();<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  }<a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>  private boolean isDeadServer(ServerName sn) {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    if (clusterStatusListener == null) {<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      return false;<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    } else {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      return clusterStatusListener.isDeadServer(sn);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    }<a name="line.694"></a>
-<span class="sourceLineNo">695</span>  }<a name="line.695"></a>
-<span class="sourceLineNo">696</span><a name="line.696"></a>
-<span class="sourceLineNo">697</span>  @Override<a name="line.697"></a>
-<span class="sourceLineNo">698</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName) throws IOException {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    return locateRegions(tableName, false, true);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  }<a name="line.700"></a>
-<span class="sourceLineNo">701</span><a name="line.701"></a>
-<span class="sourceLineNo">702</span>  @Override<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName, boolean useCache,<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      boolean offlined) throws IOException {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    List&lt;RegionInfo&gt; regions;<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.706"></a>
-<span class="sourceLineNo">707</span>      regions = Collections.singletonList(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    } else {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      regions = MetaTableAccessor.getTableRegions(this, tableName, !offlined);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    }<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;&gt;();<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    for (RegionInfo regionInfo : regions) {<a name="line.712"></a>
-<span class="sourceLineNo">713</span>      if (!RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.713"></a>
-<span class="sourceLineNo">714</span>        continue;<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      }<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      RegionLocations list = locateRegion(tableName, regionInfo.getStartKey(), useCache, true);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      if (list != null) {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>        for (HRegionLocation loc : list.getRegionLocations()) {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>          if (loc != null) {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>            locations.add(loc);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>          }<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        }<a name="line.722"></a>
-<span class="sourceLineNo">723</span>      }<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    }<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return locations;<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>  @Override<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public HRegionLocation locateRegion(final TableName tableName, final byte[] row)<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      throws IOException {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    RegionLocations locations = locateRegion(tableName, row, true, true);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    return locations == null ? null : locations.getRegionLocation();<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>  @Override<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  public HRegionLocation relocateRegion(final TableName tableName, final byte[] row)<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      throws IOException {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    RegionLocations locations =<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      relocateRegion(tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    return locations == null ? null<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      : locations.getRegionLocation(RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.741"></a>
-<span class="sourceLineNo">742</span>  }<a name="line.742"></a>
-<span class="sourceLineNo">743</span><a name="line.743"></a>
-<span class="sourceLineNo">744</span>  @Override<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public RegionLocations relocateRegion(final TableName tableName,<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      final byte [] row, int replicaId) throws IOException{<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    // Since this is an explicit request not to use any caching, finding<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    // disabled tables should not be desirable.  This will ensure that an exception is thrown when<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    // the first time a disabled table is interacted with.<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    if (!tableName.equals(TableName.META_TABLE_NAME) &amp;&amp; isTableDisabled(tableName)) {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>      throw new TableNotEnabledException(tableName.getNameAsString() + " is disabled.");<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    }<a name="line.752"></a>
-<span class="sourceLineNo">753</span><a name="line.753"></a>
-<span class="sourceLineNo">754</span>    return locateRegion(tableName, row, false, true, replicaId);<a name="line.754"></a>
-<span class="sourceLineNo">755</span>  }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>  @Override<a name="line.757"></a>
-<span class="sourceLineNo">758</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.758"></a>
-<span class="sourceLineNo">759</span>      boolean retry) throws IOException {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    return locateRegion(tableName, row, useCache, retry, RegionReplicaUtil.DEFAULT_REPLICA_ID);<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>  @Override<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      boolean retry, int replicaId) throws IOException {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    checkClosed();<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    if (tableName == null || tableName.getName().length == 0) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      throw new IllegalArgumentException("table name cannot be null or zero length");<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    }<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    if (tableName.equals(TableName.META_TABLE_NAME)) {<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      return locateMeta(tableName, useCache, replicaId);<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    } else {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      // Region not in the cache - have to go to the meta RS<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      return locateRegionInMeta(tableName, row, useCache, retry, replicaId);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    }<a name="line.775"></a>
-<span class="sourceLineNo">776</span>  }<a name="line.776"></a>
-<span class="sourceLineNo">777</span><a name="line.777"></a>
-<span class="sourceLineNo">778</span>  private RegionLocations locateMeta(final TableName tableName,<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      boolean useCache, int replicaId) throws IOException {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    // HBASE-10785: We cache the location of the META itself, so that we are not overloading<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // zookeeper with one request for every region lookup. We cache the META with empty row<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // key in MetaCache.<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    byte[] metaCacheKey = HConstants.EMPTY_START_ROW; // use byte[0] as the row for meta<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    RegionLocations locations = null;<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    if (useCache) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      locations = getCachedLocation(tableName, metaCacheKey);<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        return locations;<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      }<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
-<span class="sourceLineNo">791</span><a name="line.791"></a>
-<span class="sourceLineNo">792</span>    // only one thread should do the lookup.<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    synchronized (metaRegionLock) {<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      // Check the cache again for a hit in case some other thread made the<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      // same query while we were waiting on the lock.<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      if (useCache) {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>        locations = getCachedLocation(tableName, metaCacheKey);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>          return locations;<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>      // Look up from zookeeper<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      locations = get(this.registry.getMetaRegionLocation());<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      if (locations != null) {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>        cacheLocation(tableName, locations);<a name="line.806"></a>
-<span class="sourceLineNo">807</span>      }<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    }<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    return locations;<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  }<a name="line.810"></a>
-<span class="sourceLineNo">811</span><a name="line.811"></a>
-<span class="sourceLineNo">812</span>  /**<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * Search the hbase:meta table for the HRegionLocation info that contains the table and row we're<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * seeking.<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   */<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, boolean useCache,<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      boolean retry, int replicaId) throws IOException {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    // If we are supposed to be using the cache, look in the cache to see if we already have the<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    // region.<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    if (useCache) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      RegionLocations locations = getCachedLocation(tableName, row);<a name="line.821"></a>
-<span class="sourceLineNo">822</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>        return locations;<a name="line.823"></a>
-<span class="sourceLineNo">824</span>      }<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    }<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    // build the key of the meta region we should be looking for.<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    // the extra 9's on the end are necessary to allow "exact" matches<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    // without knowing the precise region names.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    byte[] metaStartKey = RegionInfo.createRegionName(tableName, row, HConstants.NINES, false);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    byte[] metaStopKey =<a name="line.830"></a>
-<span class="sourceLineNo">831</span>      RegionInfo.createRegionName(tableName, HConstants.EMPTY_START_ROW, "", false);<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    Scan s = new Scan().withStartRow(metaStartKey).withStopRow(metaStopKey, true)<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      .addFamily(HConstants.CATALOG_FAMILY).setReversed(true).setCaching(5)<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      .setReadType(ReadType.PREAD);<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    if (this.useMetaReplicas) {<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      s.setConsistency(Consistency.TIMELINE);<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    }<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    int maxAttempts = (retry ? numTries : 1);<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    boolean relocateMeta = false;<a name="line.839"></a>
-<span class="sourceLineNo">840</span>    for (int tries = 0; ; tries++) {<a name="line.840"></a>
-<span class="sourceLineNo">841</span>      if (tries &gt;= maxAttempts) {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>        throw new NoServerForRegionException("Unable to find region for "<a name="line.842"></a>
-<span class="sourceLineNo">843</span>            + Bytes.toStringBinary(row) + " in " + tableName + " after " + tries + " tries.");<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      }<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      if (useCache) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>        RegionLocations locations = getCachedLocation(tableName, row);<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.847"></a>
-<span class="sourceLineNo">848</span>          return locations;<a name="line.848"></a>
-<span class="sourceLineNo">849</span>        }<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      } else {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>        // If we are not supposed to be using the cache, delete any existing cached location<a name="line.851"></a>
-<span class="sourceLineNo">852</span>        // so it won't interfere.<a name="line.852"></a>
-<span class="sourceLineNo">853</span>        // We are only supposed to clean the cache for the specific replicaId<a name="line.853"></a>
-<span class="sourceLineNo">854</span>        metaCache.clearCache(tableName, row, replicaId);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      }<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      // Query the meta region<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      long pauseBase = this.pause;<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      userRegionLock.lock();<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      try {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>        if (useCache) {// re-check cache after get lock<a name="line.860"></a>
-<span class="sourceLineNo">861</span>          RegionLocations locations = getCachedLocation(tableName, row);<a name="line.861"></a>
-<span class="sourceLineNo">862</span>          if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.862"></a>
-<span class="sourceLineNo">863</span>            return locations;<a name="line.863"></a>
-<span class="sourceLineNo">864</span>          }<a name="line.864"></a>
+<span class="sourceLineNo">640</span>          LOG.debug("Table {} has not deployed region {}", tableName,<a name="line.640"></a>
+<span class="sourceLineNo">641</span>              pair.getFirst().getEncodedName());<a name="line.641"></a>
+<span class="sourceLineNo">642</span>          notDeployed++;<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        } else if (splitKeys != null<a name="line.643"></a>
+<span class="sourceLineNo">644</span>            &amp;&amp; !Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>          for (byte[] splitKey : splitKeys) {<a name="line.645"></a>
+<span class="sourceLineNo">646</span>            // Just check if the splitkey is available<a name="line.646"></a>
+<span class="sourceLineNo">647</span>            if (Bytes.equals(info.getStartKey(), splitKey)) {<a name="line.647"></a>
+<span class="sourceLineNo">648</span>              regionCount++;<a name="line.648"></a>
+<span class="sourceLineNo">649</span>              break;<a name="line.649"></a>
+<span class="sourceLineNo">650</span>            }<a name="line.650"></a>
+<span class="sourceLineNo">651</span>          }<a name="line.651"></a>
+<span class="sourceLineNo">652</span>        } else {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>          // Always empty start row should be counted<a name="line.653"></a>
+<span class="sourceLineNo">654</span>          regionCount++;<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        }<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      if (notDeployed &gt; 0) {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>        if (LOG.isDebugEnabled()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>          LOG.debug("Table {} has {} regions not deployed", tableName, notDeployed);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        }<a name="line.660"></a>
+<span class="sourceLineNo">661</span>        return false;<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      } else if (splitKeys != null &amp;&amp; regionCount != splitKeys.length + 1) {<a name="line.662"></a>
+<span class="sourceLineNo">663</span>        if (LOG.isDebugEnabled()) {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>          LOG.debug("Table {} expected to have {} regions, but only {} available", tableName,<a name="line.664"></a>
+<span class="sourceLineNo">665</span>              splitKeys.length + 1, regionCount);<a name="line.665"></a>
+<span class="sourceLineNo">666</span>        }<a name="line.666"></a>
+<span class="sourceLineNo">667</span>        return false;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>      } else {<a name="line.668"></a>
+<span class="sourceLineNo">669</span>        LOG.trace("Table {} should be available", tableName);<a name="line.669"></a>
+<span class="sourceLineNo">670</span>        return true;<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    } catch (TableNotFoundException tnfe) {<a name="line.672"></a>
+<span class="sourceLineNo">673</span>      LOG.warn("Table {} does not exist", tableName);<a name="line.673"></a>
+<span class="sourceLineNo">674</span>      return false;<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
+<span class="sourceLineNo">676</span>  }<a name="line.676"></a>
+<span class="sourceLineNo">677</span><a name="line.677"></a>
+<span class="sourceLineNo">678</span>  @Override<a name="line.678"></a>
+<span class="sourceLineNo">679</span>  public HRegionLocation locateRegion(final byte[] regionName) throws IOException {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    RegionLocations locations = locateRegion(RegionInfo.getTable(regionName),<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      RegionInfo.getStartKey(regionName), false, true);<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    return locations == null ? null : locations.getRegionLocation();<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>  private boolean isDeadServer(ServerName sn) {<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    if (clusterStatusListener == null) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>      return false;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    } else {<a name="line.688"></a>
+<span class="sourceLineNo">689</span>      return clusterStatusListener.isDeadServer(sn);<a name="line.689"></a>
+<span class="sourceLineNo">690</span>    }<a name="line.690"></a>
+<span class="sourceLineNo">691</span>  }<a name="line.691"></a>
+<span class="sourceLineNo">692</span><a name="line.692"></a>
+<span class="sourceLineNo">693</span>  @Override<a name="line.693"></a>
+<span class="sourceLineNo">694</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName) throws IOException {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    return locateRegions(tableName, false, true);<a name="line.695"></a>
+<span class="sourceLineNo">696</span>  }<a name="line.696"></a>
+<span class="sourceLineNo">697</span><a name="line.697"></a>
+<span class="sourceLineNo">698</span>  @Override<a name="line.698"></a>
+<span class="sourceLineNo">699</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName, boolean useCache,<a name="line.699"></a>
+<span class="sourceLineNo">700</span>      boolean offlined) throws IOException {<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    List&lt;RegionInfo&gt; regions;<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      regions = Collections.singletonList(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    } else {<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      regions = MetaTableAccessor.getTableRegions(this, tableName, !offlined);<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    }<a name="line.706"></a>
+<span class="sourceLineNo">707</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;&gt;();<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    for (RegionInfo regionInfo : regions) {<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      if (!RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>        continue;<a name="line.710"></a>
+<span class="sourceLineNo">711</span>      }<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      RegionLocations list = locateRegion(tableName, regionInfo.getStartKey(), useCache, true);<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      if (list != null) {<a name="line.713"></a>
+<span class="sourceLineNo">714</span>        for (HRegionLocation loc : list.getRegionLocations()) {<a name="line.714"></a>
+<span class="sourceLineNo">715</span>          if (loc != null) {<a name="line.715"></a>
+<span class="sourceLineNo">716</span>            locations.add(loc);<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>      }<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    }<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    return locations;<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">723</span><a name="line.723"></a>
+<span class="sourceLineNo">724</span>  @Override<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  public HRegionLocation locateRegion(final TableName tableName, final byte[] row)<a name="line.725"></a>
+<span class="sourceLineNo">726</span>      throws IOException {<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    RegionLocations locations = locateRegion(tableName, row, true, true);<a name="line.727"></a>
+<span class="sourceLineNo">728</span>    return locations == null ? null : locations.getRegionLocation();<a name="line.728"></a>
+<span class="sourceLineNo">729</span>  }<a name="line.729"></a>
+<span class="sourceLineNo">730</span><a name="line.730"></a>
+<span class="sourceLineNo">731</span>  @Override<a name="line.731"></a>
+<span class="sourceLineNo">732</span>  public HRegionLocation relocateRegion(final TableName tableName, final byte[] row)<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      throws IOException {<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    RegionLocations locations =<a name="line.734"></a>
+<span class="sourceLineNo">735</span>      relocateRegion(tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    return locations == null ? null<a name="line.736"></a>
+<span class="sourceLineNo">737</span>      : locations.getRegionLocation(RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>  }<a name="line.738"></a>
+<span class="sourceLineNo">739</span><a name="line.739"></a>
+<span class="sourceLineNo">740</span>  @Override<a name="line.740"></a>
+<span class="sourceLineNo">741</span>  public RegionLocations relocateRegion(final TableName tableName,<a name="line.741"></a>
+<span class="sourceLineNo">742</span>      final byte [] row, int replicaId) throws IOException{<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    // Since this is an explicit request not to use any caching, finding<a name="line.743"></a>
+<span class="sourceLineNo">744</span>    // disabled tables should not be desirable.  This will ensure that an exception is thrown when<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    // the first time a disabled table is interacted with.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    if (!tableName.equals(TableName.META_TABLE_NAME) &amp;&amp; isTableDisabled(tableName)) {<a name="line.746"></a>
+<span class="sourceLineNo">747</span>      throw new TableNotEnabledException(tableName.getNameAsString() + " is disabled.");<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    }<a name="line.748"></a>
+<span class="sourceLineNo">749</span><a name="line.749"></a>
+<span class="sourceLineNo">750</span>    return locateRegion(tableName, row, false, true, replicaId);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>  }<a name="line.751"></a>
+<span class="sourceLineNo">752</span><a name="line.752"></a>
+<span class="sourceLineNo">753</span>  @Override<a name="line.753"></a>
+<span class="sourceLineNo">754</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      boolean retry) throws IOException {<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    return locateRegion(tableName, row, useCache, retry, RegionReplicaUtil.DEFAULT_REPLICA_ID);<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>  @Override<a name="line.759"></a>
+<span class="sourceLineNo">760</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      boolean retry, int replicaId) throws IOException {<a name="line.761"></a>
+<span class="sourceLineNo">762</span>    checkClosed();<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    if (tableName == null || tableName.getName().length == 0) {<a name="line.763"></a>
+<span class="sourceLineNo">764</span>      throw new IllegalArgumentException("table name cannot be null or zero length");<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    }<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    if (tableName.equals(TableName.META_TABLE_NAME)) {<a name="line.766"></a>
+<span class="sourceLineNo">767</span>      return locateMeta(tableName, useCache, replicaId);<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    } else {<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      // Region not in the cache - have to go to the meta RS<a name="line.769"></a>
+<span class="sourceLineNo">770</span>      return locateRegionInMeta(tableName, row, useCache, retry, replicaId);<a name="line.770"></a>
+<span class="sourceLineNo">771</span>    }<a name="line.771"></a>
+<span class="sourceLineNo">772</span>  }<a name="line.772"></a>
+<span class="sourceLineNo">773</span><a name="line.773"></a>
+<span class="sourceLineNo">774</span>  private RegionLocations locateMeta(final TableName tableName,<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      boolean useCache, int replicaId) throws IOException {<a name="line.775"></a>
+<span class="sourceLineNo">776</span>    // HBASE-10785: We cache the location of the META itself, so that we are not overloading<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    // zookeeper with one request for every region lookup. We cache the META with empty row<a name="line.777"></a>
+<span class="sourceLineNo">778</span>    // key in MetaCache.<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    byte[] metaCacheKey = HConstants.EMPTY_START_ROW; // use byte[0] as the row for meta<a name="line.779"></a>
+<span class="sourceLineNo">780</span>    RegionLocations locations = null;<a name="line.780"></a>
+<span class="sourceLineNo">781</span>    if (useCache) {<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      locations = getCachedLocation(tableName, metaCacheKey);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.783"></a>
+<span class="sourceLineNo">784</span>        return locations;<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>    // only one thread should do the lookup.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>    synchronized (metaRegionLock) {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>      // Check the cache again for a hit in case some other thread made the<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      // same query while we were waiting on the lock.<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      if (useCache) {<a name="line.792"></a>
+<span class="sourceLineNo">793</span>        locations = getCachedLocation(tableName, metaCacheKey);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.794"></a>
+<span class="sourceLineNo">795</span>          return locations;<a name="line.795"></a>
+<span class="sourceLineNo">796</span>        }<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      }<a name="line.797"></a>
+<span class="sourceLineNo">798</span><a name="line.798"></a>
+<span class="sourceLineNo">799</span>      // Look up from zookeeper<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      locations = get(this.registry.getMetaRegionLocation());<a name="line.800"></a>
+<span class="sourceLineNo">801</span>      if (locations != null) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span>        cacheLocation(tableName, locations);<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>    return locations;<a name="line.805"></a>
+<span class="sourceLineNo">806</span>  }<a name="line.806"></a>
+<span class="sourceLineNo">807</span><a name="line.807"></a>
+<span class="sourceLineNo">808</span>  /**<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   * Search the hbase:meta table for the HRegionLocation info that contains the table and row we're<a name="line.809"></a>
+<span class="sourceLineNo">810</span>   * seeking.<a name="line.810"></a>
+<span class="sourceLineNo">811</span>   */<a name="line.811"></a>
+<span class="sourceLineNo">812</span>  private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, boolean useCache,<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      boolean retry, int replicaId) throws IOException {<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    // If we are supposed to be using the cache, look in the cache to see if we already have the<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    // region.<a name="line.815"></a>
+<span class="sourceLineNo">816</span>    if (useCache) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>      RegionLocations locations = getCachedLocation(tableName, row);<a name="line.817"></a>
+<span class="sourceLineNo">818</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>        return locations;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    }<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    // build the key of the meta region we should be looking for.<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    // the extra 9's on the end are necessary to allow "exact" matches<a name="line.823"></a>
+<span class="sourceLineNo">824</span>    // without knowing the precise region names.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    byte[] metaStartKey = RegionInfo.createRegionName(tableName, row, HConstants.NINES, false);<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    byte[] metaStopKey =<a name="line.826"></a>
+<span class="sourceLineNo">827</span>      RegionInfo.createRegionName(tableName, HConstants.EMPTY_START_ROW, "", false);<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    Scan s = new Scan().withStartRow(metaStartKey).withStopRow(metaStopKey, true)<a name="line.828"></a>
+<span class="sourceLineNo">829</span>      .addFamily(HConstants.CATALOG_FAMILY).setReversed(true).setCaching(5)<a name="line.829"></a>
+<span class="sourceLineNo">830</span>      .setReadType(ReadType.PREAD);<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    if (this.useMetaReplicas) {<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      s.setConsistency(Consistency.TIMELINE);<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    }<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    int maxAttempts = (retry ? numTries : 1);<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    boolean relocateMeta = false;<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    for (int tries = 0; ; tries++) {<a name="line.836"></a>
+<span class="sourceLineNo">837</span>      if (tries &gt;= maxAttempts) {<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        throw new NoServerForRegionException("Unable to find region for "<a name="line.838"></a>
+<span class="sourceLineNo">839</span>            + Bytes.toStringBinary(row) + " in " + tableName + " after " + tries + " tries.");<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      }<a name="line.840"></a>
+<span class="sourceLineNo">841</span>      if (useCache) {<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        RegionLocations locations = getCachedLocation(tableName, row);<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.843"></a>
+<span class="sourceLineNo">844</span>          return locations;<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        }<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      } else {<a name="line.846"></a>
+<span class="sourceLineNo">847</span>        // If we are not supposed to be using the cache, delete any existing cached location<a name="line.847"></a>
+<span class="sourceLineNo">848</span>        // so it won't interfere.<a name="line.848"></a>
+<span class="sourceLineNo">849</span>        // We are only supposed to clean the cache for the specific replicaId<a name="line.849"></a>
+<span class="sourceLineNo">850</span>        metaCache.clearCache(tableName, row, replicaId);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
+<span class="sourceLineNo">852</span>      // Query the meta region<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      long pauseBase = this.pause;<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      userRegionLock.lock();<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      try {<a name="line.855"></a>
+<span class="sourceLineNo">856</span>        if (useCache) {// re-check cache after get lock<a name="line.856"></a>
+<span class="sourceLineNo">857</span>          RegionLocations locations = getCachedLocation(tableName, row);<a name="line.857"></a>
+<span class="sourceLineNo">858</span>          if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.858"></a>
+<span class="sourceLineNo">859</span>            return locations;<a name="line.859"></a>
+<span class="sourceLineNo">860</span>          }<a name="line.860"></a>
+<span class="sourceLineNo">861</span>        }<a name="line.861"></a>
+<span class="sourceLineNo">862</span>        if (relocateMeta) {<a name="line.862"></a>
+<span class="sourceLineNo">863</span>          relocateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.863"></a>
+<span class="sourceLineNo">864</span>            RegionInfo.DEFAULT_REPLICA_ID);<a name="line.864"></a>
 <span class="sourceLineNo">865</span>        }<a name="line.865"></a>
-<span class="sourceLineNo">866</span>        if (relocateMeta) {<a name="line.866"></a>
-<span class="sourceLineNo">867</span>          relocateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.867"></a>
-<span class="sourceLineNo">868</span>            RegionInfo.DEFAULT_REPLICA_ID);<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>        s.resetMvccReadPoint();<a name="line.870"></a>
-<span class="sourceLineNo">871</span>        try (ReversedClientScanner rcs =<a name="line.871"></a>
-<span class="sourceLineNo">872</span>          new ReversedClientScanner(conf, s, TableName.META_TABLE_NAME, this, rpcCallerFactory,<a name="line.872"></a>
-<span class="sourceLineNo">873</span>            rpcControllerFactory, getMetaLookupPool(), metaReplicaCallTimeoutScanInMicroSecond)) {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>          boolean tableNotFound = true;<a name="line.874"></a>
-<span class="sourceLineNo">875</span>          for (;;) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>            Result regionInfoRow = rcs.next();<a name="line.876"></a>
-<span class="sourceLineNo">877</span>            if (regionInfoRow == null) {<a name="line.877"></a>
-<span class="sourceLineNo">878</span>              if (tableNotFound) {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>                throw new TableNotFoundException(tableName);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>              } else {<a name="line.880"></a>
-<span class="sourceLineNo">881</span>                throw new IOException(<a name="line.881"></a>
-<span class="sourceLineNo">882</span>                  "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>              }<a name="line.883"></a>
-<span class="sourceLineNo">884</span>            }<a name="line.884"></a>
-<span class="sourceLineNo">885</span>            tableNotFound = false;<a name="line.885"></a>
-<span class="sourceLineNo">886</span>            // convert the row result into the HRegionLocation we need!<a name="line.886"></a>
-<span class="sourceLineNo">887</span>            RegionLocations locations = MetaTableAccessor.getRegionLocations(regionInfoRow);<a name="line.887"></a>
-<span class="sourceLineNo">888</span>            if (locations == null || locations.getRegionLocation(replicaId) == null) {<a name="line.888"></a>
-<span class="sourceLineNo">889</span>              throw new IOException("RegionInfo null in " + tableName + ", row=" + regionInfoRow);<a name="line.889"></a>
-<span class="sourceLineNo">890</span>            }<a name="line.890"></a>
-<span class="sourceLineNo">891</span>            RegionInfo regionInfo = locations.getRegionLocation(replicaId).getRegion();<a name="line.891"></a>
-<span class="sourceLineNo">892</span>            if (regionInfo == null) {<a name="line.892"></a>
-<span class="sourceLineNo">893</span>              throw new IOException("RegionInfo null or empty in " + TableName.META_TABLE_NAME +<a name="line.893"></a>
-<span class="sourceLineNo">894</span>                ", row=" + regionInfoRow);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>            }<a name="line.895"></a>
-<span class="sourceLineNo">896</span>            // See HBASE-20182. It is possible that we locate to a split parent even after the<a name="line.896"></a>
-<span class="sourceLineNo">897</span>            // children are online, so here we need to skip this region and go to the next one.<a name="line.897"></a>
-<span class="sourceLineNo">898</span>            if (regionInfo.isSplitParent()) {<a name="line.898"></a>
-<span class="sourceLineNo">899</span>              continue;<a name="line.899"></a>
+<span class="sourceLineNo">866</span>        s.resetMvccReadPoint();<a name="line.866"></a>
+<span class="sourceLineNo">867</span>        try (ReversedClientScanner rcs =<a name="line.867"></a>
+<span class="sourceLineNo">868</span>          new ReversedClientScanner(conf, s, TableName.META_TABLE_NAME, this, rpcCallerFactory,<a name="line.868"></a>
+<span class="sourceLineNo">869</span>            rpcControllerFactory, getMetaLookupPool(), metaReplicaCallTimeoutScanInMicroSecond)) {<a name="line.869"></a>
+<span class="sourceLineNo">870</span>          boolean tableNotFound = true;<a name="line.870"></a>
+<span class="sourceLineNo">871</span>          for (;;) {<a name="line.871"></a>
+<span class="sourceLineNo">872</span>            Result regionInfoRow = rcs.next();<a name="line.872"></a>
+<span class="sourceLineNo">873</span>            if (regionInfoRow == null) {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>              if (tableNotFound) {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>                throw new TableNotFoundException(tableName);<a name="line.875"></a>
+<span class="sourceLineNo">876</span>              } else {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>                throw new IOException(<a name="line.877"></a>
+<span class="sourceLineNo">878</span>                  "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.878"></a>
+<span class="sourceLineNo">879</span>              }<a name="line.879"></a>
+<span class="sourceLineNo">880</span>            }<a name="line.880"></a>
+<span class="sourceLineNo">881</span>            tableNotFound = false;<a name="line.881"></a>
+<span class="sourceLineNo">882</span>            // convert the row result into the HRegionLocation we need!<a name="line.882"></a>
+<span class="sourceLineNo">883</span>            RegionLocations locations = MetaTableAccessor.getRegionLocations(regionInfoRow);<a name="line.883"></a>
+<span class="sourceLineNo">884</span>            if (locations == null || locations.getRegionLocation(replicaId) == null) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>              throw new IOException("RegionInfo null in " + tableName + ", row=" + regionInfoRow);<a name="line.885"></a>
+<span class="sourceLineNo">886</span>            }<a name="line.886"></a>
+<span class="sourceLineNo">887</span>            RegionInfo regionInfo = locations.getRegionLocation(replicaId).getRegion();<a name="line.887"></a>
+<span class="sourceLineNo">888</span>            if (regionInfo == null) {<a name="line.888"></a>
+<span class="sourceLineNo">889</span>              throw new IOException("RegionInfo null or empty in " + TableName.META_TABLE_NAME +<a name="line.889"></a>
+<span class="sourceLineNo">890</span>                ", row=" + regionInfoRow);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>            }<a name="line.891"></a>
+<span class="sourceLineNo">892</span>            // See HBASE-20182. It is possible that we locate to a split parent even after the<a name="line.892"></a>
+<span class="sourceLineNo">893</span>            // children are online, so here we need to skip this region and go to the next one.<a name="line.893"></a>
+<span class="sourceLineNo">894</span>            if (regionInfo.isSplitParent()) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>              continue;<a name="line.895"></a>
+<span class="sourceLineNo">896</span>            }<a name="line.896"></a>
+<span class="sourceLineNo">897</span>            if (regionInfo.isOffline()) {<a name="line.897"></a>
+<span class="sourceLineNo">898</span>              throw new RegionOfflineException("Region offline; disable table call? " +<a name="line.898"></a>
+<span class="sourceLineNo">899</span>                  regionInfo.getRegionNameAsString());<a name="line.899"></a>
 <span class="sourceLineNo">900</span>            }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>            if (regionInfo.isOffline()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>              throw new RegionOfflineException("Region offline; disable table call? " +<a name="line.902"></a>
-<span class="sourceLineNo">903</span>                  regionInfo.getRegionNameAsString());<a name="line.903"></a>
-<span class="sourceLineNo">904</span>            }<a name="line.904"></a>
-<span class="sourceLineNo">905</span>            // It is possible that the split children have not been online yet and we have skipped<a name="line.905"></a>
-<span class="sourceLineNo">906</span>            // the parent in the above condition, so we may have already reached a region which does<a name="line.906"></a>
-<span class="sourceLineNo">907</span>            // not contains us.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>            if (!regionInfo.containsRow(row)) {<a name="line.908"></a>
-<span class="sourceLineNo">909</span>              throw new IOException(<a name="line.909"></a>
-<span class="sourceLineNo">910</span>                "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.910"></a>
-<span class="sourceLineNo">911</span>            }<a name="line.911"></a>
-<span class="sourceLineNo">912</span>            ServerName serverName = locations.getRegionLocation(replicaId).getServerName();<a name="line.912"></a>
-<span class="sourceLineNo">913</span>            if (serverName == null) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>              throw new NoServerForRegionException("No server address listed in " +<a name="line.914"></a>
-<span class="sourceLineNo">915</span>                TableName.META_TABLE_NAME + " for region " + regionInfo.getRegionNameAsString() +<a name="line.915"></a>
-<span class="sourceLineNo">916</span>                " containing row " + Bytes.toStringBinary(row));<a name="line.916"></a>
-<span class="sourceLineNo">917</span>            }<a name="line.917"></a>
-<span class="sourceLineNo">918</span>            if (isDeadServer(serverName)) {<a name="line.918"></a>
-<span class="sourceLineNo">919</span>              throw new RegionServerStoppedException(<a name="line.919"></a>
-<span class="sourceLineNo">920</span>                "hbase:meta says the region " + regionInfo.getRegionNameAsString() +<a name="line.920"></a>
-<span class="sourceLineNo">921</span>                  " is managed by the server " + serverName + ", but it is dead.");<a name="line.921"></a>
-<span class="sourceLineNo">922</span>            }<a name="line.922"></a>
-<span class="sourceLineNo">923</span>            // Instantiate the location<a name="line.923"></a>
-<span class="sourceLineNo">924</span>            cacheLocation(tableName, locations);<a name="line.924"></a>
-<span class="sourceLineNo">925</span>            return locations;<a name="line.925"></a>
-<span class="sourceLineNo">926</span>          }<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        }<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      } catch (TableNotFoundException e) {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>        // if we got this error, probably means the table just plain doesn't<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // exist. rethrow the error immediately. this should always be coming<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        // from the HTable constructor.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>        throw e;<a name="line.932"></a>
-<span class="sourceLineNo">933</span>      } catch (IOException e) {<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        ExceptionUtil.rethrowIfInterrupt(e);<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        if (e instanceof RemoteException) {<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          e = ((RemoteException)e).unwrapRemoteException();<a name="line.936"></a>
+<span class="sourceLineNo">901</span>            // It is possible that the split children have not been online yet and we have skipped<a name="line.901"></a>
+<span class="sourceLineNo">902</span>            // the parent in the above condition, so we may have already reached a region which does<a name="line.902"></a>
+<span class="sourceLineNo">903</span>            // not contains us.<a name="line.903"></a>
+<span class="sourceLineNo">904</span>            if (!regionInfo.containsRow(row)) {<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              throw new IOException(<a name="line.905"></a>
+<span class="sourceLineNo">906</span>                "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.906"></a>
+<span class="sourceLineNo">907</span>            }<a name="line.907"></a>
+<span class="sourceLineNo">908</span>            ServerName serverName = locations.getRegionLocation(replicaId).getServerName();<a name="line.908"></a>
+<span class="sourceLineNo">909</span>            if (serverName == null) {<a name="line.909"></a>
+<span class="sourceLineNo">910</span>              throw new NoServerForRegionException("No server address listed in " +<a name="line.910"></a>
+<span class="sourceLineNo">911</span>                TableName.META_TABLE_NAME + " for region " + regionInfo.getRegionNameAsString() +<a name="line.911"></a>
+<span class="sourceLineNo">912</span>                " containing row " + Bytes.toStringBinary(row));<a name="line.912"></a>
+<span class="sourceLineNo">913</span>            }<a name="line.913"></a>
+<span class="sourceLineNo">914</span>            if (isDeadServer(serverName)) {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>              throw new RegionServerStoppedException(<a name="line.915"></a>
+<span class="sourceLineNo">916</span>                "hbase:meta says the region " + regionInfo.getRegionNameAsString() +<a name="line.916"></a>
+<span class="sourceLineNo">917</span>                  " is managed by the server " + serverName + ", but it is dead.");<a name="line.917"></a>
+<span class="sourceLineNo">918</span>            }<a name="line.918"></a>
+<span class="sourceLineNo">919</span>            // Instantiate the location<a name="line.919"></a>
+<span class="sourceLineNo">920</span>            cacheLocation(tableName, locations);<a name="line.920"></a>
+<span class="sourceLineNo">921</span>            return locations;<a name="line.921"></a>
+<span class="sourceLineNo">922</span>          }<a name="line.922"></a>
+<span class="sourceLineNo">923</span>        }<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      } catch (TableNotFoundException e) {<a name="line.924"></a>
+<span class="sourceLineNo">925</span>        // if we got this error, probably means the table just plain doesn't<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        // exist. rethrow the error immediately. this should always be coming<a name="line.926"></a>
+<span class="sourceLineNo">927</span>        // from the HTable constructor.<a name="line.927"></a>
+<span class="sourceLineNo">928</span>        throw e;<a name="line.928"></a>
+<span class="sourceLineNo">929</span>      } catch (IOException e) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>        ExceptionUtil.rethrowIfInterrupt(e);<a name="line.930"></a>
+<span class="sourceLineNo">931</span>        if (e instanceof RemoteException) {<a name="line.931"></a>
+<span class="sourceLineNo">932</span>          e = ((RemoteException)e).unwrapRemoteException();<a name="line.932"></a>
+<span class="sourceLineNo">933</span>        }<a name="line.933"></a>
+<span class="sourceLineNo">934</span>        if (e instanceof CallQueueTooBigException) {<a name="line.934"></a>
+<span class="sourceLineNo">935</span>          // Give a special check on CallQueueTooBigException, see #HBASE-17114<a name="line.935"></a>
+<span class="sourceLineNo">936</span>          pauseBase = this.pauseForCQTBE;<a name="line.936"></a>
 <span class="sourceLineNo">937</span>        }<a name="line.937"></a>
-<span class="sourceLineNo">938</span>        if (e instanceof CallQueueTooBigException) {<a name="line.938"></a>
-<span class="sourceLineNo">939</span>          // Give a special check on CallQueueTooBigException, see #HBASE-17114<a name="line.939"></a>
-<span class="sourceLineNo">940</span>          pauseBase = this.pauseForCQTBE;<a name="line.940"></a>
-<span class="sourceLineNo">941</span>        }<a name="line.941"></a>
-<span class="sourceLineNo">942</span>        if (tries &lt; maxAttempts - 1) {<a name="line.942"></a>
-<span class="sourceLineNo">943</span>          LOG.debug("locateRegionInMeta parentTable='{}', attempt={} of {} failed; retrying " +<a name="line.943"></a>
-<span class="sourceLineNo">944</span>            "after sleep of {}", TableName.META_TABLE_NAME, tries, maxAttempts, maxAttempts, e);<a name="line.944"></a>
-<span class="sourceLineNo">945</span>        } else {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>          throw e;<a name="line.946"></a>
-<span class="sourceLineNo">947</span>        }<a name="line.947"></a>
-<span class="sourceLineNo">948</span>        // Only relocate the parent region if necessary<a name="line.948"></a>
-<span class="sourceLineNo">949</span>        relocateMeta =<a name="line.949"></a>
-<span class="sourceLineNo">950</span>          !(e instanceof RegionOfflineException || e instanceof NoServerForRegionException);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>      } finally {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>        userRegionLock.unlock();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      try{<a name="line.954"></a>
-<span class="sourceLineNo">955</span>        Thread.sleep(ConnectionUtils.getPauseTime(pauseBase, tries));<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      } catch (InterruptedException e) {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>        throw new InterruptedIOException("Giving up trying to location region in " +<a name="line.957"></a>
-<span class="sourceLineNo">958</span>          "meta: thread is interrupted.");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span>    }<a name="line.960"></a>
-<span class="sourceLineNo">961</span>  }<a name="line.961"></a>
-<span class="sourceLineNo">962</span><a name="line.962"></a>
-<span class="sourceLineNo">963</span>  /**<a name="line.963"></a>
-<span class="sourceLineNo">964</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.964"></a>
-<span class="sourceLineNo">965</span>   * @param tableName The table name.<a name="line.965"></a>
-<span class="sourceLineNo">966</span>   * @param location the new location<a name="line.966"></a>
-<span class="sourceLineNo">967</span>   */<a name="line.967"></a>
-<span class="sourceLineNo">968</span>  @Override<a name="line.968"></a>
-<span class="sourceLineNo">969</span>  public void cacheLocation(final TableName tableName, final RegionLocations location) {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    metaCache.cacheLocation(tableName, location);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Search the cache for a location that fits our table and row key.<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * Return null if no suitable region is located.<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return Null or region location found in cache.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  RegionLocations getCachedLocation(final TableName tableName,<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      final byte [] row) {<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    return metaCache.getCachedLocation(tableName, row);<a name="line.980"></a>
+<span class="sourceLineNo">938</span>        if (tries &lt; maxAttempts - 1) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>          LOG.debug("locateRegionInMeta parentTable='{}', attempt={} of {} failed; retrying " +<a name="line.939"></a>
+<span class="sourceLineNo">940</span>            "after sleep of {}", TableName.META_TABLE_NAME, tries, maxAttempts, maxAttempts, e);<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        } else {<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          throw e;<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        }<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Only relocate the parent region if necessary<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        relocateMeta =<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          !(e instanceof RegionOfflineException || e instanceof NoServerForRegionException);<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      } finally {<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        userRegionLock.unlock();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      }<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try{<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        Thread.sleep(ConnectionUtils.getPauseTime(pauseBase, tries));<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (InterruptedException e) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        throw new InterruptedIOException("Giving up trying to location region in " +<a name="line.953"></a>
+<span class="sourceLineNo">954</span>          "meta: thread is interrupted.");<a name="line.954"></a>
+<span class="sourceLineNo">955</span>      }<a name="line.955"></a>
+<span class="sourceLineNo">956</span>    }<a name="line.956"></a>
+<span class="sourceLineNo">957</span>  }<a name="line.957"></a>
+<span class="sourceLineNo">958</span><a name="line.958"></a>
+<span class="sourceLineNo">959</span>  /**<a name="line.959"></a>
+<span class="sourceLineNo">960</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.960"></a>
+<span class="sourceLineNo">961</span>   * @param tableName The table name.<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   * @param location the new location<a name="line.962"></a>
+<span class="sourceLineNo">963</span>   */<a name="line.963"></a>
+<span class="sourceLineNo">964</span>  @Override<a name="line.964"></a>
+<span class="sourceLineNo">965</span>  public void cacheLocation(final TableName tableName, final RegionLocations location) {<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    metaCache.cacheLocation(tableName, location);<a name="line.966"></a>
+<span class="sourceLineNo">967</span>  }<a name="line.967"></a>
+<span class="sourceLineNo">968</span><a name="line.968"></a>
+<span class="sourceLineNo">969</span>  /**<a name="line.969"></a>
+<span class="sourceLineNo">970</span>   * Search the cache for a location that fits our table and row key.<a name="line.970"></a>
+<span class="sourceLineNo">971</span>   * Return null if no suitable region is located.<a name="line.971"></a>
+<span class="sourceLineNo">972</span>   * @return Null or region location found in cache.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>   */<a name="line.973"></a>
+<span class="sourceLineNo">974</span>  RegionLocations getCachedLocation(final TableName tableName,<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      final byte [] row) {<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    return metaCache.getCachedLocation(tableName, row);<a name="line.976"></a>
+<span class="sourceLineNo">977</span>  }<a name="line.977"></a>
+<span class="sourceLineNo">978</span><a name="line.978"></a>
+<span class="sourceLineNo">979</span>  public void clearRegionCache(final TableName tableName, byte[] row) {<a name="line.979"></a>
+<span class="sourceLineNo">980</span>    metaCache.clearCache(tableName, row);<a name="line.980"></a>
 <span class="sourceLineNo">981</span>  }<a name="line.981"></a>
 <span class="sourceLineNo">982</span><a name="line.982"></a>
-<span class="sourceLineNo">983</span>  public void clearRegionCache(final TableName tableName, byte[] row) {<a name="line.983"></a>
-<span class="sourceLineNo">984</span>    metaCache.clearCache(tableName, row);<a name="line.984"></a>
-<span class="sourceLineNo">985</span>  }<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>  /*<a name="line.987"></a>
-<span class="sourceLineNo">988</span>   * Delete all cached entries of a table that maps to a specific location.<a name="line.988"></a>
-<span class="sourceLineNo">989</span>   */<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  @Override<a name="line.990"></a>
-<span class="sourceLineNo">991</span>  public void clearCaches(final ServerName serverName) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    metaCache.clearCache(serverName);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>  }<a name="line.993"></a>
-<span class="sourceLineNo">994</span><a name="line.994"></a>
-<span class="sourceLineNo">995</span>  @Override<a name="line.995"></a>
-<span class="sourceLineNo">996</span>  public void clearRegionCache() {<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    metaCache.clearCache();<a name="line.997"></a>
-<span class="sourceLineNo">998</span>  }<a name="line.998"></a>
-<span class="sourceLineNo">999</span><a name="line.999"></a>
-<span class="sourceLineNo">1000</span>  @Override<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public void clearRegionCache(final TableName tableName) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    metaCache.clearCache(tableName);<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  }<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span><a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>  /**<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   * @param tableName The table name.<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   * @param source the source of the new location, if it's not coming from meta<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>   * @param location the new location<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>   */<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>  private void cacheLocation(final TableName tableName, final ServerName source,<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      final HRegionLocation location) {<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    metaCache.cacheLocation(tableName, source, location);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  // Map keyed by service name + regionserver to service stub implementation<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  private final ConcurrentMap&lt;String, Object&gt; stubs = new ConcurrentHashMap&lt;&gt;();<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span><a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>  /**<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * State of the MasterService connection/setup.<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   */<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>  static class MasterServiceState {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    Connection connection;<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    MasterProtos.MasterService.BlockingInterface stub;<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>    int userCount;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span><a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>    MasterServiceState(final Connection connection) {<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>      super();<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      this.connection = connection;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span><a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    @Override<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>    public String toString() {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>      return "MasterService";<a name="line.1035"></a>
+<span class="sourceLineNo">983</span>  /*<a name="line.983"></a>
+<span class="sourceLineNo">984</span>   * Delete all cached entries of a table that maps to a specific location.<a name="line.984"></a>
+<span class="sourceLineNo">985</span>   */<a name="line.985"></a>
+<span class="sourceLineNo">986</span>  @Override<a name="line.986"></a>
+<span class="sourceLineNo">987</span>  public void clearCaches(final ServerName serverName) {<a name="line.987"></a>
+<span class="sourceLineNo">988</span>    metaCache.clearCache(serverName);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
+<span class="sourceLineNo">990</span><a name="line.990"></a>
+<span class="sourceLineNo">991</span>  @Override<a name="line.991"></a>
+<span class="sourceLineNo">992</span>  public void clearRegionCache() {<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    metaCache.clearCache();<a name="line.993"></a>
+<span class="sourceLineNo">994</span>  }<a name="line.994"></a>
+<span class="sourceLineNo">995</span><a name="line.995"></a>
+<span class="sourceLineNo">996</span>  @Override<a name="line.996"></a>
+<span class="sourceLineNo">997</span>  public void clearRegionCache(final TableName tableName) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>    metaCache.clearCache(tableName);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>  }<a name="line.999"></a>
+<span class="sourceLineNo">1000</span><a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>  /**<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>   * @param tableName The table name.<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>   * @param source the source of the new location, if it's not coming from meta<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>   * @param location the new location<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>   */<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>  private void cacheLocation(final TableName tableName, final ServerName source,<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>      final HRegionLocation location) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>    metaCache.cacheLocation(tableName, source, location);<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>  }<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span><a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>  // Map keyed by service name + regionserver to service stub implementation<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>  private final ConcurrentMap&lt;String, Object&gt; stubs = new ConcurrentHashMap&lt;&gt;();<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span><a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>  /**<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>   * State of the MasterService connection/setup.<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>   */<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  static class MasterServiceState {<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>    Connection connection;<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span><a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>    MasterProtos.MasterService.BlockingInterface stub;<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    int userCount;<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span><a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>    MasterServiceState(final Connection connection) {<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>      super();<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      this.connection = connection;<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    }<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span><a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    @Override<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    public String toString() {<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>      return "MasterService";<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    }<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span><a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>    Object getStub() {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>      return this.stub;<a name="line.1035"></a>
 <span class="sourceLineNo">1036</span>    }<a name="line.1036"></a>
 <span class="sourceLineNo">1037</span><a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    Object getStub() {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>      return this.stub;<a name="line.1039"></a>
+<span class="sourceLineNo">1038</span>    void clearStub() {<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      this.stub = null;<a name="line.1039"></a>
 <span class="sourceLineNo">1040</span>    }<a name="line.1040"></a>
 <span class="sourceLineNo">1041</span><a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    void clearStub() {<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>      this.stub = null;<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>    }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span><a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>    boolean isMasterRunning() throws IOException {<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>      MasterProtos.IsMasterRunningResponse response = null;<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>      try {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>        response = this.stub.isMasterRunning(null, RequestConverter.buildIsMasterRunningRequest());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>      } catch (Exception e) {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>        throw ProtobufUtil.handleRemoteException(e);<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>      }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>      return response != null? response.getIsMasterRunning(): false;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    }<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>  }<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span><a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>  /**<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>   * The record of errors for servers.<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>   */<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  static class ServerErrorTracker {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>    // We need a concurrent map here, as we could have multiple threads updating it in parallel.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>    private final ConcurrentMap&lt;ServerName, ServerErrors&gt; errorsByServer = new ConcurrentHashMap&lt;&gt;();<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>    private final long canRetryUntil;<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>    private final int maxTries;// max number to try<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    private final long startTrackingTime;<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span><a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    /**<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>     * Constructor<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>     * @param timeout how long to wait before timeout, in unit of millisecond<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>     * @param maxTries how many times to try<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>     */<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>    public ServerErrorTracker(long timeout, int maxTries) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      this.maxTries = maxTries;<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>      this.canRetryUntil = EnvironmentEdgeManager.currentTime() + timeout;<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      this.startTrackingTime = new Date().getTime();<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span><a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    /**<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>     * We stop to retry when we have exhausted BOTH the number of tries and the time allocated.<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>     * @param numAttempt how many times we have tried by now<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>     */<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    boolean canTryMore(int numAttempt) {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>      // If there is a single try we must not take into account the time.<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      return numAttempt &lt; maxTries || (maxTries &gt; 1 &amp;&amp;<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>          EnvironmentEdgeManager.currentTime() &lt; this.canRetryUntil);<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    }<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span><a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    /**<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>     * Calculates the back-off time for a retrying request to a particular server.<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>     *<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>     * @param server    The server in question.<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>     * @param basePause The default hci pause.<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>     * @return The time to wait before sending next request.<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>     */<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    long calculateBackoffTime(ServerName server, long basePause) {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      long result;<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      ServerErrors errorStats = errorsByServer.get(server);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>      if (errorStats != null) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>        result = ConnectionUtils.getPauseTime(basePause, Math.max(0, errorStats.getCount() - 1));<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      } else {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        result = 0; // yes, if the server is not in our list we don't wait before retrying.<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      return result;<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    }<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span><a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>    /**<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>     * Reports that there was an error on the server to do whatever bean-counting necessary.<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>     * @param server The server in question.<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>     */<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>    void reportServerError(ServerName server) {<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>      computeIfAbsent(errorsByServer, server, ServerErrors::new).addError();<a name="line.1111"></a>
+<span class="sourceLineNo">1042</span>    boolean isMasterRunning() throws IOException {<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>      MasterProtos.IsMasterRunningResponse response = null;<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>      try {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>        response =

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
index bc4887a..b12b756 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -1245,3081 +1245,3103 @@
 <span class="sourceLineNo">1237</span>  }<a name="line.1237"></a>
 <span class="sourceLineNo">1238</span><a name="line.1238"></a>
 <span class="sourceLineNo">1239</span>  /**<a name="line.1239"></a>
-<span class="sourceLineNo">1240</span>   * Shutdown HBase mini cluster.  Does not shutdown zk or dfs if running.<a name="line.1240"></a>
-<span class="sourceLineNo">1241</span>   */<a name="line.1241"></a>
-<span class="sourceLineNo">1242</span>  public void shutdownMiniHBaseCluster() throws IOException {<a name="line.1242"></a>
-<span class="sourceLineNo">1243</span>    if (hbaseAdmin != null) {<a name="line.1243"></a>
-<span class="sourceLineNo">1244</span>      hbaseAdmin.close();<a name="line.1244"></a>
-<span class="sourceLineNo">1245</span>      hbaseAdmin = null;<a name="line.1245"></a>
-<span class="sourceLineNo">1246</span>    }<a name="line.1246"></a>
-<span class="sourceLineNo">1247</span>    if (this.connection != null) {<a name="line.1247"></a>
-<span class="sourceLineNo">1248</span>      this.connection.close();<a name="line.1248"></a>
-<span class="sourceLineNo">1249</span>      this.connection = null;<a name="line.1249"></a>
+<span class="sourceLineNo">1240</span>   * Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.<a name="line.1240"></a>
+<span class="sourceLineNo">1241</span>   * @throws java.io.IOException in case command is unsuccessful<a name="line.1241"></a>
+<span class="sourceLineNo">1242</span>   */<a name="line.1242"></a>
+<span class="sourceLineNo">1243</span>  public void shutdownMiniHBaseCluster() throws IOException {<a name="line.1243"></a>
+<span class="sourceLineNo">1244</span>    cleanup();<a name="line.1244"></a>
+<span class="sourceLineNo">1245</span>    if (this.hbaseCluster != null) {<a name="line.1245"></a>
+<span class="sourceLineNo">1246</span>      this.hbaseCluster.shutdown();<a name="line.1246"></a>
+<span class="sourceLineNo">1247</span>      // Wait till hbase is down before going on to shutdown zk.<a name="line.1247"></a>
+<span class="sourceLineNo">1248</span>      this.hbaseCluster.waitUntilShutDown();<a name="line.1248"></a>
+<span class="sourceLineNo">1249</span>      this.hbaseCluster = null;<a name="line.1249"></a>
 <span class="sourceLineNo">1250</span>    }<a name="line.1250"></a>
-<span class="sourceLineNo">1251</span>    // unset the configuration for MIN and MAX RS to start<a name="line.1251"></a>
-<span class="sourceLineNo">1252</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.1252"></a>
-<span class="sourceLineNo">1253</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1);<a name="line.1253"></a>
-<span class="sourceLineNo">1254</span>    if (this.hbaseCluster != null) {<a name="line.1254"></a>
-<span class="sourceLineNo">1255</span>      this.hbaseCluster.shutdown();<a name="line.1255"></a>
-<span class="sourceLineNo">1256</span>      // Wait till hbase is down before going on to shutdown zk.<a name="line.1256"></a>
-<span class="sourceLineNo">1257</span>      this.hbaseCluster.waitUntilShutDown();<a name="line.1257"></a>
-<span class="sourceLineNo">1258</span>      this.hbaseCluster = null;<a name="line.1258"></a>
-<span class="sourceLineNo">1259</span>    }<a name="line.1259"></a>
-<span class="sourceLineNo">1260</span>    if (zooKeeperWatcher != null) {<a name="line.1260"></a>
-<span class="sourceLineNo">1261</span>      zooKeeperWatcher.close();<a name="line.1261"></a>
-<span class="sourceLineNo">1262</span>      zooKeeperWatcher = null;<a name="line.1262"></a>
-<span class="sourceLineNo">1263</span>    }<a name="line.1263"></a>
-<span class="sourceLineNo">1264</span>  }<a name="line.1264"></a>
-<span class="sourceLineNo">1265</span><a name="line.1265"></a>
-<span class="sourceLineNo">1266</span>  /**<a name="line.1266"></a>
-<span class="sourceLineNo">1267</span>   * Returns the path to the default root dir the minicluster uses. If &lt;code&gt;create&lt;/code&gt;<a name="line.1267"></a>
-<span class="sourceLineNo">1268</span>   * is true, a new root directory path is fetched irrespective of whether it has been fetched<a name="line.1268"></a>
-<span class="sourceLineNo">1269</span>   * before or not. If false, previous path is used.<a name="line.1269"></a>
-<span class="sourceLineNo">1270</span>   * Note: this does not cause the root dir to be created.<a name="line.1270"></a>
-<span class="sourceLineNo">1271</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1271"></a>
-<span class="sourceLineNo">1272</span>   * @throws IOException<a name="line.1272"></a>
-<span class="sourceLineNo">1273</span>   */<a name="line.1273"></a>
-<span class="sourceLineNo">1274</span>  public Path getDefaultRootDirPath(boolean create) throws IOException {<a name="line.1274"></a>
-<span class="sourceLineNo">1275</span>    if (!create) {<a name="line.1275"></a>
-<span class="sourceLineNo">1276</span>      return getDataTestDirOnTestFS();<a name="line.1276"></a>
-<span class="sourceLineNo">1277</span>    } else {<a name="line.1277"></a>
-<span class="sourceLineNo">1278</span>      return getNewDataTestDirOnTestFS();<a name="line.1278"></a>
-<span class="sourceLineNo">1279</span>    }<a name="line.1279"></a>
-<span class="sourceLineNo">1280</span>  }<a name="line.1280"></a>
-<span class="sourceLineNo">1281</span><a name="line.1281"></a>
-<span class="sourceLineNo">1282</span>  /**<a name="line.1282"></a>
-<span class="sourceLineNo">1283</span>   * Same as {{@link HBaseTestingUtility#getDefaultRootDirPath(boolean create)}<a name="line.1283"></a>
-<span class="sourceLineNo">1284</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1284"></a>
-<span class="sourceLineNo">1285</span>   * Note: this does not cause the root dir to be created.<a name="line.1285"></a>
-<span class="sourceLineNo">1286</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1286"></a>
-<span class="sourceLineNo">1287</span>   * @throws IOException<a name="line.1287"></a>
-<span class="sourceLineNo">1288</span>   */<a name="line.1288"></a>
-<span class="sourceLineNo">1289</span>  public Path getDefaultRootDirPath() throws IOException {<a name="line.1289"></a>
-<span class="sourceLineNo">1290</span>    return getDefaultRootDirPath(false);<a name="line.1290"></a>
-<span class="sourceLineNo">1291</span>  }<a name="line.1291"></a>
-<span class="sourceLineNo">1292</span><a name="line.1292"></a>
-<span class="sourceLineNo">1293</span>  /**<a name="line.1293"></a>
-<span class="sourceLineNo">1294</span>   * Creates an hbase rootdir in user home directory.  Also creates hbase<a name="line.1294"></a>
-<span class="sourceLineNo">1295</span>   * version file.  Normally you won't make use of this method.  Root hbasedir<a name="line.1295"></a>
-<span class="sourceLineNo">1296</span>   * is created for you as part of mini cluster startup.  You'd only use this<a name="line.1296"></a>
-<span class="sourceLineNo">1297</span>   * method if you were doing manual operation.<a name="line.1297"></a>
-<span class="sourceLineNo">1298</span>   * @param create This flag decides whether to get a new<a name="line.1298"></a>
-<span class="sourceLineNo">1299</span>   * root or data directory path or not, if it has been fetched already.<a name="line.1299"></a>
-<span class="sourceLineNo">1300</span>   * Note : Directory will be made irrespective of whether path has been fetched or not.<a name="line.1300"></a>
-<span class="sourceLineNo">1301</span>   * If directory already exists, it will be overwritten<a name="line.1301"></a>
-<span class="sourceLineNo">1302</span>   * @return Fully qualified path to hbase root dir<a name="line.1302"></a>
-<span class="sourceLineNo">1303</span>   * @throws IOException<a name="line.1303"></a>
-<span class="sourceLineNo">1304</span>   */<a name="line.1304"></a>
-<span class="sourceLineNo">1305</span>  public Path createRootDir(boolean create) throws IOException {<a name="line.1305"></a>
-<span class="sourceLineNo">1306</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1306"></a>
-<span class="sourceLineNo">1307</span>    Path hbaseRootdir = getDefaultRootDirPath(create);<a name="line.1307"></a>
-<span class="sourceLineNo">1308</span>    FSUtils.setRootDir(this.conf, hbaseRootdir);<a name="line.1308"></a>
-<span class="sourceLineNo">1309</span>    fs.mkdirs(hbaseRootdir);<a name="line.1309"></a>
-<span class="sourceLineNo">1310</span>    FSUtils.setVersion(fs, hbaseRootdir);<a name="line.1310"></a>
-<span class="sourceLineNo">1311</span>    return hbaseRootdir;<a name="line.1311"></a>
-<span class="sourceLineNo">1312</span>  }<a name="line.1312"></a>
-<span class="sourceLineNo">1313</span><a name="line.1313"></a>
-<span class="sourceLineNo">1314</span>  /**<a name="line.1314"></a>
-<span class="sourceLineNo">1315</span>   * Same as {@link HBaseTestingUtility#createRootDir(boolean create)}<a name="line.1315"></a>
-<span class="sourceLineNo">1316</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1316"></a>
-<span class="sourceLineNo">1317</span>   * @return Fully qualified path to hbase root dir<a name="line.1317"></a>
-<span class="sourceLineNo">1318</span>   * @throws IOException<a name="line.1318"></a>
-<span class="sourceLineNo">1319</span>   */<a name="line.1319"></a>
-<span class="sourceLineNo">1320</span>  public Path createRootDir() throws IOException {<a name="line.1320"></a>
-<span class="sourceLineNo">1321</span>    return createRootDir(false);<a name="line.1321"></a>
-<span class="sourceLineNo">1322</span>  }<a name="line.1322"></a>
-<span class="sourceLineNo">1323</span><a name="line.1323"></a>
-<span class="sourceLineNo">1324</span>  /**<a name="line.1324"></a>
-<span class="sourceLineNo">1325</span>   * Creates a hbase walDir in the user's home directory.<a name="line.1325"></a>
-<span class="sourceLineNo">1326</span>   * Normally you won't make use of this method. Root hbaseWALDir<a name="line.1326"></a>
-<span class="sourceLineNo">1327</span>   * is created for you as part of mini cluster startup. You'd only use this<a name="line.1327"></a>
-<span class="sourceLineNo">1328</span>   * method if you were doing manual operation.<a name="line.1328"></a>
-<span class="sourceLineNo">1329</span>   *<a name="line.1329"></a>
-<span class="sourceLineNo">1330</span>   * @return Fully qualified path to hbase root dir<a name="line.1330"></a>
-<span class="sourceLineNo">1331</span>   * @throws IOException<a name="line.1331"></a>
-<span class="sourceLineNo">1332</span>  */<a name="line.1332"></a>
-<span class="sourceLineNo">1333</span>  public Path createWALRootDir() throws IOException {<a name="line.1333"></a>
-<span class="sourceLineNo">1334</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1334"></a>
-<span class="sourceLineNo">1335</span>    Path walDir = getNewDataTestDirOnTestFS();<a name="line.1335"></a>
-<span class="sourceLineNo">1336</span>    FSUtils.setWALRootDir(this.conf, walDir);<a name="line.1336"></a>
-<span class="sourceLineNo">1337</span>    fs.mkdirs(walDir);<a name="line.1337"></a>
-<span class="sourceLineNo">1338</span>    return walDir;<a name="line.1338"></a>
-<span class="sourceLineNo">1339</span>  }<a name="line.1339"></a>
-<span class="sourceLineNo">1340</span><a name="line.1340"></a>
-<span class="sourceLineNo">1341</span>  private void setHBaseFsTmpDir() throws IOException {<a name="line.1341"></a>
-<span class="sourceLineNo">1342</span>    String hbaseFsTmpDirInString = this.conf.get("hbase.fs.tmp.dir");<a name="line.1342"></a>
-<span class="sourceLineNo">1343</span>    if (hbaseFsTmpDirInString == null) {<a name="line.1343"></a>
-<span class="sourceLineNo">1344</span>      this.conf.set("hbase.fs.tmp.dir",  getDataTestDirOnTestFS("hbase-staging").toString());<a name="line.1344"></a>
-<span class="sourceLineNo">1345</span>      LOG.info("Setting hbase.fs.tmp.dir to " + this.conf.get("hbase.fs.tmp.dir"));<a name="line.1345"></a>
-<span class="sourceLineNo">1346</span>    } else {<a name="line.1346"></a>
-<span class="sourceLineNo">1347</span>      LOG.info("The hbase.fs.tmp.dir is set to " + hbaseFsTmpDirInString);<a name="line.1347"></a>
-<span class="sourceLineNo">1348</span>    }<a name="line.1348"></a>
-<span class="sourceLineNo">1349</span>  }<a name="line.1349"></a>
-<span class="sourceLineNo">1350</span><a name="line.1350"></a>
-<span class="sourceLineNo">1351</span>  /**<a name="line.1351"></a>
-<span class="sourceLineNo">1352</span>   * Flushes all caches in the mini hbase cluster<a name="line.1352"></a>
+<span class="sourceLineNo">1251</span>    if (zooKeeperWatcher != null) {<a name="line.1251"></a>
+<span class="sourceLineNo">1252</span>      zooKeeperWatcher.close();<a name="line.1252"></a>
+<span class="sourceLineNo">1253</span>      zooKeeperWatcher = null;<a name="line.1253"></a>
+<span class="sourceLineNo">1254</span>    }<a name="line.1254"></a>
+<span class="sourceLineNo">1255</span>  }<a name="line.1255"></a>
+<span class="sourceLineNo">1256</span><a name="line.1256"></a>
+<span class="sourceLineNo">1257</span>  /**<a name="line.1257"></a>
+<span class="sourceLineNo">1258</span>   * Abruptly Shutdown HBase mini cluster. Does not shutdown zk or dfs if running.<a name="line.1258"></a>
+<span class="sourceLineNo">1259</span>   * @throws java.io.IOException throws in case command is unsuccessful<a name="line.1259"></a>
+<span class="sourceLineNo">1260</span>   */<a name="line.1260"></a>
+<span class="sourceLineNo">1261</span>  public void killMiniHBaseCluster() throws IOException {<a name="line.1261"></a>
+<span class="sourceLineNo">1262</span>    cleanup();<a name="line.1262"></a>
+<span class="sourceLineNo">1263</span>    if (this.hbaseCluster != null) {<a name="line.1263"></a>
+<span class="sourceLineNo">1264</span>      getMiniHBaseCluster().killAll();<a name="line.1264"></a>
+<span class="sourceLineNo">1265</span>      this.hbaseCluster = null;<a name="line.1265"></a>
+<span class="sourceLineNo">1266</span>    }<a name="line.1266"></a>
+<span class="sourceLineNo">1267</span>    if (zooKeeperWatcher != null) {<a name="line.1267"></a>
+<span class="sourceLineNo">1268</span>      zooKeeperWatcher.close();<a name="line.1268"></a>
+<span class="sourceLineNo">1269</span>      zooKeeperWatcher = null;<a name="line.1269"></a>
+<span class="sourceLineNo">1270</span>    }<a name="line.1270"></a>
+<span class="sourceLineNo">1271</span>  }<a name="line.1271"></a>
+<span class="sourceLineNo">1272</span><a name="line.1272"></a>
+<span class="sourceLineNo">1273</span>  // close hbase admin, close current connection and reset MIN MAX configs for RS.<a name="line.1273"></a>
+<span class="sourceLineNo">1274</span>  private void cleanup() throws IOException {<a name="line.1274"></a>
+<span class="sourceLineNo">1275</span>    if (hbaseAdmin != null) {<a name="line.1275"></a>
+<span class="sourceLineNo">1276</span>      hbaseAdmin.close();<a name="line.1276"></a>
+<span class="sourceLineNo">1277</span>      hbaseAdmin = null;<a name="line.1277"></a>
+<span class="sourceLineNo">1278</span>    }<a name="line.1278"></a>
+<span class="sourceLineNo">1279</span>    if (this.connection != null) {<a name="line.1279"></a>
+<span class="sourceLineNo">1280</span>      this.connection.close();<a name="line.1280"></a>
+<span class="sourceLineNo">1281</span>      this.connection = null;<a name="line.1281"></a>
+<span class="sourceLineNo">1282</span>    }<a name="line.1282"></a>
+<span class="sourceLineNo">1283</span>    // unset the configuration for MIN and MAX RS to start<a name="line.1283"></a>
+<span class="sourceLineNo">1284</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1);<a name="line.1284"></a>
+<span class="sourceLineNo">1285</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1);<a name="line.1285"></a>
+<span class="sourceLineNo">1286</span>  }<a name="line.1286"></a>
+<span class="sourceLineNo">1287</span><a name="line.1287"></a>
+<span class="sourceLineNo">1288</span>  /**<a name="line.1288"></a>
+<span class="sourceLineNo">1289</span>   * Returns the path to the default root dir the minicluster uses. If &lt;code&gt;create&lt;/code&gt;<a name="line.1289"></a>
+<span class="sourceLineNo">1290</span>   * is true, a new root directory path is fetched irrespective of whether it has been fetched<a name="line.1290"></a>
+<span class="sourceLineNo">1291</span>   * before or not. If false, previous path is used.<a name="line.1291"></a>
+<span class="sourceLineNo">1292</span>   * Note: this does not cause the root dir to be created.<a name="line.1292"></a>
+<span class="sourceLineNo">1293</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1293"></a>
+<span class="sourceLineNo">1294</span>   * @throws IOException<a name="line.1294"></a>
+<span class="sourceLineNo">1295</span>   */<a name="line.1295"></a>
+<span class="sourceLineNo">1296</span>  public Path getDefaultRootDirPath(boolean create) throws IOException {<a name="line.1296"></a>
+<span class="sourceLineNo">1297</span>    if (!create) {<a name="line.1297"></a>
+<span class="sourceLineNo">1298</span>      return getDataTestDirOnTestFS();<a name="line.1298"></a>
+<span class="sourceLineNo">1299</span>    } else {<a name="line.1299"></a>
+<span class="sourceLineNo">1300</span>      return getNewDataTestDirOnTestFS();<a name="line.1300"></a>
+<span class="sourceLineNo">1301</span>    }<a name="line.1301"></a>
+<span class="sourceLineNo">1302</span>  }<a name="line.1302"></a>
+<span class="sourceLineNo">1303</span><a name="line.1303"></a>
+<span class="sourceLineNo">1304</span>  /**<a name="line.1304"></a>
+<span class="sourceLineNo">1305</span>   * Same as {{@link HBaseTestingUtility#getDefaultRootDirPath(boolean create)}<a name="line.1305"></a>
+<span class="sourceLineNo">1306</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1306"></a>
+<span class="sourceLineNo">1307</span>   * Note: this does not cause the root dir to be created.<a name="line.1307"></a>
+<span class="sourceLineNo">1308</span>   * @return Fully qualified path for the default hbase root dir<a name="line.1308"></a>
+<span class="sourceLineNo">1309</span>   * @throws IOException<a name="line.1309"></a>
+<span class="sourceLineNo">1310</span>   */<a name="line.1310"></a>
+<span class="sourceLineNo">1311</span>  public Path getDefaultRootDirPath() throws IOException {<a name="line.1311"></a>
+<span class="sourceLineNo">1312</span>    return getDefaultRootDirPath(false);<a name="line.1312"></a>
+<span class="sourceLineNo">1313</span>  }<a name="line.1313"></a>
+<span class="sourceLineNo">1314</span><a name="line.1314"></a>
+<span class="sourceLineNo">1315</span>  /**<a name="line.1315"></a>
+<span class="sourceLineNo">1316</span>   * Creates an hbase rootdir in user home directory.  Also creates hbase<a name="line.1316"></a>
+<span class="sourceLineNo">1317</span>   * version file.  Normally you won't make use of this method.  Root hbasedir<a name="line.1317"></a>
+<span class="sourceLineNo">1318</span>   * is created for you as part of mini cluster startup.  You'd only use this<a name="line.1318"></a>
+<span class="sourceLineNo">1319</span>   * method if you were doing manual operation.<a name="line.1319"></a>
+<span class="sourceLineNo">1320</span>   * @param create This flag decides whether to get a new<a name="line.1320"></a>
+<span class="sourceLineNo">1321</span>   * root or data directory path or not, if it has been fetched already.<a name="line.1321"></a>
+<span class="sourceLineNo">1322</span>   * Note : Directory will be made irrespective of whether path has been fetched or not.<a name="line.1322"></a>
+<span class="sourceLineNo">1323</span>   * If directory already exists, it will be overwritten<a name="line.1323"></a>
+<span class="sourceLineNo">1324</span>   * @return Fully qualified path to hbase root dir<a name="line.1324"></a>
+<span class="sourceLineNo">1325</span>   * @throws IOException<a name="line.1325"></a>
+<span class="sourceLineNo">1326</span>   */<a name="line.1326"></a>
+<span class="sourceLineNo">1327</span>  public Path createRootDir(boolean create) throws IOException {<a name="line.1327"></a>
+<span class="sourceLineNo">1328</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1328"></a>
+<span class="sourceLineNo">1329</span>    Path hbaseRootdir = getDefaultRootDirPath(create);<a name="line.1329"></a>
+<span class="sourceLineNo">1330</span>    FSUtils.setRootDir(this.conf, hbaseRootdir);<a name="line.1330"></a>
+<span class="sourceLineNo">1331</span>    fs.mkdirs(hbaseRootdir);<a name="line.1331"></a>
+<span class="sourceLineNo">1332</span>    FSUtils.setVersion(fs, hbaseRootdir);<a name="line.1332"></a>
+<span class="sourceLineNo">1333</span>    return hbaseRootdir;<a name="line.1333"></a>
+<span class="sourceLineNo">1334</span>  }<a name="line.1334"></a>
+<span class="sourceLineNo">1335</span><a name="line.1335"></a>
+<span class="sourceLineNo">1336</span>  /**<a name="line.1336"></a>
+<span class="sourceLineNo">1337</span>   * Same as {@link HBaseTestingUtility#createRootDir(boolean create)}<a name="line.1337"></a>
+<span class="sourceLineNo">1338</span>   * except that &lt;code&gt;create&lt;/code&gt; flag is false.<a name="line.1338"></a>
+<span class="sourceLineNo">1339</span>   * @return Fully qualified path to hbase root dir<a name="line.1339"></a>
+<span class="sourceLineNo">1340</span>   * @throws IOException<a name="line.1340"></a>
+<span class="sourceLineNo">1341</span>   */<a name="line.1341"></a>
+<span class="sourceLineNo">1342</span>  public Path createRootDir() throws IOException {<a name="line.1342"></a>
+<span class="sourceLineNo">1343</span>    return createRootDir(false);<a name="line.1343"></a>
+<span class="sourceLineNo">1344</span>  }<a name="line.1344"></a>
+<span class="sourceLineNo">1345</span><a name="line.1345"></a>
+<span class="sourceLineNo">1346</span>  /**<a name="line.1346"></a>
+<span class="sourceLineNo">1347</span>   * Creates a hbase walDir in the user's home directory.<a name="line.1347"></a>
+<span class="sourceLineNo">1348</span>   * Normally you won't make use of this method. Root hbaseWALDir<a name="line.1348"></a>
+<span class="sourceLineNo">1349</span>   * is created for you as part of mini cluster startup. You'd only use this<a name="line.1349"></a>
+<span class="sourceLineNo">1350</span>   * method if you were doing manual operation.<a name="line.1350"></a>
+<span class="sourceLineNo">1351</span>   *<a name="line.1351"></a>
+<span class="sourceLineNo">1352</span>   * @return Fully qualified path to hbase root dir<a name="line.1352"></a>
 <span class="sourceLineNo">1353</span>   * @throws IOException<a name="line.1353"></a>
-<span class="sourceLineNo">1354</span>   */<a name="line.1354"></a>
-<span class="sourceLineNo">1355</span>  public void flush() throws IOException {<a name="line.1355"></a>
-<span class="sourceLineNo">1356</span>    getMiniHBaseCluster().flushcache();<a name="line.1356"></a>
-<span class="sourceLineNo">1357</span>  }<a name="line.1357"></a>
-<span class="sourceLineNo">1358</span><a name="line.1358"></a>
-<span class="sourceLineNo">1359</span>  /**<a name="line.1359"></a>
-<span class="sourceLineNo">1360</span>   * Flushes all caches in the mini hbase cluster<a name="line.1360"></a>
-<span class="sourceLineNo">1361</span>   * @throws IOException<a name="line.1361"></a>
-<span class="sourceLineNo">1362</span>   */<a name="line.1362"></a>
-<span class="sourceLineNo">1363</span>  public void flush(TableName tableName) throws IOException {<a name="line.1363"></a>
-<span class="sourceLineNo">1364</span>    getMiniHBaseCluster().flushcache(tableName);<a name="line.1364"></a>
-<span class="sourceLineNo">1365</span>  }<a name="line.1365"></a>
-<span class="sourceLineNo">1366</span><a name="line.1366"></a>
-<span class="sourceLineNo">1367</span>  /**<a name="line.1367"></a>
-<span class="sourceLineNo">1368</span>   * Compact all regions in the mini hbase cluster<a name="line.1368"></a>
-<span class="sourceLineNo">1369</span>   * @throws IOException<a name="line.1369"></a>
-<span class="sourceLineNo">1370</span>   */<a name="line.1370"></a>
-<span class="sourceLineNo">1371</span>  public void compact(boolean major) throws IOException {<a name="line.1371"></a>
-<span class="sourceLineNo">1372</span>    getMiniHBaseCluster().compact(major);<a name="line.1372"></a>
-<span class="sourceLineNo">1373</span>  }<a name="line.1373"></a>
-<span class="sourceLineNo">1374</span><a name="line.1374"></a>
-<span class="sourceLineNo">1375</span>  /**<a name="line.1375"></a>
-<span class="sourceLineNo">1376</span>   * Compact all of a table's reagion in the mini hbase cluster<a name="line.1376"></a>
-<span class="sourceLineNo">1377</span>   * @throws IOException<a name="line.1377"></a>
-<span class="sourceLineNo">1378</span>   */<a name="line.1378"></a>
-<span class="sourceLineNo">1379</span>  public void compact(TableName tableName, boolean major) throws IOException {<a name="line.1379"></a>
-<span class="sourceLineNo">1380</span>    getMiniHBaseCluster().compact(tableName, major);<a name="line.1380"></a>
-<span class="sourceLineNo">1381</span>  }<a name="line.1381"></a>
-<span class="sourceLineNo">1382</span><a name="line.1382"></a>
-<span class="sourceLineNo">1383</span>  /**<a name="line.1383"></a>
-<span class="sourceLineNo">1384</span>   * Create a table.<a name="line.1384"></a>
-<span class="sourceLineNo">1385</span>   * @param tableName<a name="line.1385"></a>
-<span class="sourceLineNo">1386</span>   * @param family<a name="line.1386"></a>
-<span class="sourceLineNo">1387</span>   * @return A Table instance for the created table.<a name="line.1387"></a>
-<span class="sourceLineNo">1388</span>   * @throws IOException<a name="line.1388"></a>
-<span class="sourceLineNo">1389</span>   */<a name="line.1389"></a>
-<span class="sourceLineNo">1390</span>  public Table createTable(TableName tableName, String family)<a name="line.1390"></a>
-<span class="sourceLineNo">1391</span>  throws IOException{<a name="line.1391"></a>
-<span class="sourceLineNo">1392</span>    return createTable(tableName, new String[]{family});<a name="line.1392"></a>
-<span class="sourceLineNo">1393</span>  }<a name="line.1393"></a>
-<span class="sourceLineNo">1394</span><a name="line.1394"></a>
-<span class="sourceLineNo">1395</span>  /**<a name="line.1395"></a>
-<span class="sourceLineNo">1396</span>   * Create a table.<a name="line.1396"></a>
-<span class="sourceLineNo">1397</span>   * @param tableName<a name="line.1397"></a>
-<span class="sourceLineNo">1398</span>   * @param families<a name="line.1398"></a>
-<span class="sourceLineNo">1399</span>   * @return A Table instance for the created table.<a name="line.1399"></a>
-<span class="sourceLineNo">1400</span>   * @throws IOException<a name="line.1400"></a>
-<span class="sourceLineNo">1401</span>   */<a name="line.1401"></a>
-<span class="sourceLineNo">1402</span>  public Table createTable(TableName tableName, String[] families)<a name="line.1402"></a>
-<span class="sourceLineNo">1403</span>  throws IOException {<a name="line.1403"></a>
-<span class="sourceLineNo">1404</span>    List&lt;byte[]&gt; fams = new ArrayList&lt;&gt;(families.length);<a name="line.1404"></a>
-<span class="sourceLineNo">1405</span>    for (String family : families) {<a name="line.1405"></a>
-<span class="sourceLineNo">1406</span>      fams.add(Bytes.toBytes(family));<a name="line.1406"></a>
-<span class="sourceLineNo">1407</span>    }<a name="line.1407"></a>
-<span class="sourceLineNo">1408</span>    return createTable(tableName, fams.toArray(new byte[0][]));<a name="line.1408"></a>
-<span class="sourceLineNo">1409</span>  }<a name="line.1409"></a>
-<span class="sourceLineNo">1410</span><a name="line.1410"></a>
-<span class="sourceLineNo">1411</span>  /**<a name="line.1411"></a>
-<span class="sourceLineNo">1412</span>   * Create a table.<a name="line.1412"></a>
-<span class="sourceLineNo">1413</span>   * @param tableName<a name="line.1413"></a>
-<span class="sourceLineNo">1414</span>   * @param family<a name="line.1414"></a>
-<span class="sourceLineNo">1415</span>   * @return A Table instance for the created table.<a name="line.1415"></a>
-<span class="sourceLineNo">1416</span>   * @throws IOException<a name="line.1416"></a>
-<span class="sourceLineNo">1417</span>   */<a name="line.1417"></a>
-<span class="sourceLineNo">1418</span>  public Table createTable(TableName tableName, byte[] family)<a name="line.1418"></a>
-<span class="sourceLineNo">1419</span>  throws IOException{<a name="line.1419"></a>
-<span class="sourceLineNo">1420</span>    return createTable(tableName, new byte[][]{family});<a name="line.1420"></a>
-<span class="sourceLineNo">1421</span>  }<a name="line.1421"></a>
-<span class="sourceLineNo">1422</span><a name="line.1422"></a>
-<span class="sourceLineNo">1423</span>  /**<a name="line.1423"></a>
-<span class="sourceLineNo">1424</span>   * Create a table with multiple regions.<a name="line.1424"></a>
-<span class="sourceLineNo">1425</span>   * @param tableName<a name="line.1425"></a>
-<span class="sourceLineNo">1426</span>   * @param family<a name="line.1426"></a>
-<span class="sourceLineNo">1427</span>   * @param numRegions<a name="line.1427"></a>
-<span class="sourceLineNo">1428</span>   * @return A Table instance for the created table.<a name="line.1428"></a>
-<span class="sourceLineNo">1429</span>   * @throws IOException<a name="line.1429"></a>
-<span class="sourceLineNo">1430</span>   */<a name="line.1430"></a>
-<span class="sourceLineNo">1431</span>  public Table createMultiRegionTable(TableName tableName, byte[] family, int numRegions)<a name="line.1431"></a>
-<span class="sourceLineNo">1432</span>      throws IOException {<a name="line.1432"></a>
-<span class="sourceLineNo">1433</span>    if (numRegions &lt; 3) throw new IOException("Must create at least 3 regions");<a name="line.1433"></a>
-<span class="sourceLineNo">1434</span>    byte[] startKey = Bytes.toBytes("aaaaa");<a name="line.1434"></a>
-<span class="sourceLineNo">1435</span>    byte[] endKey = Bytes.toBytes("zzzzz");<a name="line.1435"></a>
-<span class="sourceLineNo">1436</span>    byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.1436"></a>
-<span class="sourceLineNo">1437</span><a name="line.1437"></a>
-<span class="sourceLineNo">1438</span>    return createTable(tableName, new byte[][] { family }, splitKeys);<a name="line.1438"></a>
-<span class="sourceLineNo">1439</span>  }<a name="line.1439"></a>
-<span class="sourceLineNo">1440</span><a name="line.1440"></a>
-<span class="sourceLineNo">1441</span>  /**<a name="line.1441"></a>
-<span class="sourceLineNo">1442</span>   * Create a table.<a name="line.1442"></a>
-<span class="sourceLineNo">1443</span>   * @param tableName<a name="line.1443"></a>
-<span class="sourceLineNo">1444</span>   * @param families<a name="line.1444"></a>
-<span class="sourceLineNo">1445</span>   * @return A Table instance for the created table.<a name="line.1445"></a>
-<span class="sourceLineNo">1446</span>   * @throws IOException<a name="line.1446"></a>
-<span class="sourceLineNo">1447</span>   */<a name="line.1447"></a>
-<span class="sourceLineNo">1448</span>  public Table createTable(TableName tableName, byte[][] families)<a name="line.1448"></a>
-<span class="sourceLineNo">1449</span>  throws IOException {<a name="line.1449"></a>
-<span class="sourceLineNo">1450</span>    return createTable(tableName, families, (byte[][]) null);<a name="line.1450"></a>
-<span class="sourceLineNo">1451</span>  }<a name="line.1451"></a>
-<span class="sourceLineNo">1452</span><a name="line.1452"></a>
-<span class="sourceLineNo">1453</span>  /**<a name="line.1453"></a>
-<span class="sourceLineNo">1454</span>   * Create a table with multiple regions.<a name="line.1454"></a>
-<span class="sourceLineNo">1455</span>   * @param tableName<a name="line.1455"></a>
-<span class="sourceLineNo">1456</span>   * @param families<a name="line.1456"></a>
-<span class="sourceLineNo">1457</span>   * @return A Table instance for the created table.<a name="line.1457"></a>
-<span class="sourceLineNo">1458</span>   * @throws IOException<a name="line.1458"></a>
-<span class="sourceLineNo">1459</span>   */<a name="line.1459"></a>
-<span class="sourceLineNo">1460</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families) throws IOException {<a name="line.1460"></a>
-<span class="sourceLineNo">1461</span>    return createTable(tableName, families, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1461"></a>
-<span class="sourceLineNo">1462</span>  }<a name="line.1462"></a>
-<span class="sourceLineNo">1463</span><a name="line.1463"></a>
-<span class="sourceLineNo">1464</span>  /**<a name="line.1464"></a>
-<span class="sourceLineNo">1465</span>   * Create a table.<a name="line.1465"></a>
-<span class="sourceLineNo">1466</span>   * @param tableName<a name="line.1466"></a>
-<span class="sourceLineNo">1467</span>   * @param families<a name="line.1467"></a>
-<span class="sourceLineNo">1468</span>   * @param splitKeys<a name="line.1468"></a>
-<span class="sourceLineNo">1469</span>   * @return A Table instance for the created table.<a name="line.1469"></a>
-<span class="sourceLineNo">1470</span>   * @throws IOException<a name="line.1470"></a>
-<span class="sourceLineNo">1471</span>   */<a name="line.1471"></a>
-<span class="sourceLineNo">1472</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys)<a name="line.1472"></a>
-<span class="sourceLineNo">1473</span>      throws IOException {<a name="line.1473"></a>
-<span class="sourceLineNo">1474</span>    return createTable(tableName, families, splitKeys, 1, new Configuration(getConfiguration()));<a name="line.1474"></a>
-<span class="sourceLineNo">1475</span>  }<a name="line.1475"></a>
-<span class="sourceLineNo">1476</span><a name="line.1476"></a>
-<span class="sourceLineNo">1477</span>  /**<a name="line.1477"></a>
-<span class="sourceLineNo">1478</span>   * Create a table.<a name="line.1478"></a>
-<span class="sourceLineNo">1479</span>   * @param tableName the table name<a name="line.1479"></a>
-<span class="sourceLineNo">1480</span>   * @param families the families<a name="line.1480"></a>
-<span class="sourceLineNo">1481</span>   * @param splitKeys the splitkeys<a name="line.1481"></a>
-<span class="sourceLineNo">1482</span>   * @param replicaCount the region replica count<a name="line.1482"></a>
-<span class="sourceLineNo">1483</span>   * @return A Table instance for the created table.<a name="line.1483"></a>
-<span class="sourceLineNo">1484</span>   * @throws IOException throws IOException<a name="line.1484"></a>
-<span class="sourceLineNo">1485</span>   */<a name="line.1485"></a>
-<span class="sourceLineNo">1486</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1486"></a>
-<span class="sourceLineNo">1487</span>      int replicaCount) throws IOException {<a name="line.1487"></a>
-<span class="sourceLineNo">1488</span>    return createTable(tableName, families, splitKeys, replicaCount,<a name="line.1488"></a>
-<span class="sourceLineNo">1489</span>      new Configuration(getConfiguration()));<a name="line.1489"></a>
-<span class="sourceLineNo">1490</span>  }<a name="line.1490"></a>
-<span class="sourceLineNo">1491</span><a name="line.1491"></a>
-<span class="sourceLineNo">1492</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1492"></a>
-<span class="sourceLineNo">1493</span>      int numVersions, byte[] startKey, byte[] endKey, int numRegions)<a name="line.1493"></a>
-<span class="sourceLineNo">1494</span>  throws IOException{<a name="line.1494"></a>
-<span class="sourceLineNo">1495</span>    HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions);<a name="line.1495"></a>
-<span class="sourceLineNo">1496</span><a name="line.1496"></a>
-<span class="sourceLineNo">1497</span>    getAdmin().createTable(desc, startKey, endKey, numRegions);<a name="line.1497"></a>
-<span class="sourceLineNo">1498</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we<a name="line.1498"></a>
-<span class="sourceLineNo">1499</span>    // should wait until they are assigned<a name="line.1499"></a>
-<span class="sourceLineNo">1500</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1500"></a>
-<span class="sourceLineNo">1501</span>    return getConnection().getTable(tableName);<a name="line.1501"></a>
-<span class="sourceLineNo">1502</span>  }<a name="line.1502"></a>
-<span class="sourceLineNo">1503</span><a name="line.1503"></a>
-<span class="sourceLineNo">1504</span>  /**<a name="line.1504"></a>
-<span class="sourceLineNo">1505</span>   * Create a table.<a name="line.1505"></a>
-<span class="sourceLineNo">1506</span>   * @param htd<a name="line.1506"></a>
-<span class="sourceLineNo">1507</span>   * @param families<a name="line.1507"></a>
-<span class="sourceLineNo">1508</span>   * @param c Configuration to use<a name="line.1508"></a>
-<span class="sourceLineNo">1509</span>   * @return A Table instance for the created table.<a name="line.1509"></a>
-<span class="sourceLineNo">1510</span>   * @throws IOException<a name="line.1510"></a>
-<span class="sourceLineNo">1511</span>   */<a name="line.1511"></a>
-<span class="sourceLineNo">1512</span>  public Table createTable(TableDescriptor htd, byte[][] families, Configuration c)<a name="line.1512"></a>
-<span class="sourceLineNo">1513</span>  throws IOException {<a name="line.1513"></a>
-<span class="sourceLineNo">1514</span>    return createTable(htd, families, null, c);<a name="line.1514"></a>
-<span class="sourceLineNo">1515</span>  }<a name="line.1515"></a>
-<span class="sourceLineNo">1516</span><a name="line.1516"></a>
-<span class="sourceLineNo">1517</span>  /**<a name="line.1517"></a>
-<span class="sourceLineNo">1518</span>   * Create a table.<a name="line.1518"></a>
-<span class="sourceLineNo">1519</span>   * @param htd table descriptor<a name="line.1519"></a>
-<span class="sourceLineNo">1520</span>   * @param families array of column families<a name="line.1520"></a>
-<span class="sourceLineNo">1521</span>   * @param splitKeys array of split keys<a name="line.1521"></a>
-<span class="sourceLineNo">1522</span>   * @param c Configuration to use<a name="line.1522"></a>
-<span class="sourceLineNo">1523</span>   * @return A Table instance for the created table.<a name="line.1523"></a>
-<span class="sourceLineNo">1524</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1524"></a>
-<span class="sourceLineNo">1525</span>   */<a name="line.1525"></a>
-<span class="sourceLineNo">1526</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1526"></a>
-<span class="sourceLineNo">1527</span>      Configuration c) throws IOException {<a name="line.1527"></a>
-<span class="sourceLineNo">1528</span>    // Disable blooms (they are on by default as of 0.95) but we disable them here because<a name="line.1528"></a>
-<span class="sourceLineNo">1529</span>    // tests have hard coded counts of what to expect in block cache, etc., and blooms being<a name="line.1529"></a>
-<span class="sourceLineNo">1530</span>    // on is interfering.<a name="line.1530"></a>
-<span class="sourceLineNo">1531</span>    return createTable(htd, families, splitKeys, BloomType.NONE, HConstants.DEFAULT_BLOCKSIZE, c);<a name="line.1531"></a>
-<span class="sourceLineNo">1532</span>  }<a name="line.1532"></a>
-<span class="sourceLineNo">1533</span><a name="line.1533"></a>
-<span class="sourceLineNo">1534</span>  /**<a name="line.1534"></a>
-<span class="sourceLineNo">1535</span>   * Create a table.<a name="line.1535"></a>
-<span class="sourceLineNo">1536</span>   * @param htd table descriptor<a name="line.1536"></a>
-<span class="sourceLineNo">1537</span>   * @param families array of column families<a name="line.1537"></a>
-<span class="sourceLineNo">1538</span>   * @param splitKeys array of split keys<a name="line.1538"></a>
-<span class="sourceLineNo">1539</span>   * @param type Bloom type<a name="line.1539"></a>
-<span class="sourceLineNo">1540</span>   * @param blockSize block size<a name="line.1540"></a>
-<span class="sourceLineNo">1541</span>   * @param c Configuration to use<a name="line.1541"></a>
-<span class="sourceLineNo">1542</span>   * @return A Table instance for the created table.<a name="line.1542"></a>
-<span class="sourceLineNo">1543</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1543"></a>
-<span class="sourceLineNo">1544</span>   */<a name="line.1544"></a>
-<span class="sourceLineNo">1545</span><a name="line.1545"></a>
-<span class="sourceLineNo">1546</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1546"></a>
-<span class="sourceLineNo">1547</span>      BloomType type, int blockSize, Configuration c) throws IOException {<a name="line.1547"></a>
-<span class="sourceLineNo">1548</span>    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1548"></a>
-<span class="sourceLineNo">1549</span>    for (byte[] family : families) {<a name="line.1549"></a>
-<span class="sourceLineNo">1550</span>      builder.setColumnFamily(<a name="line.1550"></a>
-<span class="sourceLineNo">1551</span>          ColumnFamilyDescriptorBuilder.newBuilder(family).setBloomFilterType(type)<a name="line.1551"></a>
-<span class="sourceLineNo">1552</span>              .setBlocksize(blockSize).build());<a name="line.1552"></a>
-<span class="sourceLineNo">1553</span>    }<a name="line.1553"></a>
-<span class="sourceLineNo">1554</span>    TableDescriptor td = builder.build();<a name="line.1554"></a>
-<span class="sourceLineNo">1555</span>    getAdmin().createTable(td, splitKeys);<a name="line.1555"></a>
-<span class="sourceLineNo">1556</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1556"></a>
-<span class="sourceLineNo">1557</span>    // we should wait until they are assigned<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>    waitUntilAllRegionsAssigned(td.getTableName());<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>    return getConnection().getTable(td.getTableName());<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  }<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span><a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>  /**<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>   * Create a table.<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>   * @param htd table descriptor<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>   * @param splitRows array of split keys<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>   * @return A Table instance for the created table.<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>   * @throws IOException<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>   */<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>  public Table createTable(TableDescriptor htd, byte[][] splitRows)<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>      throws IOException {<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>    getAdmin().createTable(htd, splitRows);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>    // we should wait until they are assigned<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>    waitUntilAllRegionsAssigned(htd.getTableName());<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    return getConnection().getTable(htd.getTableName());<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>  }<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span><a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>  /**<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>   * Create a table.<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>   * @param tableName the table name<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>   * @param families the families<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>   * @param splitKeys the split keys<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>   * @param replicaCount the replica count<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>   * @param c Configuration to use<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>   * @return A Table instance for the created table.<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>   * @throws IOException<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>   */<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>      int replicaCount, final Configuration c) throws IOException {<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>    htd.setRegionReplication(replicaCount);<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span>    return createTable(htd, families, splitKeys, c);<a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>  }<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span><a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>  /**<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>   * Create a table.<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>   * @param tableName<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>   * @param family<a name="line.1598"></a>
-<span class="sourceLineNo">1599</span>   * @param numVersions<a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>   * @return A Table instance for the created table.<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>   * @throws IOException<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>   */<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>  public Table createTable(TableName tableName, byte[] family, int numVersions)<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>  throws IOException {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>    return createTable(tableName, new byte[][]{family}, numVersions);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>  }<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span><a name="line.1607"></a>
-<span class="sourceLineNo">1608</span>  /**<a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>   * Create a table.<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>   * @param tableName<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>   * @param families<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>   * @param numVersions<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>   * @return A Table instance for the created table.<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>   * @throws IOException<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>   */<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>      throws IOException {<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>    return createTable(tableName, families, numVersions, (byte[][]) null);<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>  }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span><a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>  /**<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>   * Create a table.<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>   * @param tableName<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>   * @param families<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span>   * @param numVersions<a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>   * @param splitKeys<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>   * @return A Table instance for the created table.<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>   * @throws IOException<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>   */<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions,<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      byte[][] splitKeys) throws IOException {<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>    for (byte[] family : families) {<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span>      HColumnDescriptor hcd = new HColumnDescriptor(family).setMaxVersions(numVersions);<a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>      desc.addFamily(hcd);<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>    }<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>    getAdmin().createTable(desc, splitKeys);<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>    // assigned<a name="line.1639"></a>
-<span class="sourceLineNo">1640</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1640"></a>
-<span class="sourceLineNo">1641</span>    return getConnection().getTable(tableName);<a name="line.1641"></a>
-<span class="sourceLineNo">1642</span>  }<a name="line.1642"></a>
-<span class="sourceLineNo">1643</span><a name="line.1643"></a>
-<span class="sourceLineNo">1644</span>  /**<a name="line.1644"></a>
-<span class="sourceLineNo">1645</span>   * Create a table with multiple regions.<a name="line.1645"></a>
-<span class="sourceLineNo">1646</span>   * @param tableName<a name="line.1646"></a>
-<span class="sourceLineNo">1647</span>   * @param families<a name="line.1647"></a>
-<span class="sourceLineNo">1648</span>   * @param numVersions<a name="line.1648"></a>
+<span class="sourceLineNo">1354</span>  */<a name="line.1354"></a>
+<span class="sourceLineNo">1355</span>  public Path createWALRootDir() throws IOException {<a name="line.1355"></a>
+<span class="sourceLineNo">1356</span>    FileSystem fs = FileSystem.get(this.conf);<a name="line.1356"></a>
+<span class="sourceLineNo">1357</span>    Path walDir = getNewDataTestDirOnTestFS();<a name="line.1357"></a>
+<span class="sourceLineNo">1358</span>    FSUtils.setWALRootDir(this.conf, walDir);<a name="line.1358"></a>
+<span class="sourceLineNo">1359</span>    fs.mkdirs(walDir);<a name="line.1359"></a>
+<span class="sourceLineNo">1360</span>    return walDir;<a name="line.1360"></a>
+<span class="sourceLineNo">1361</span>  }<a name="line.1361"></a>
+<span class="sourceLineNo">1362</span><a name="line.1362"></a>
+<span class="sourceLineNo">1363</span>  private void setHBaseFsTmpDir() throws IOException {<a name="line.1363"></a>
+<span class="sourceLineNo">1364</span>    String hbaseFsTmpDirInString = this.conf.get("hbase.fs.tmp.dir");<a name="line.1364"></a>
+<span class="sourceLineNo">1365</span>    if (hbaseFsTmpDirInString == null) {<a name="line.1365"></a>
+<span class="sourceLineNo">1366</span>      this.conf.set("hbase.fs.tmp.dir",  getDataTestDirOnTestFS("hbase-staging").toString());<a name="line.1366"></a>
+<span class="sourceLineNo">1367</span>      LOG.info("Setting hbase.fs.tmp.dir to " + this.conf.get("hbase.fs.tmp.dir"));<a name="line.1367"></a>
+<span class="sourceLineNo">1368</span>    } else {<a name="line.1368"></a>
+<span class="sourceLineNo">1369</span>      LOG.info("The hbase.fs.tmp.dir is set to " + hbaseFsTmpDirInString);<a name="line.1369"></a>
+<span class="sourceLineNo">1370</span>    }<a name="line.1370"></a>
+<span class="sourceLineNo">1371</span>  }<a name="line.1371"></a>
+<span class="sourceLineNo">1372</span><a name="line.1372"></a>
+<span class="sourceLineNo">1373</span>  /**<a name="line.1373"></a>
+<span class="sourceLineNo">1374</span>   * Flushes all caches in the mini hbase cluster<a name="line.1374"></a>
+<span class="sourceLineNo">1375</span>   * @throws IOException<a name="line.1375"></a>
+<span class="sourceLineNo">1376</span>   */<a name="line.1376"></a>
+<span class="sourceLineNo">1377</span>  public void flush() throws IOException {<a name="line.1377"></a>
+<span class="sourceLineNo">1378</span>    getMiniHBaseCluster().flushcache();<a name="line.1378"></a>
+<span class="sourceLineNo">1379</span>  }<a name="line.1379"></a>
+<span class="sourceLineNo">1380</span><a name="line.1380"></a>
+<span class="sourceLineNo">1381</span>  /**<a name="line.1381"></a>
+<span class="sourceLineNo">1382</span>   * Flushes all caches in the mini hbase cluster<a name="line.1382"></a>
+<span class="sourceLineNo">1383</span>   * @throws IOException<a name="line.1383"></a>
+<span class="sourceLineNo">1384</span>   */<a name="line.1384"></a>
+<span class="sourceLineNo">1385</span>  public void flush(TableName tableName) throws IOException {<a name="line.1385"></a>
+<span class="sourceLineNo">1386</span>    getMiniHBaseCluster().flushcache(tableName);<a name="line.1386"></a>
+<span class="sourceLineNo">1387</span>  }<a name="line.1387"></a>
+<span class="sourceLineNo">1388</span><a name="line.1388"></a>
+<span class="sourceLineNo">1389</span>  /**<a name="line.1389"></a>
+<span class="sourceLineNo">1390</span>   * Compact all regions in the mini hbase cluster<a name="line.1390"></a>
+<span class="sourceLineNo">1391</span>   * @throws IOException<a name="line.1391"></a>
+<span class="sourceLineNo">1392</span>   */<a name="line.1392"></a>
+<span class="sourceLineNo">1393</span>  public void compact(boolean major) throws IOException {<a name="line.1393"></a>
+<span class="sourceLineNo">1394</span>    getMiniHBaseCluster().compact(major);<a name="line.1394"></a>
+<span class="sourceLineNo">1395</span>  }<a name="line.1395"></a>
+<span class="sourceLineNo">1396</span><a name="line.1396"></a>
+<span class="sourceLineNo">1397</span>  /**<a name="line.1397"></a>
+<span class="sourceLineNo">1398</span>   * Compact all of a table's reagion in the mini hbase cluster<a name="line.1398"></a>
+<span class="sourceLineNo">1399</span>   * @throws IOException<a name="line.1399"></a>
+<span class="sourceLineNo">1400</span>   */<a name="line.1400"></a>
+<span class="sourceLineNo">1401</span>  public void compact(TableName tableName, boolean major) throws IOException {<a name="line.1401"></a>
+<span class="sourceLineNo">1402</span>    getMiniHBaseCluster().compact(tableName, major);<a name="line.1402"></a>
+<span class="sourceLineNo">1403</span>  }<a name="line.1403"></a>
+<span class="sourceLineNo">1404</span><a name="line.1404"></a>
+<span class="sourceLineNo">1405</span>  /**<a name="line.1405"></a>
+<span class="sourceLineNo">1406</span>   * Create a table.<a name="line.1406"></a>
+<span class="sourceLineNo">1407</span>   * @param tableName<a name="line.1407"></a>
+<span class="sourceLineNo">1408</span>   * @param family<a name="line.1408"></a>
+<span class="sourceLineNo">1409</span>   * @return A Table instance for the created table.<a name="line.1409"></a>
+<span class="sourceLineNo">1410</span>   * @throws IOException<a name="line.1410"></a>
+<span class="sourceLineNo">1411</span>   */<a name="line.1411"></a>
+<span class="sourceLineNo">1412</span>  public Table createTable(TableName tableName, String family)<a name="line.1412"></a>
+<span class="sourceLineNo">1413</span>  throws IOException{<a name="line.1413"></a>
+<span class="sourceLineNo">1414</span>    return createTable(tableName, new String[]{family});<a name="line.1414"></a>
+<span class="sourceLineNo">1415</span>  }<a name="line.1415"></a>
+<span class="sourceLineNo">1416</span><a name="line.1416"></a>
+<span class="sourceLineNo">1417</span>  /**<a name="line.1417"></a>
+<span class="sourceLineNo">1418</span>   * Create a table.<a name="line.1418"></a>
+<span class="sourceLineNo">1419</span>   * @param tableName<a name="line.1419"></a>
+<span class="sourceLineNo">1420</span>   * @param families<a name="line.1420"></a>
+<span class="sourceLineNo">1421</span>   * @return A Table instance for the created table.<a name="line.1421"></a>
+<span class="sourceLineNo">1422</span>   * @throws IOException<a name="line.1422"></a>
+<span class="sourceLineNo">1423</span>   */<a name="line.1423"></a>
+<span class="sourceLineNo">1424</span>  public Table createTable(TableName tableName, String[] families)<a name="line.1424"></a>
+<span class="sourceLineNo">1425</span>  throws IOException {<a name="line.1425"></a>
+<span class="sourceLineNo">1426</span>    List&lt;byte[]&gt; fams = new ArrayList&lt;&gt;(families.length);<a name="line.1426"></a>
+<span class="sourceLineNo">1427</span>    for (String family : families) {<a name="line.1427"></a>
+<span class="sourceLineNo">1428</span>      fams.add(Bytes.toBytes(family));<a name="line.1428"></a>
+<span class="sourceLineNo">1429</span>    }<a name="line.1429"></a>
+<span class="sourceLineNo">1430</span>    return createTable(tableName, fams.toArray(new byte[0][]));<a name="line.1430"></a>
+<span class="sourceLineNo">1431</span>  }<a name="line.1431"></a>
+<span class="sourceLineNo">1432</span><a name="line.1432"></a>
+<span class="sourceLineNo">1433</span>  /**<a name="line.1433"></a>
+<span class="sourceLineNo">1434</span>   * Create a table.<a name="line.1434"></a>
+<span class="sourceLineNo">1435</span>   * @param tableName<a name="line.1435"></a>
+<span class="sourceLineNo">1436</span>   * @param family<a name="line.1436"></a>
+<span class="sourceLineNo">1437</span>   * @return A Table instance for the created table.<a name="line.1437"></a>
+<span class="sourceLineNo">1438</span>   * @throws IOException<a name="line.1438"></a>
+<span class="sourceLineNo">1439</span>   */<a name="line.1439"></a>
+<span class="sourceLineNo">1440</span>  public Table createTable(TableName tableName, byte[] family)<a name="line.1440"></a>
+<span class="sourceLineNo">1441</span>  throws IOException{<a name="line.1441"></a>
+<span class="sourceLineNo">1442</span>    return createTable(tableName, new byte[][]{family});<a name="line.1442"></a>
+<span class="sourceLineNo">1443</span>  }<a name="line.1443"></a>
+<span class="sourceLineNo">1444</span><a name="line.1444"></a>
+<span class="sourceLineNo">1445</span>  /**<a name="line.1445"></a>
+<span class="sourceLineNo">1446</span>   * Create a table with multiple regions.<a name="line.1446"></a>
+<span class="sourceLineNo">1447</span>   * @param tableName<a name="line.1447"></a>
+<span class="sourceLineNo">1448</span>   * @param family<a name="line.1448"></a>
+<span class="sourceLineNo">1449</span>   * @param numRegions<a name="line.1449"></a>
+<span class="sourceLineNo">1450</span>   * @return A Table instance for the created table.<a name="line.1450"></a>
+<span class="sourceLineNo">1451</span>   * @throws IOException<a name="line.1451"></a>
+<span class="sourceLineNo">1452</span>   */<a name="line.1452"></a>
+<span class="sourceLineNo">1453</span>  public Table createMultiRegionTable(TableName tableName, byte[] family, int numRegions)<a name="line.1453"></a>
+<span class="sourceLineNo">1454</span>      throws IOException {<a name="line.1454"></a>
+<span class="sourceLineNo">1455</span>    if (numRegions &lt; 3) throw new IOException("Must create at least 3 regions");<a name="line.1455"></a>
+<span class="sourceLineNo">1456</span>    byte[] startKey = Bytes.toBytes("aaaaa");<a name="line.1456"></a>
+<span class="sourceLineNo">1457</span>    byte[] endKey = Bytes.toBytes("zzzzz");<a name="line.1457"></a>
+<span class="sourceLineNo">1458</span>    byte[][] splitKeys = Bytes.split(startKey, endKey, numRegions - 3);<a name="line.1458"></a>
+<span class="sourceLineNo">1459</span><a name="line.1459"></a>
+<span class="sourceLineNo">1460</span>    return createTable(tableName, new byte[][] { family }, splitKeys);<a name="line.1460"></a>
+<span class="sourceLineNo">1461</span>  }<a name="line.1461"></a>
+<span class="sourceLineNo">1462</span><a name="line.1462"></a>
+<span class="sourceLineNo">1463</span>  /**<a name="line.1463"></a>
+<span class="sourceLineNo">1464</span>   * Create a table.<a name="line.1464"></a>
+<span class="sourceLineNo">1465</span>   * @param tableName<a name="line.1465"></a>
+<span class="sourceLineNo">1466</span>   * @param families<a name="line.1466"></a>
+<span class="sourceLineNo">1467</span>   * @return A Table instance for the created table.<a name="line.1467"></a>
+<span class="sourceLineNo">1468</span>   * @throws IOException<a name="line.1468"></a>
+<span class="sourceLineNo">1469</span>   */<a name="line.1469"></a>
+<span class="sourceLineNo">1470</span>  public Table createTable(TableName tableName, byte[][] families)<a name="line.1470"></a>
+<span class="sourceLineNo">1471</span>  throws IOException {<a name="line.1471"></a>
+<span class="sourceLineNo">1472</span>    return createTable(tableName, families, (byte[][]) null);<a name="line.1472"></a>
+<span class="sourceLineNo">1473</span>  }<a name="line.1473"></a>
+<span class="sourceLineNo">1474</span><a name="line.1474"></a>
+<span class="sourceLineNo">1475</span>  /**<a name="line.1475"></a>
+<span class="sourceLineNo">1476</span>   * Create a table with multiple regions.<a name="line.1476"></a>
+<span class="sourceLineNo">1477</span>   * @param tableName<a name="line.1477"></a>
+<span class="sourceLineNo">1478</span>   * @param families<a name="line.1478"></a>
+<span class="sourceLineNo">1479</span>   * @return A Table instance for the created table.<a name="line.1479"></a>
+<span class="sourceLineNo">1480</span>   * @throws IOException<a name="line.1480"></a>
+<span class="sourceLineNo">1481</span>   */<a name="line.1481"></a>
+<span class="sourceLineNo">1482</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families) throws IOException {<a name="line.1482"></a>
+<span class="sourceLineNo">1483</span>    return createTable(tableName, families, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1483"></a>
+<span class="sourceLineNo">1484</span>  }<a name="line.1484"></a>
+<span class="sourceLineNo">1485</span><a name="line.1485"></a>
+<span class="sourceLineNo">1486</span>  /**<a name="line.1486"></a>
+<span class="sourceLineNo">1487</span>   * Create a table.<a name="line.1487"></a>
+<span class="sourceLineNo">1488</span>   * @param tableName<a name="line.1488"></a>
+<span class="sourceLineNo">1489</span>   * @param families<a name="line.1489"></a>
+<span class="sourceLineNo">1490</span>   * @param splitKeys<a name="line.1490"></a>
+<span class="sourceLineNo">1491</span>   * @return A Table instance for the created table.<a name="line.1491"></a>
+<span class="sourceLineNo">1492</span>   * @throws IOException<a name="line.1492"></a>
+<span class="sourceLineNo">1493</span>   */<a name="line.1493"></a>
+<span class="sourceLineNo">1494</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys)<a name="line.1494"></a>
+<span class="sourceLineNo">1495</span>      throws IOException {<a name="line.1495"></a>
+<span class="sourceLineNo">1496</span>    return createTable(tableName, families, splitKeys, 1, new Configuration(getConfiguration()));<a name="line.1496"></a>
+<span class="sourceLineNo">1497</span>  }<a name="line.1497"></a>
+<span class="sourceLineNo">1498</span><a name="line.1498"></a>
+<span class="sourceLineNo">1499</span>  /**<a name="line.1499"></a>
+<span class="sourceLineNo">1500</span>   * Create a table.<a name="line.1500"></a>
+<span class="sourceLineNo">1501</span>   * @param tableName the table name<a name="line.1501"></a>
+<span class="sourceLineNo">1502</span>   * @param families the families<a name="line.1502"></a>
+<span class="sourceLineNo">1503</span>   * @param splitKeys the splitkeys<a name="line.1503"></a>
+<span class="sourceLineNo">1504</span>   * @param replicaCount the region replica count<a name="line.1504"></a>
+<span class="sourceLineNo">1505</span>   * @return A Table instance for the created table.<a name="line.1505"></a>
+<span class="sourceLineNo">1506</span>   * @throws IOException throws IOException<a name="line.1506"></a>
+<span class="sourceLineNo">1507</span>   */<a name="line.1507"></a>
+<span class="sourceLineNo">1508</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1508"></a>
+<span class="sourceLineNo">1509</span>      int replicaCount) throws IOException {<a name="line.1509"></a>
+<span class="sourceLineNo">1510</span>    return createTable(tableName, families, splitKeys, replicaCount,<a name="line.1510"></a>
+<span class="sourceLineNo">1511</span>      new Configuration(getConfiguration()));<a name="line.1511"></a>
+<span class="sourceLineNo">1512</span>  }<a name="line.1512"></a>
+<span class="sourceLineNo">1513</span><a name="line.1513"></a>
+<span class="sourceLineNo">1514</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1514"></a>
+<span class="sourceLineNo">1515</span>      int numVersions, byte[] startKey, byte[] endKey, int numRegions)<a name="line.1515"></a>
+<span class="sourceLineNo">1516</span>  throws IOException{<a name="line.1516"></a>
+<span class="sourceLineNo">1517</span>    HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions);<a name="line.1517"></a>
+<span class="sourceLineNo">1518</span><a name="line.1518"></a>
+<span class="sourceLineNo">1519</span>    getAdmin().createTable(desc, startKey, endKey, numRegions);<a name="line.1519"></a>
+<span class="sourceLineNo">1520</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we<a name="line.1520"></a>
+<span class="sourceLineNo">1521</span>    // should wait until they are assigned<a name="line.1521"></a>
+<span class="sourceLineNo">1522</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1522"></a>
+<span class="sourceLineNo">1523</span>    return getConnection().getTable(tableName);<a name="line.1523"></a>
+<span class="sourceLineNo">1524</span>  }<a name="line.1524"></a>
+<span class="sourceLineNo">1525</span><a name="line.1525"></a>
+<span class="sourceLineNo">1526</span>  /**<a name="line.1526"></a>
+<span class="sourceLineNo">1527</span>   * Create a table.<a name="line.1527"></a>
+<span class="sourceLineNo">1528</span>   * @param htd<a name="line.1528"></a>
+<span class="sourceLineNo">1529</span>   * @param families<a name="line.1529"></a>
+<span class="sourceLineNo">1530</span>   * @param c Configuration to use<a name="line.1530"></a>
+<span class="sourceLineNo">1531</span>   * @return A Table instance for the created table.<a name="line.1531"></a>
+<span class="sourceLineNo">1532</span>   * @throws IOException<a name="line.1532"></a>
+<span class="sourceLineNo">1533</span>   */<a name="line.1533"></a>
+<span class="sourceLineNo">1534</span>  public Table createTable(TableDescriptor htd, byte[][] families, Configuration c)<a name="line.1534"></a>
+<span class="sourceLineNo">1535</span>  throws IOException {<a name="line.1535"></a>
+<span class="sourceLineNo">1536</span>    return createTable(htd, families, null, c);<a name="line.1536"></a>
+<span class="sourceLineNo">1537</span>  }<a name="line.1537"></a>
+<span class="sourceLineNo">1538</span><a name="line.1538"></a>
+<span class="sourceLineNo">1539</span>  /**<a name="line.1539"></a>
+<span class="sourceLineNo">1540</span>   * Create a table.<a name="line.1540"></a>
+<span class="sourceLineNo">1541</span>   * @param htd table descriptor<a name="line.1541"></a>
+<span class="sourceLineNo">1542</span>   * @param families array of column families<a name="line.1542"></a>
+<span class="sourceLineNo">1543</span>   * @param splitKeys array of split keys<a name="line.1543"></a>
+<span class="sourceLineNo">1544</span>   * @param c Configuration to use<a name="line.1544"></a>
+<span class="sourceLineNo">1545</span>   * @return A Table instance for the created table.<a name="line.1545"></a>
+<span class="sourceLineNo">1546</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1546"></a>
+<span class="sourceLineNo">1547</span>   */<a name="line.1547"></a>
+<span class="sourceLineNo">1548</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1548"></a>
+<span class="sourceLineNo">1549</span>      Configuration c) throws IOException {<a name="line.1549"></a>
+<span class="sourceLineNo">1550</span>    // Disable blooms (they are on by default as of 0.95) but we disable them here because<a name="line.1550"></a>
+<span class="sourceLineNo">1551</span>    // tests have hard coded counts of what to expect in block cache, etc., and blooms being<a name="line.1551"></a>
+<span class="sourceLineNo">1552</span>    // on is interfering.<a name="line.1552"></a>
+<span class="sourceLineNo">1553</span>    return createTable(htd, families, splitKeys, BloomType.NONE, HConstants.DEFAULT_BLOCKSIZE, c);<a name="line.1553"></a>
+<span class="sourceLineNo">1554</span>  }<a name="line.1554"></a>
+<span class="sourceLineNo">1555</span><a name="line.1555"></a>
+<span class="sourceLineNo">1556</span>  /**<a name="line.1556"></a>
+<span class="sourceLineNo">1557</span>   * Create a table.<a name="line.1557"></a>
+<span class="sourceLineNo">1558</span>   * @param htd table descriptor<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>   * @param families array of column families<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>   * @param splitKeys array of split keys<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>   * @param type Bloom type<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>   * @param blockSize block size<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span>   * @param c Configuration to use<a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>   * @return A Table instance for the created table.<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>   * @throws IOException if getAdmin or createTable fails<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>   */<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span><a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>  public Table createTable(TableDescriptor htd, byte[][] families, byte[][] splitKeys,<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>      BloomType type, int blockSize, Configuration c) throws IOException {<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>    TableDescriptorBuilder builder = TableDescriptorBuilder.newBuilder(htd);<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>    for (byte[] family : families) {<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>      builder.setColumnFamily(<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>          ColumnFamilyDescriptorBuilder.newBuilder(family).setBloomFilterType(type)<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>              .setBlocksize(blockSize).build());<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>    }<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>    TableDescriptor td = builder.build();<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>    getAdmin().createTable(td, splitKeys);<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>    // we should wait until they are assigned<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    waitUntilAllRegionsAssigned(td.getTableName());<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>    return getConnection().getTable(td.getTableName());<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>  }<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span><a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>  /**<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>   * Create a table.<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>   * @param htd table descriptor<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>   * @param splitRows array of split keys<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>   * @return A Table instance for the created table.<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>   * @throws IOException<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>   */<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>  public Table createTable(TableDescriptor htd, byte[][] splitRows)<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>      throws IOException {<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>    getAdmin().createTable(htd, splitRows);<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>    // HBaseAdmin only waits for regions to appear in hbase:meta<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>    // we should wait until they are assigned<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>    waitUntilAllRegionsAssigned(htd.getTableName());<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>    return getConnection().getTable(htd.getTableName());<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>  }<a name="line.1598"></a>
+<span class="sourceLineNo">1599</span><a name="line.1599"></a>
+<span class="sourceLineNo">1600</span>  /**<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>   * Create a table.<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>   * @param tableName the table name<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>   * @param families the families<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>   * @param splitKeys the split keys<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>   * @param replicaCount the replica count<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span>   * @param c Configuration to use<a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>   * @return A Table instance for the created table.<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>   * @throws IOException<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>   */<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>  public Table createTable(TableName tableName, byte[][] families, byte[][] splitKeys,<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>      int replicaCount, final Configuration c) throws IOException {<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>    HTableDescriptor htd = new HTableDescriptor(tableName);<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>    htd.setRegionReplication(replicaCount);<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>    return createTable(htd, families, splitKeys, c);<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span>  }<a name="line.1615"></a>
+<span class="sourceLineNo">1616</span><a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>  /**<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>   * Create a table.<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>   * @param tableName<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>   * @param family<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>   * @param numVersions<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>   * @return A Table instance for the created table.<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>   * @throws IOException<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>   */<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>  public Table createTable(TableName tableName, byte[] family, int numVersions)<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>  throws IOException {<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>    return createTable(tableName, new byte[][]{family}, numVersions);<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>  }<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span><a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>  /**<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>   * Create a table.<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span>   * @param tableName<a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>   * @param families<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>   * @param numVersions<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>   * @return A Table instance for the created table.<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>   * @throws IOException<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>   */<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>  public Table createTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>      throws IOException {<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>    return createTable(tableName, families, numVersions, (byte[][]) null);<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span>  }<a name="line.1641"></a>
+<span class="sourceLineNo">1642</span><a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>  /**<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>   * Create a table.<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span>   * @param tableName<a name="line.1645"></a>
+<span class="sourceLineNo">1646</span>   * @param families<a name="line.1646"></a>
+<span class="sourceLineNo">1647</span>   * @param numVersions<a name="line.1647"></a>
+<span class="sourceLineNo">1648</span>   * @param splitKeys<a name="line.1648"></a>
 <span class="sourceLineNo">1649</span>   * @return A Table instance for the created table.<a name="line.1649"></a>
 <span class="sourceLineNo">1650</span>   * @throws IOException<a name="line.1650"></a>
 <span class="sourceLineNo">1651</span>   */<a name="line.1651"></a>
-<span class="sourceLineNo">1652</span>  public Table createMultiRegionTable(TableName tableName, byte[][] families, int numVersions)<a name="line.1652"></a>
-<span class="sourceLineNo">1653</span>      throws IOException {<a name="line.1653"></a>
-<span class="sourceLineNo">1654</span>    return createTable(tableName, families, numVersions, KEYS_FOR_HBA_CREATE_TABLE);<a name="line.1654"></a>
-<span class="sourceLineNo">1655</span>  }<a name="line.1655"></a>
-<span class="sourceLineNo">1656</span><a name="line.1656"></a>
-<span class="sourceLineNo">1657</span>  /**<a name="line.1657"></a>
-<span class="sourceLineNo">1658</span>   * Create a table.<a name="line.1658"></a>
-<span class="sourceLineNo">1659</span>   * @param tableName<a name="line.1659"></a>
-<span class="sourceLineNo">1660</span>   * @param families<a name="line.1660"></a>
-<span class="sourceLineNo">1661</span>   * @param numVersions<a name="line.1661"></a>
-<span class="sourceLineNo">1662</span>   * @param blockSize<a name="line.1662"></a>
-<span class="sourceLineNo">1663</span>   * @return A Table instance for the created table.<a name="line.1663"></a>
-<span class="sourceLineNo">1664</span>   * @throws IOException<a name="line.1664"></a>
-<span class="sourceLineNo">1665</span>   */<a name="line.1665"></a>
-<span class="sourceLineNo">1666</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1666"></a>
-<span class="sourceLineNo">1667</span>    int numVersions, int blockSize) throws IOException {<a name="line.1667"></a>
-<span class="sourceLineNo">1668</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1668"></a>
-<span class="sourceLineNo">1669</span>    for (byte[] family : families) {<a name="line.1669"></a>
-<span class="sourceLineNo">1670</span>      HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1670"></a>
-<span class="sourceLineNo">1671</span>          .setMaxVersions(numVersions)<a name="line.1671"></a>
-<span class="sourceLineNo">1672</span>          .setBlocksize(blockSize);<a name="line.1672"></a>
-<span class="sourceLineNo">1673</span>      desc.addFamily(hcd);<a name="line.1673"></a>
-<span class="sourceLineNo">1674</span>    }<a name="line.1674"></a>
-<span class="sourceLineNo">1675</span>    getAdmin().createTable(desc);<a name="line.1675"></a>
-<span class="sourceLineNo">1676</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1676"></a>
-<span class="sourceLineNo">1677</span>    // assigned<a name="line.1677"></a>
-<span class="sourceLineNo">1678</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1678"></a>
-<span class="sourceLineNo">1679</span>    return getConnection().getTable(tableName);<a name="line.1679"></a>
-<span class="sourceLineNo">1680</span>  }<a name="line.1680"></a>
-<span class="sourceLineNo">1681</span><a name="line.1681"></a>
-<span class="sourceLineNo">1682</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1682"></a>
-<span class="sourceLineNo">1683</span>      int numVersions, int blockSize, String cpName) throws IOException {<a name="line.1683"></a>
-<span class="sourceLineNo">1684</span>      HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1684"></a>
-<span class="sourceLineNo">1685</span>      for (byte[] family : families) {<a name="line.1685"></a>
-<span class="sourceLineNo">1686</span>        HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1686"></a>
-<span class="sourceLineNo">1687</span>            .setMaxVersions(numVersions)<a name="line.1687"></a>
-<span class="sourceLineNo">1688</span>            .setBlocksize(blockSize);<a name="line.1688"></a>
-<span class="sourceLineNo">1689</span>        desc.addFamily(hcd);<a name="line.1689"></a>
-<span class="sourceLineNo">1690</span>      }<a name="line.1690"></a>
-<span class="sourceLineNo">1691</span>      if(cpName != null) {<a name="line.1691"></a>
-<span class="sourceLineNo">1692</span>        desc.addCoprocessor(cpName);<a name="line.1692"></a>
-<span class="sourceLineNo">1693</span>      }<a name="line.1693"></a>
-<span class="sourceLineNo">1694</span>      getAdmin().createTable(desc);<a name="line.1694"></a>
-<span class="sourceLineNo">1695</span>      // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1695"></a>
-<span class="sourceLineNo">1696</span>      // assigned<a name="line.1696"></a>
-<span class="sourceLineNo">1697</span>      waitUntilAllRegionsAssigned(tableName);<a name="line.1697"></a>
-<span class="sourceLineNo">1698</span>      return getConnection().getTable(tableName);<a name="line.1698"></a>
-<span class="sourceLineNo">1699</span>    }<a name="line.1699"></a>
-<span class="sourceLineNo">1700</span><a name="line.1700"></a>
-<span class="sourceLineNo">1701</span>  /**<a name="line.1701"></a>
-<span class="sourceLineNo">1702</span>   * Create a table.<a name="line.1702"></a>
-<span class="sourceLineNo">1703</span>   * @param tableName<a name="line.1703"></a>
-<span class="sourceLineNo">1704</span>   * @param families<a name="line.1704"></a>
-<span class="sourceLineNo">1705</span>   * @param numVersions<a name="line.1705"></a>
-<span class="sourceLineNo">1706</span>   * @return A Table instance for the created table.<a name="line.1706"></a>
-<span class="sourceLineNo">1707</span>   * @throws IOException<a name="line.1707"></a>
-<span class="sourceLineNo">1708</span>   */<a name="line.1708"></a>
-<span class="sourceLineNo">1709</span>  public Table createTable(TableName tableName, byte[][] families,<a name="line.1709"></a>
-<span class="sourceLineNo">1710</span>      int[] numVersions)<a name="line.1710"></a>
-<span class="sourceLineNo">1711</span>  throws IOException {<a name="line.1711"></a>
-<span class="sourceLineNo">1712</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>    int i = 0;<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>    for (byte[] family : families) {<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>      HColumnDescriptor hcd = new HColumnDescriptor(family)<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>          .setMaxVersions(numVersions[i]);<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>      desc.addFamily(hcd);<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      i++;<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>    }<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>    getAdmin().createTable(desc);<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>    // assigned<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span>    return getConnection().getTable(tableName);<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>  }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span><a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>  /**<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>   * Create a table.<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>   * @param tableName<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>   * @param family<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>   * @param splitRows<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>   * @return A Table instance for the created table.<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>   * @throws IOException<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span>   */<a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>  public Table createTable(TableName tableName, byte[] family, byte[][] splitRows)<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>      throws IOException {<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    HTableDescriptor desc = new HTableDescriptor(tableName);<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>    HColumnDescriptor hcd = new HColumnDescriptor(family);<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>    desc.addFamily(hcd);<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>    getAdmin().createTable(desc, splitRows);<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>    // HBaseAdmin only waits for regions to appear in hbase:meta we should wait until they are<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>    // assigned<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>    waitUntilAllRegionsAssigned(tableName);<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>    return getConnection().getTable(tableName);<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>  }<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span><a name="line.1746"></a>
-<span class="sourceLineNo">1747</span>  /**<a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>   * Create a table with multiple regions.<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>   * @param tableName<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index 86842b3..468cf15 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -309,7 +309,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index cff1c62..4fe15c6 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -343,7 +343,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 799075a..7890a7b 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="20181129" />
+    <meta name="Date-Revision-yyyymmdd" content="20181130" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -530,7 +530,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-11-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-11-30</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testapidocs/index-all.html b/testapidocs/index-all.html
index 2b408c9..d299bb0 100644
--- a/testapidocs/index-all.html
+++ b/testapidocs/index-all.html
@@ -849,6 +849,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MiniHBaseCluster.html#killMaster-org.apache.hadoop.hbase.ServerName-">killMaster(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#killMiniHBaseCluster--">killMiniHBaseCluster()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
+<dd>
+<div class="block">Abruptly Shutdown HBase mini cluster.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MiniHBaseCluster.html#killNameNode-org.apache.hadoop.hbase.ServerName-">killNameNode(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MiniHBaseCluster.html#killRegionServer-org.apache.hadoop.hbase.ServerName-">killRegionServer(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></dt>
@@ -1177,7 +1181,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster--">shutdownMiniHBaseCluster()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
 <dd>
-<div class="block">Shutdown HBase mini cluster.</div>
+<div class="block">Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster--">shutdownMiniMapReduceCluster()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
 <dd>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html
index c62e029..36ceec7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/ConnectionImplementation.html
@@ -634,7 +634,7 @@
 <span class="sourceLineNo">626</span>    checkClosed();<a name="line.626"></a>
 <span class="sourceLineNo">627</span>    try {<a name="line.627"></a>
 <span class="sourceLineNo">628</span>      if (!isTableEnabled(tableName)) {<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        LOG.debug("Table " + tableName + " not enabled");<a name="line.629"></a>
+<span class="sourceLineNo">629</span>        LOG.debug("Table {} not enabled", tableName);<a name="line.629"></a>
 <span class="sourceLineNo">630</span>        return false;<a name="line.630"></a>
 <span class="sourceLineNo">631</span>      }<a name="line.631"></a>
 <span class="sourceLineNo">632</span>      List&lt;Pair&lt;RegionInfo, ServerName&gt;&gt; locations =<a name="line.632"></a>
@@ -645,1411 +645,1407 @@
 <span class="sourceLineNo">637</span>      for (Pair&lt;RegionInfo, ServerName&gt; pair : locations) {<a name="line.637"></a>
 <span class="sourceLineNo">638</span>        RegionInfo info = pair.getFirst();<a name="line.638"></a>
 <span class="sourceLineNo">639</span>        if (pair.getSecond() == null) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          if (LOG.isDebugEnabled()) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>            LOG.debug("Table " + tableName + " has not deployed region " + pair.getFirst()<a name="line.641"></a>
-<span class="sourceLineNo">642</span>                .getEncodedName());<a name="line.642"></a>
-<span class="sourceLineNo">643</span>          }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>          notDeployed++;<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        } else if (splitKeys != null<a name="line.645"></a>
-<span class="sourceLineNo">646</span>            &amp;&amp; !Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>          for (byte[] splitKey : splitKeys) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>            // Just check if the splitkey is available<a name="line.648"></a>
-<span class="sourceLineNo">649</span>            if (Bytes.equals(info.getStartKey(), splitKey)) {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>              regionCount++;<a name="line.650"></a>
-<span class="sourceLineNo">651</span>              break;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>            }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>          }<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        } else {<a name="line.654"></a>
-<span class="sourceLineNo">655</span>          // Always empty start row should be counted<a name="line.655"></a>
-<span class="sourceLineNo">656</span>          regionCount++;<a name="line.656"></a>
-<span class="sourceLineNo">657</span>        }<a name="line.657"></a>
-<span class="sourceLineNo">658</span>      }<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      if (notDeployed &gt; 0) {<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        if (LOG.isDebugEnabled()) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>          LOG.debug("Table " + tableName + " has " + notDeployed + " regions");<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        }<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        return false;<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      } else if (splitKeys != null &amp;&amp; regionCount != splitKeys.length + 1) {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        if (LOG.isDebugEnabled()) {<a name="line.665"></a>
-<span class="sourceLineNo">666</span>          LOG.debug("Table " + tableName + " expected to have " + (splitKeys.length + 1)<a name="line.666"></a>
-<span class="sourceLineNo">667</span>              + " regions, but only " + regionCount + " available");<a name="line.667"></a>
-<span class="sourceLineNo">668</span>        }<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        return false;<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      } else {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>        if (LOG.isDebugEnabled()) {<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          LOG.debug("Table " + tableName + " should be available");<a name="line.672"></a>
-<span class="sourceLineNo">673</span>        }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>        return true;<a name="line.674"></a>
-<span class="sourceLineNo">675</span>      }<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    } catch (TableNotFoundException tnfe) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>      LOG.warn("Table " + tableName + " not enabled, it is not exists");<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      return false;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    }<a name="line.679"></a>
-<span class="sourceLineNo">680</span>  }<a name="line.680"></a>
-<span class="sourceLineNo">681</span><a name="line.681"></a>
-<span class="sourceLineNo">682</span>  @Override<a name="line.682"></a>
-<span class="sourceLineNo">683</span>  public HRegionLocation locateRegion(final byte[] regionName) throws IOException {<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    RegionLocations locations = locateRegion(RegionInfo.getTable(regionName),<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      RegionInfo.getStartKey(regionName), false, true);<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    return locations == null ? null : locations.getRegionLocation();<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  }<a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>  private boolean isDeadServer(ServerName sn) {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    if (clusterStatusListener == null) {<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      return false;<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    } else {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>      return clusterStatusListener.isDeadServer(sn);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    }<a name="line.694"></a>
-<span class="sourceLineNo">695</span>  }<a name="line.695"></a>
-<span class="sourceLineNo">696</span><a name="line.696"></a>
-<span class="sourceLineNo">697</span>  @Override<a name="line.697"></a>
-<span class="sourceLineNo">698</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName) throws IOException {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    return locateRegions(tableName, false, true);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  }<a name="line.700"></a>
-<span class="sourceLineNo">701</span><a name="line.701"></a>
-<span class="sourceLineNo">702</span>  @Override<a name="line.702"></a>
-<span class="sourceLineNo">703</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName, boolean useCache,<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      boolean offlined) throws IOException {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    List&lt;RegionInfo&gt; regions;<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.706"></a>
-<span class="sourceLineNo">707</span>      regions = Collections.singletonList(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    } else {<a name="line.708"></a>
-<span class="sourceLineNo">709</span>      regions = MetaTableAccessor.getTableRegions(this, tableName, !offlined);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    }<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;&gt;();<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    for (RegionInfo regionInfo : regions) {<a name="line.712"></a>
-<span class="sourceLineNo">713</span>      if (!RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.713"></a>
-<span class="sourceLineNo">714</span>        continue;<a name="line.714"></a>
-<span class="sourceLineNo">715</span>      }<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      RegionLocations list = locateRegion(tableName, regionInfo.getStartKey(), useCache, true);<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      if (list != null) {<a name="line.717"></a>
-<span class="sourceLineNo">718</span>        for (HRegionLocation loc : list.getRegionLocations()) {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>          if (loc != null) {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>            locations.add(loc);<a name="line.720"></a>
-<span class="sourceLineNo">721</span>          }<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        }<a name="line.722"></a>
-<span class="sourceLineNo">723</span>      }<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    }<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return locations;<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>  @Override<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  public HRegionLocation locateRegion(final TableName tableName, final byte[] row)<a name="line.729"></a>
-<span class="sourceLineNo">730</span>      throws IOException {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    RegionLocations locations = locateRegion(tableName, row, true, true);<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    return locations == null ? null : locations.getRegionLocation();<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>  @Override<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  public HRegionLocation relocateRegion(final TableName tableName, final byte[] row)<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      throws IOException {<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    RegionLocations locations =<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      relocateRegion(tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    return locations == null ? null<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      : locations.getRegionLocation(RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.741"></a>
-<span class="sourceLineNo">742</span>  }<a name="line.742"></a>
-<span class="sourceLineNo">743</span><a name="line.743"></a>
-<span class="sourceLineNo">744</span>  @Override<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  public RegionLocations relocateRegion(final TableName tableName,<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      final byte [] row, int replicaId) throws IOException{<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    // Since this is an explicit request not to use any caching, finding<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    // disabled tables should not be desirable.  This will ensure that an exception is thrown when<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    // the first time a disabled table is interacted with.<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    if (!tableName.equals(TableName.META_TABLE_NAME) &amp;&amp; isTableDisabled(tableName)) {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>      throw new TableNotEnabledException(tableName.getNameAsString() + " is disabled.");<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    }<a name="line.752"></a>
-<span class="sourceLineNo">753</span><a name="line.753"></a>
-<span class="sourceLineNo">754</span>    return locateRegion(tableName, row, false, true, replicaId);<a name="line.754"></a>
-<span class="sourceLineNo">755</span>  }<a name="line.755"></a>
-<span class="sourceLineNo">756</span><a name="line.756"></a>
-<span class="sourceLineNo">757</span>  @Override<a name="line.757"></a>
-<span class="sourceLineNo">758</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.758"></a>
-<span class="sourceLineNo">759</span>      boolean retry) throws IOException {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>    return locateRegion(tableName, row, useCache, retry, RegionReplicaUtil.DEFAULT_REPLICA_ID);<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>  @Override<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.764"></a>
-<span class="sourceLineNo">765</span>      boolean retry, int replicaId) throws IOException {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    checkClosed();<a name="line.766"></a>
-<span class="sourceLineNo">767</span>    if (tableName == null || tableName.getName().length == 0) {<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      throw new IllegalArgumentException("table name cannot be null or zero length");<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    }<a name="line.769"></a>
-<span class="sourceLineNo">770</span>    if (tableName.equals(TableName.META_TABLE_NAME)) {<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      return locateMeta(tableName, useCache, replicaId);<a name="line.771"></a>
-<span class="sourceLineNo">772</span>    } else {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      // Region not in the cache - have to go to the meta RS<a name="line.773"></a>
-<span class="sourceLineNo">774</span>      return locateRegionInMeta(tableName, row, useCache, retry, replicaId);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>    }<a name="line.775"></a>
-<span class="sourceLineNo">776</span>  }<a name="line.776"></a>
-<span class="sourceLineNo">777</span><a name="line.777"></a>
-<span class="sourceLineNo">778</span>  private RegionLocations locateMeta(final TableName tableName,<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      boolean useCache, int replicaId) throws IOException {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    // HBASE-10785: We cache the location of the META itself, so that we are not overloading<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // zookeeper with one request for every region lookup. We cache the META with empty row<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // key in MetaCache.<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    byte[] metaCacheKey = HConstants.EMPTY_START_ROW; // use byte[0] as the row for meta<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    RegionLocations locations = null;<a name="line.784"></a>
-<span class="sourceLineNo">785</span>    if (useCache) {<a name="line.785"></a>
-<span class="sourceLineNo">786</span>      locations = getCachedLocation(tableName, metaCacheKey);<a name="line.786"></a>
-<span class="sourceLineNo">787</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.787"></a>
-<span class="sourceLineNo">788</span>        return locations;<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      }<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    }<a name="line.790"></a>
-<span class="sourceLineNo">791</span><a name="line.791"></a>
-<span class="sourceLineNo">792</span>    // only one thread should do the lookup.<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    synchronized (metaRegionLock) {<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      // Check the cache again for a hit in case some other thread made the<a name="line.794"></a>
-<span class="sourceLineNo">795</span>      // same query while we were waiting on the lock.<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      if (useCache) {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>        locations = getCachedLocation(tableName, metaCacheKey);<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.798"></a>
-<span class="sourceLineNo">799</span>          return locations;<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>      // Look up from zookeeper<a name="line.803"></a>
-<span class="sourceLineNo">804</span>      locations = get(this.registry.getMetaRegionLocation());<a name="line.804"></a>
-<span class="sourceLineNo">805</span>      if (locations != null) {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>        cacheLocation(tableName, locations);<a name="line.806"></a>
-<span class="sourceLineNo">807</span>      }<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    }<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    return locations;<a name="line.809"></a>
-<span class="sourceLineNo">810</span>  }<a name="line.810"></a>
-<span class="sourceLineNo">811</span><a name="line.811"></a>
-<span class="sourceLineNo">812</span>  /**<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * Search the hbase:meta table for the HRegionLocation info that contains the table and row we're<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * seeking.<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   */<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, boolean useCache,<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      boolean retry, int replicaId) throws IOException {<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    // If we are supposed to be using the cache, look in the cache to see if we already have the<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    // region.<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    if (useCache) {<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      RegionLocations locations = getCachedLocation(tableName, row);<a name="line.821"></a>
-<span class="sourceLineNo">822</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.822"></a>
-<span class="sourceLineNo">823</span>        return locations;<a name="line.823"></a>
-<span class="sourceLineNo">824</span>      }<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    }<a name="line.825"></a>
-<span class="sourceLineNo">826</span>    // build the key of the meta region we should be looking for.<a name="line.826"></a>
-<span class="sourceLineNo">827</span>    // the extra 9's on the end are necessary to allow "exact" matches<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    // without knowing the precise region names.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>    byte[] metaStartKey = RegionInfo.createRegionName(tableName, row, HConstants.NINES, false);<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    byte[] metaStopKey =<a name="line.830"></a>
-<span class="sourceLineNo">831</span>      RegionInfo.createRegionName(tableName, HConstants.EMPTY_START_ROW, "", false);<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    Scan s = new Scan().withStartRow(metaStartKey).withStopRow(metaStopKey, true)<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      .addFamily(HConstants.CATALOG_FAMILY).setReversed(true).setCaching(5)<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      .setReadType(ReadType.PREAD);<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    if (this.useMetaReplicas) {<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      s.setConsistency(Consistency.TIMELINE);<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    }<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    int maxAttempts = (retry ? numTries : 1);<a name="line.838"></a>
-<span class="sourceLineNo">839</span>    boolean relocateMeta = false;<a name="line.839"></a>
-<span class="sourceLineNo">840</span>    for (int tries = 0; ; tries++) {<a name="line.840"></a>
-<span class="sourceLineNo">841</span>      if (tries &gt;= maxAttempts) {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>        throw new NoServerForRegionException("Unable to find region for "<a name="line.842"></a>
-<span class="sourceLineNo">843</span>            + Bytes.toStringBinary(row) + " in " + tableName + " after " + tries + " tries.");<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      }<a name="line.844"></a>
-<span class="sourceLineNo">845</span>      if (useCache) {<a name="line.845"></a>
-<span class="sourceLineNo">846</span>        RegionLocations locations = getCachedLocation(tableName, row);<a name="line.846"></a>
-<span class="sourceLineNo">847</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.847"></a>
-<span class="sourceLineNo">848</span>          return locations;<a name="line.848"></a>
-<span class="sourceLineNo">849</span>        }<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      } else {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>        // If we are not supposed to be using the cache, delete any existing cached location<a name="line.851"></a>
-<span class="sourceLineNo">852</span>        // so it won't interfere.<a name="line.852"></a>
-<span class="sourceLineNo">853</span>        // We are only supposed to clean the cache for the specific replicaId<a name="line.853"></a>
-<span class="sourceLineNo">854</span>        metaCache.clearCache(tableName, row, replicaId);<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      }<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      // Query the meta region<a name="line.856"></a>
-<span class="sourceLineNo">857</span>      long pauseBase = this.pause;<a name="line.857"></a>
-<span class="sourceLineNo">858</span>      userRegionLock.lock();<a name="line.858"></a>
-<span class="sourceLineNo">859</span>      try {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>        if (useCache) {// re-check cache after get lock<a name="line.860"></a>
-<span class="sourceLineNo">861</span>          RegionLocations locations = getCachedLocation(tableName, row);<a name="line.861"></a>
-<span class="sourceLineNo">862</span>          if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.862"></a>
-<span class="sourceLineNo">863</span>            return locations;<a name="line.863"></a>
-<span class="sourceLineNo">864</span>          }<a name="line.864"></a>
+<span class="sourceLineNo">640</span>          LOG.debug("Table {} has not deployed region {}", tableName,<a name="line.640"></a>
+<span class="sourceLineNo">641</span>              pair.getFirst().getEncodedName());<a name="line.641"></a>
+<span class="sourceLineNo">642</span>          notDeployed++;<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        } else if (splitKeys != null<a name="line.643"></a>
+<span class="sourceLineNo">644</span>            &amp;&amp; !Bytes.equals(info.getStartKey(), HConstants.EMPTY_BYTE_ARRAY)) {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>          for (byte[] splitKey : splitKeys) {<a name="line.645"></a>
+<span class="sourceLineNo">646</span>            // Just check if the splitkey is available<a name="line.646"></a>
+<span class="sourceLineNo">647</span>            if (Bytes.equals(info.getStartKey(), splitKey)) {<a name="line.647"></a>
+<span class="sourceLineNo">648</span>              regionCount++;<a name="line.648"></a>
+<span class="sourceLineNo">649</span>              break;<a name="line.649"></a>
+<span class="sourceLineNo">650</span>            }<a name="line.650"></a>
+<span class="sourceLineNo">651</span>          }<a name="line.651"></a>
+<span class="sourceLineNo">652</span>        } else {<a name="line.652"></a>
+<span class="sourceLineNo">653</span>          // Always empty start row should be counted<a name="line.653"></a>
+<span class="sourceLineNo">654</span>          regionCount++;<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        }<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      if (notDeployed &gt; 0) {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>        if (LOG.isDebugEnabled()) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>          LOG.debug("Table {} has {} regions not deployed", tableName, notDeployed);<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        }<a name="line.660"></a>
+<span class="sourceLineNo">661</span>        return false;<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      } else if (splitKeys != null &amp;&amp; regionCount != splitKeys.length + 1) {<a name="line.662"></a>
+<span class="sourceLineNo">663</span>        if (LOG.isDebugEnabled()) {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>          LOG.debug("Table {} expected to have {} regions, but only {} available", tableName,<a name="line.664"></a>
+<span class="sourceLineNo">665</span>              splitKeys.length + 1, regionCount);<a name="line.665"></a>
+<span class="sourceLineNo">666</span>        }<a name="line.666"></a>
+<span class="sourceLineNo">667</span>        return false;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>      } else {<a name="line.668"></a>
+<span class="sourceLineNo">669</span>        LOG.trace("Table {} should be available", tableName);<a name="line.669"></a>
+<span class="sourceLineNo">670</span>        return true;<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    } catch (TableNotFoundException tnfe) {<a name="line.672"></a>
+<span class="sourceLineNo">673</span>      LOG.warn("Table {} does not exist", tableName);<a name="line.673"></a>
+<span class="sourceLineNo">674</span>      return false;<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
+<span class="sourceLineNo">676</span>  }<a name="line.676"></a>
+<span class="sourceLineNo">677</span><a name="line.677"></a>
+<span class="sourceLineNo">678</span>  @Override<a name="line.678"></a>
+<span class="sourceLineNo">679</span>  public HRegionLocation locateRegion(final byte[] regionName) throws IOException {<a name="line.679"></a>
+<span class="sourceLineNo">680</span>    RegionLocations locations = locateRegion(RegionInfo.getTable(regionName),<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      RegionInfo.getStartKey(regionName), false, true);<a name="line.681"></a>
+<span class="sourceLineNo">682</span>    return locations == null ? null : locations.getRegionLocation();<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>  private boolean isDeadServer(ServerName sn) {<a name="line.685"></a>
+<span class="sourceLineNo">686</span>    if (clusterStatusListener == null) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>      return false;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    } else {<a name="line.688"></a>
+<span class="sourceLineNo">689</span>      return clusterStatusListener.isDeadServer(sn);<a name="line.689"></a>
+<span class="sourceLineNo">690</span>    }<a name="line.690"></a>
+<span class="sourceLineNo">691</span>  }<a name="line.691"></a>
+<span class="sourceLineNo">692</span><a name="line.692"></a>
+<span class="sourceLineNo">693</span>  @Override<a name="line.693"></a>
+<span class="sourceLineNo">694</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName) throws IOException {<a name="line.694"></a>
+<span class="sourceLineNo">695</span>    return locateRegions(tableName, false, true);<a name="line.695"></a>
+<span class="sourceLineNo">696</span>  }<a name="line.696"></a>
+<span class="sourceLineNo">697</span><a name="line.697"></a>
+<span class="sourceLineNo">698</span>  @Override<a name="line.698"></a>
+<span class="sourceLineNo">699</span>  public List&lt;HRegionLocation&gt; locateRegions(TableName tableName, boolean useCache,<a name="line.699"></a>
+<span class="sourceLineNo">700</span>      boolean offlined) throws IOException {<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    List&lt;RegionInfo&gt; regions;<a name="line.701"></a>
+<span class="sourceLineNo">702</span>    if (TableName.isMetaTableName(tableName)) {<a name="line.702"></a>
+<span class="sourceLineNo">703</span>      regions = Collections.singletonList(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    } else {<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      regions = MetaTableAccessor.getTableRegions(this, tableName, !offlined);<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    }<a name="line.706"></a>
+<span class="sourceLineNo">707</span>    List&lt;HRegionLocation&gt; locations = new ArrayList&lt;&gt;();<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    for (RegionInfo regionInfo : regions) {<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      if (!RegionReplicaUtil.isDefaultReplica(regionInfo)) {<a name="line.709"></a>
+<span class="sourceLineNo">710</span>        continue;<a name="line.710"></a>
+<span class="sourceLineNo">711</span>      }<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      RegionLocations list = locateRegion(tableName, regionInfo.getStartKey(), useCache, true);<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      if (list != null) {<a name="line.713"></a>
+<span class="sourceLineNo">714</span>        for (HRegionLocation loc : list.getRegionLocations()) {<a name="line.714"></a>
+<span class="sourceLineNo">715</span>          if (loc != null) {<a name="line.715"></a>
+<span class="sourceLineNo">716</span>            locations.add(loc);<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>      }<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    }<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    return locations;<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">723</span><a name="line.723"></a>
+<span class="sourceLineNo">724</span>  @Override<a name="line.724"></a>
+<span class="sourceLineNo">725</span>  public HRegionLocation locateRegion(final TableName tableName, final byte[] row)<a name="line.725"></a>
+<span class="sourceLineNo">726</span>      throws IOException {<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    RegionLocations locations = locateRegion(tableName, row, true, true);<a name="line.727"></a>
+<span class="sourceLineNo">728</span>    return locations == null ? null : locations.getRegionLocation();<a name="line.728"></a>
+<span class="sourceLineNo">729</span>  }<a name="line.729"></a>
+<span class="sourceLineNo">730</span><a name="line.730"></a>
+<span class="sourceLineNo">731</span>  @Override<a name="line.731"></a>
+<span class="sourceLineNo">732</span>  public HRegionLocation relocateRegion(final TableName tableName, final byte[] row)<a name="line.732"></a>
+<span class="sourceLineNo">733</span>      throws IOException {<a name="line.733"></a>
+<span class="sourceLineNo">734</span>    RegionLocations locations =<a name="line.734"></a>
+<span class="sourceLineNo">735</span>      relocateRegion(tableName, row, RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    return locations == null ? null<a name="line.736"></a>
+<span class="sourceLineNo">737</span>      : locations.getRegionLocation(RegionReplicaUtil.DEFAULT_REPLICA_ID);<a name="line.737"></a>
+<span class="sourceLineNo">738</span>  }<a name="line.738"></a>
+<span class="sourceLineNo">739</span><a name="line.739"></a>
+<span class="sourceLineNo">740</span>  @Override<a name="line.740"></a>
+<span class="sourceLineNo">741</span>  public RegionLocations relocateRegion(final TableName tableName,<a name="line.741"></a>
+<span class="sourceLineNo">742</span>      final byte [] row, int replicaId) throws IOException{<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    // Since this is an explicit request not to use any caching, finding<a name="line.743"></a>
+<span class="sourceLineNo">744</span>    // disabled tables should not be desirable.  This will ensure that an exception is thrown when<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    // the first time a disabled table is interacted with.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>    if (!tableName.equals(TableName.META_TABLE_NAME) &amp;&amp; isTableDisabled(tableName)) {<a name="line.746"></a>
+<span class="sourceLineNo">747</span>      throw new TableNotEnabledException(tableName.getNameAsString() + " is disabled.");<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    }<a name="line.748"></a>
+<span class="sourceLineNo">749</span><a name="line.749"></a>
+<span class="sourceLineNo">750</span>    return locateRegion(tableName, row, false, true, replicaId);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>  }<a name="line.751"></a>
+<span class="sourceLineNo">752</span><a name="line.752"></a>
+<span class="sourceLineNo">753</span>  @Override<a name="line.753"></a>
+<span class="sourceLineNo">754</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      boolean retry) throws IOException {<a name="line.755"></a>
+<span class="sourceLineNo">756</span>    return locateRegion(tableName, row, useCache, retry, RegionReplicaUtil.DEFAULT_REPLICA_ID);<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>  @Override<a name="line.759"></a>
+<span class="sourceLineNo">760</span>  public RegionLocations locateRegion(final TableName tableName, final byte[] row, boolean useCache,<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      boolean retry, int replicaId) throws IOException {<a name="line.761"></a>
+<span class="sourceLineNo">762</span>    checkClosed();<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    if (tableName == null || tableName.getName().length == 0) {<a name="line.763"></a>
+<span class="sourceLineNo">764</span>      throw new IllegalArgumentException("table name cannot be null or zero length");<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    }<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    if (tableName.equals(TableName.META_TABLE_NAME)) {<a name="line.766"></a>
+<span class="sourceLineNo">767</span>      return locateMeta(tableName, useCache, replicaId);<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    } else {<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      // Region not in the cache - have to go to the meta RS<a name="line.769"></a>
+<span class="sourceLineNo">770</span>      return locateRegionInMeta(tableName, row, useCache, retry, replicaId);<a name="line.770"></a>
+<span class="sourceLineNo">771</span>    }<a name="line.771"></a>
+<span class="sourceLineNo">772</span>  }<a name="line.772"></a>
+<span class="sourceLineNo">773</span><a name="line.773"></a>
+<span class="sourceLineNo">774</span>  private RegionLocations locateMeta(final TableName tableName,<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      boolean useCache, int replicaId) throws IOException {<a name="line.775"></a>
+<span class="sourceLineNo">776</span>    // HBASE-10785: We cache the location of the META itself, so that we are not overloading<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    // zookeeper with one request for every region lookup. We cache the META with empty row<a name="line.777"></a>
+<span class="sourceLineNo">778</span>    // key in MetaCache.<a name="line.778"></a>
+<span class="sourceLineNo">779</span>    byte[] metaCacheKey = HConstants.EMPTY_START_ROW; // use byte[0] as the row for meta<a name="line.779"></a>
+<span class="sourceLineNo">780</span>    RegionLocations locations = null;<a name="line.780"></a>
+<span class="sourceLineNo">781</span>    if (useCache) {<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      locations = getCachedLocation(tableName, metaCacheKey);<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.783"></a>
+<span class="sourceLineNo">784</span>        return locations;<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>    // only one thread should do the lookup.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>    synchronized (metaRegionLock) {<a name="line.789"></a>
+<span class="sourceLineNo">790</span>      // Check the cache again for a hit in case some other thread made the<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      // same query while we were waiting on the lock.<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      if (useCache) {<a name="line.792"></a>
+<span class="sourceLineNo">793</span>        locations = getCachedLocation(tableName, metaCacheKey);<a name="line.793"></a>
+<span class="sourceLineNo">794</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.794"></a>
+<span class="sourceLineNo">795</span>          return locations;<a name="line.795"></a>
+<span class="sourceLineNo">796</span>        }<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      }<a name="line.797"></a>
+<span class="sourceLineNo">798</span><a name="line.798"></a>
+<span class="sourceLineNo">799</span>      // Look up from zookeeper<a name="line.799"></a>
+<span class="sourceLineNo">800</span>      locations = get(this.registry.getMetaRegionLocation());<a name="line.800"></a>
+<span class="sourceLineNo">801</span>      if (locations != null) {<a name="line.801"></a>
+<span class="sourceLineNo">802</span>        cacheLocation(tableName, locations);<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>    return locations;<a name="line.805"></a>
+<span class="sourceLineNo">806</span>  }<a name="line.806"></a>
+<span class="sourceLineNo">807</span><a name="line.807"></a>
+<span class="sourceLineNo">808</span>  /**<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   * Search the hbase:meta table for the HRegionLocation info that contains the table and row we're<a name="line.809"></a>
+<span class="sourceLineNo">810</span>   * seeking.<a name="line.810"></a>
+<span class="sourceLineNo">811</span>   */<a name="line.811"></a>
+<span class="sourceLineNo">812</span>  private RegionLocations locateRegionInMeta(TableName tableName, byte[] row, boolean useCache,<a name="line.812"></a>
+<span class="sourceLineNo">813</span>      boolean retry, int replicaId) throws IOException {<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    // If we are supposed to be using the cache, look in the cache to see if we already have the<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    // region.<a name="line.815"></a>
+<span class="sourceLineNo">816</span>    if (useCache) {<a name="line.816"></a>
+<span class="sourceLineNo">817</span>      RegionLocations locations = getCachedLocation(tableName, row);<a name="line.817"></a>
+<span class="sourceLineNo">818</span>      if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.818"></a>
+<span class="sourceLineNo">819</span>        return locations;<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      }<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    }<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    // build the key of the meta region we should be looking for.<a name="line.822"></a>
+<span class="sourceLineNo">823</span>    // the extra 9's on the end are necessary to allow "exact" matches<a name="line.823"></a>
+<span class="sourceLineNo">824</span>    // without knowing the precise region names.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>    byte[] metaStartKey = RegionInfo.createRegionName(tableName, row, HConstants.NINES, false);<a name="line.825"></a>
+<span class="sourceLineNo">826</span>    byte[] metaStopKey =<a name="line.826"></a>
+<span class="sourceLineNo">827</span>      RegionInfo.createRegionName(tableName, HConstants.EMPTY_START_ROW, "", false);<a name="line.827"></a>
+<span class="sourceLineNo">828</span>    Scan s = new Scan().withStartRow(metaStartKey).withStopRow(metaStopKey, true)<a name="line.828"></a>
+<span class="sourceLineNo">829</span>      .addFamily(HConstants.CATALOG_FAMILY).setReversed(true).setCaching(5)<a name="line.829"></a>
+<span class="sourceLineNo">830</span>      .setReadType(ReadType.PREAD);<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    if (this.useMetaReplicas) {<a name="line.831"></a>
+<span class="sourceLineNo">832</span>      s.setConsistency(Consistency.TIMELINE);<a name="line.832"></a>
+<span class="sourceLineNo">833</span>    }<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    int maxAttempts = (retry ? numTries : 1);<a name="line.834"></a>
+<span class="sourceLineNo">835</span>    boolean relocateMeta = false;<a name="line.835"></a>
+<span class="sourceLineNo">836</span>    for (int tries = 0; ; tries++) {<a name="line.836"></a>
+<span class="sourceLineNo">837</span>      if (tries &gt;= maxAttempts) {<a name="line.837"></a>
+<span class="sourceLineNo">838</span>        throw new NoServerForRegionException("Unable to find region for "<a name="line.838"></a>
+<span class="sourceLineNo">839</span>            + Bytes.toStringBinary(row) + " in " + tableName + " after " + tries + " tries.");<a name="line.839"></a>
+<span class="sourceLineNo">840</span>      }<a name="line.840"></a>
+<span class="sourceLineNo">841</span>      if (useCache) {<a name="line.841"></a>
+<span class="sourceLineNo">842</span>        RegionLocations locations = getCachedLocation(tableName, row);<a name="line.842"></a>
+<span class="sourceLineNo">843</span>        if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.843"></a>
+<span class="sourceLineNo">844</span>          return locations;<a name="line.844"></a>
+<span class="sourceLineNo">845</span>        }<a name="line.845"></a>
+<span class="sourceLineNo">846</span>      } else {<a name="line.846"></a>
+<span class="sourceLineNo">847</span>        // If we are not supposed to be using the cache, delete any existing cached location<a name="line.847"></a>
+<span class="sourceLineNo">848</span>        // so it won't interfere.<a name="line.848"></a>
+<span class="sourceLineNo">849</span>        // We are only supposed to clean the cache for the specific replicaId<a name="line.849"></a>
+<span class="sourceLineNo">850</span>        metaCache.clearCache(tableName, row, replicaId);<a name="line.850"></a>
+<span class="sourceLineNo">851</span>      }<a name="line.851"></a>
+<span class="sourceLineNo">852</span>      // Query the meta region<a name="line.852"></a>
+<span class="sourceLineNo">853</span>      long pauseBase = this.pause;<a name="line.853"></a>
+<span class="sourceLineNo">854</span>      userRegionLock.lock();<a name="line.854"></a>
+<span class="sourceLineNo">855</span>      try {<a name="line.855"></a>
+<span class="sourceLineNo">856</span>        if (useCache) {// re-check cache after get lock<a name="line.856"></a>
+<span class="sourceLineNo">857</span>          RegionLocations locations = getCachedLocation(tableName, row);<a name="line.857"></a>
+<span class="sourceLineNo">858</span>          if (locations != null &amp;&amp; locations.getRegionLocation(replicaId) != null) {<a name="line.858"></a>
+<span class="sourceLineNo">859</span>            return locations;<a name="line.859"></a>
+<span class="sourceLineNo">860</span>          }<a name="line.860"></a>
+<span class="sourceLineNo">861</span>        }<a name="line.861"></a>
+<span class="sourceLineNo">862</span>        if (relocateMeta) {<a name="line.862"></a>
+<span class="sourceLineNo">863</span>          relocateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.863"></a>
+<span class="sourceLineNo">864</span>            RegionInfo.DEFAULT_REPLICA_ID);<a name="line.864"></a>
 <span class="sourceLineNo">865</span>        }<a name="line.865"></a>
-<span class="sourceLineNo">866</span>        if (relocateMeta) {<a name="line.866"></a>
-<span class="sourceLineNo">867</span>          relocateRegion(TableName.META_TABLE_NAME, HConstants.EMPTY_START_ROW,<a name="line.867"></a>
-<span class="sourceLineNo">868</span>            RegionInfo.DEFAULT_REPLICA_ID);<a name="line.868"></a>
-<span class="sourceLineNo">869</span>        }<a name="line.869"></a>
-<span class="sourceLineNo">870</span>        s.resetMvccReadPoint();<a name="line.870"></a>
-<span class="sourceLineNo">871</span>        try (ReversedClientScanner rcs =<a name="line.871"></a>
-<span class="sourceLineNo">872</span>          new ReversedClientScanner(conf, s, TableName.META_TABLE_NAME, this, rpcCallerFactory,<a name="line.872"></a>
-<span class="sourceLineNo">873</span>            rpcControllerFactory, getMetaLookupPool(), metaReplicaCallTimeoutScanInMicroSecond)) {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>          boolean tableNotFound = true;<a name="line.874"></a>
-<span class="sourceLineNo">875</span>          for (;;) {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>            Result regionInfoRow = rcs.next();<a name="line.876"></a>
-<span class="sourceLineNo">877</span>            if (regionInfoRow == null) {<a name="line.877"></a>
-<span class="sourceLineNo">878</span>              if (tableNotFound) {<a name="line.878"></a>
-<span class="sourceLineNo">879</span>                throw new TableNotFoundException(tableName);<a name="line.879"></a>
-<span class="sourceLineNo">880</span>              } else {<a name="line.880"></a>
-<span class="sourceLineNo">881</span>                throw new IOException(<a name="line.881"></a>
-<span class="sourceLineNo">882</span>                  "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.882"></a>
-<span class="sourceLineNo">883</span>              }<a name="line.883"></a>
-<span class="sourceLineNo">884</span>            }<a name="line.884"></a>
-<span class="sourceLineNo">885</span>            tableNotFound = false;<a name="line.885"></a>
-<span class="sourceLineNo">886</span>            // convert the row result into the HRegionLocation we need!<a name="line.886"></a>
-<span class="sourceLineNo">887</span>            RegionLocations locations = MetaTableAccessor.getRegionLocations(regionInfoRow);<a name="line.887"></a>
-<span class="sourceLineNo">888</span>            if (locations == null || locations.getRegionLocation(replicaId) == null) {<a name="line.888"></a>
-<span class="sourceLineNo">889</span>              throw new IOException("RegionInfo null in " + tableName + ", row=" + regionInfoRow);<a name="line.889"></a>
-<span class="sourceLineNo">890</span>            }<a name="line.890"></a>
-<span class="sourceLineNo">891</span>            RegionInfo regionInfo = locations.getRegionLocation(replicaId).getRegion();<a name="line.891"></a>
-<span class="sourceLineNo">892</span>            if (regionInfo == null) {<a name="line.892"></a>
-<span class="sourceLineNo">893</span>              throw new IOException("RegionInfo null or empty in " + TableName.META_TABLE_NAME +<a name="line.893"></a>
-<span class="sourceLineNo">894</span>                ", row=" + regionInfoRow);<a name="line.894"></a>
-<span class="sourceLineNo">895</span>            }<a name="line.895"></a>
-<span class="sourceLineNo">896</span>            // See HBASE-20182. It is possible that we locate to a split parent even after the<a name="line.896"></a>
-<span class="sourceLineNo">897</span>            // children are online, so here we need to skip this region and go to the next one.<a name="line.897"></a>
-<span class="sourceLineNo">898</span>            if (regionInfo.isSplitParent()) {<a name="line.898"></a>
-<span class="sourceLineNo">899</span>              continue;<a name="line.899"></a>
+<span class="sourceLineNo">866</span>        s.resetMvccReadPoint();<a name="line.866"></a>
+<span class="sourceLineNo">867</span>        try (ReversedClientScanner rcs =<a name="line.867"></a>
+<span class="sourceLineNo">868</span>          new ReversedClientScanner(conf, s, TableName.META_TABLE_NAME, this, rpcCallerFactory,<a name="line.868"></a>
+<span class="sourceLineNo">869</span>            rpcControllerFactory, getMetaLookupPool(), metaReplicaCallTimeoutScanInMicroSecond)) {<a name="line.869"></a>
+<span class="sourceLineNo">870</span>          boolean tableNotFound = true;<a name="line.870"></a>
+<span class="sourceLineNo">871</span>          for (;;) {<a name="line.871"></a>
+<span class="sourceLineNo">872</span>            Result regionInfoRow = rcs.next();<a name="line.872"></a>
+<span class="sourceLineNo">873</span>            if (regionInfoRow == null) {<a name="line.873"></a>
+<span class="sourceLineNo">874</span>              if (tableNotFound) {<a name="line.874"></a>
+<span class="sourceLineNo">875</span>                throw new TableNotFoundException(tableName);<a name="line.875"></a>
+<span class="sourceLineNo">876</span>              } else {<a name="line.876"></a>
+<span class="sourceLineNo">877</span>                throw new IOException(<a name="line.877"></a>
+<span class="sourceLineNo">878</span>                  "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.878"></a>
+<span class="sourceLineNo">879</span>              }<a name="line.879"></a>
+<span class="sourceLineNo">880</span>            }<a name="line.880"></a>
+<span class="sourceLineNo">881</span>            tableNotFound = false;<a name="line.881"></a>
+<span class="sourceLineNo">882</span>            // convert the row result into the HRegionLocation we need!<a name="line.882"></a>
+<span class="sourceLineNo">883</span>            RegionLocations locations = MetaTableAccessor.getRegionLocations(regionInfoRow);<a name="line.883"></a>
+<span class="sourceLineNo">884</span>            if (locations == null || locations.getRegionLocation(replicaId) == null) {<a name="line.884"></a>
+<span class="sourceLineNo">885</span>              throw new IOException("RegionInfo null in " + tableName + ", row=" + regionInfoRow);<a name="line.885"></a>
+<span class="sourceLineNo">886</span>            }<a name="line.886"></a>
+<span class="sourceLineNo">887</span>            RegionInfo regionInfo = locations.getRegionLocation(replicaId).getRegion();<a name="line.887"></a>
+<span class="sourceLineNo">888</span>            if (regionInfo == null) {<a name="line.888"></a>
+<span class="sourceLineNo">889</span>              throw new IOException("RegionInfo null or empty in " + TableName.META_TABLE_NAME +<a name="line.889"></a>
+<span class="sourceLineNo">890</span>                ", row=" + regionInfoRow);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>            }<a name="line.891"></a>
+<span class="sourceLineNo">892</span>            // See HBASE-20182. It is possible that we locate to a split parent even after the<a name="line.892"></a>
+<span class="sourceLineNo">893</span>            // children are online, so here we need to skip this region and go to the next one.<a name="line.893"></a>
+<span class="sourceLineNo">894</span>            if (regionInfo.isSplitParent()) {<a name="line.894"></a>
+<span class="sourceLineNo">895</span>              continue;<a name="line.895"></a>
+<span class="sourceLineNo">896</span>            }<a name="line.896"></a>
+<span class="sourceLineNo">897</span>            if (regionInfo.isOffline()) {<a name="line.897"></a>
+<span class="sourceLineNo">898</span>              throw new RegionOfflineException("Region offline; disable table call? " +<a name="line.898"></a>
+<span class="sourceLineNo">899</span>                  regionInfo.getRegionNameAsString());<a name="line.899"></a>
 <span class="sourceLineNo">900</span>            }<a name="line.900"></a>
-<span class="sourceLineNo">901</span>            if (regionInfo.isOffline()) {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>              throw new RegionOfflineException("Region offline; disable table call? " +<a name="line.902"></a>
-<span class="sourceLineNo">903</span>                  regionInfo.getRegionNameAsString());<a name="line.903"></a>
-<span class="sourceLineNo">904</span>            }<a name="line.904"></a>
-<span class="sourceLineNo">905</span>            // It is possible that the split children have not been online yet and we have skipped<a name="line.905"></a>
-<span class="sourceLineNo">906</span>            // the parent in the above condition, so we may have already reached a region which does<a name="line.906"></a>
-<span class="sourceLineNo">907</span>            // not contains us.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>            if (!regionInfo.containsRow(row)) {<a name="line.908"></a>
-<span class="sourceLineNo">909</span>              throw new IOException(<a name="line.909"></a>
-<span class="sourceLineNo">910</span>                "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.910"></a>
-<span class="sourceLineNo">911</span>            }<a name="line.911"></a>
-<span class="sourceLineNo">912</span>            ServerName serverName = locations.getRegionLocation(replicaId).getServerName();<a name="line.912"></a>
-<span class="sourceLineNo">913</span>            if (serverName == null) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>              throw new NoServerForRegionException("No server address listed in " +<a name="line.914"></a>
-<span class="sourceLineNo">915</span>                TableName.META_TABLE_NAME + " for region " + regionInfo.getRegionNameAsString() +<a name="line.915"></a>
-<span class="sourceLineNo">916</span>                " containing row " + Bytes.toStringBinary(row));<a name="line.916"></a>
-<span class="sourceLineNo">917</span>            }<a name="line.917"></a>
-<span class="sourceLineNo">918</span>            if (isDeadServer(serverName)) {<a name="line.918"></a>
-<span class="sourceLineNo">919</span>              throw new RegionServerStoppedException(<a name="line.919"></a>
-<span class="sourceLineNo">920</span>                "hbase:meta says the region " + regionInfo.getRegionNameAsString() +<a name="line.920"></a>
-<span class="sourceLineNo">921</span>                  " is managed by the server " + serverName + ", but it is dead.");<a name="line.921"></a>
-<span class="sourceLineNo">922</span>            }<a name="line.922"></a>
-<span class="sourceLineNo">923</span>            // Instantiate the location<a name="line.923"></a>
-<span class="sourceLineNo">924</span>            cacheLocation(tableName, locations);<a name="line.924"></a>
-<span class="sourceLineNo">925</span>            return locations;<a name="line.925"></a>
-<span class="sourceLineNo">926</span>          }<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        }<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      } catch (TableNotFoundException e) {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>        // if we got this error, probably means the table just plain doesn't<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        // exist. rethrow the error immediately. this should always be coming<a name="line.930"></a>
-<span class="sourceLineNo">931</span>        // from the HTable constructor.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>        throw e;<a name="line.932"></a>
-<span class="sourceLineNo">933</span>      } catch (IOException e) {<a name="line.933"></a>
-<span class="sourceLineNo">934</span>        ExceptionUtil.rethrowIfInterrupt(e);<a name="line.934"></a>
-<span class="sourceLineNo">935</span>        if (e instanceof RemoteException) {<a name="line.935"></a>
-<span class="sourceLineNo">936</span>          e = ((RemoteException)e).unwrapRemoteException();<a name="line.936"></a>
+<span class="sourceLineNo">901</span>            // It is possible that the split children have not been online yet and we have skipped<a name="line.901"></a>
+<span class="sourceLineNo">902</span>            // the parent in the above condition, so we may have already reached a region which does<a name="line.902"></a>
+<span class="sourceLineNo">903</span>            // not contains us.<a name="line.903"></a>
+<span class="sourceLineNo">904</span>            if (!regionInfo.containsRow(row)) {<a name="line.904"></a>
+<span class="sourceLineNo">905</span>              throw new IOException(<a name="line.905"></a>
+<span class="sourceLineNo">906</span>                "Unable to find region for " + Bytes.toStringBinary(row) + " in " + tableName);<a name="line.906"></a>
+<span class="sourceLineNo">907</span>            }<a name="line.907"></a>
+<span class="sourceLineNo">908</span>            ServerName serverName = locations.getRegionLocation(replicaId).getServerName();<a name="line.908"></a>
+<span class="sourceLineNo">909</span>            if (serverName == null) {<a name="line.909"></a>
+<span class="sourceLineNo">910</span>              throw new NoServerForRegionException("No server address listed in " +<a name="line.910"></a>
+<span class="sourceLineNo">911</span>                TableName.META_TABLE_NAME + " for region " + regionInfo.getRegionNameAsString() +<a name="line.911"></a>
+<span class="sourceLineNo">912</span>                " containing row " + Bytes.toStringBinary(row));<a name="line.912"></a>
+<span class="sourceLineNo">913</span>            }<a name="line.913"></a>
+<span class="sourceLineNo">914</span>            if (isDeadServer(serverName)) {<a name="line.914"></a>
+<span class="sourceLineNo">915</span>              throw new RegionServerStoppedException(<a name="line.915"></a>
+<span class="sourceLineNo">916</span>                "hbase:meta says the region " + regionInfo.getRegionNameAsString() +<a name="line.916"></a>
+<span class="sourceLineNo">917</span>                  " is managed by the server " + serverName + ", but it is dead.");<a name="line.917"></a>
+<span class="sourceLineNo">918</span>            }<a name="line.918"></a>
+<span class="sourceLineNo">919</span>            // Instantiate the location<a name="line.919"></a>
+<span class="sourceLineNo">920</span>            cacheLocation(tableName, locations);<a name="line.920"></a>
+<span class="sourceLineNo">921</span>            return locations;<a name="line.921"></a>
+<span class="sourceLineNo">922</span>          }<a name="line.922"></a>
+<span class="sourceLineNo">923</span>        }<a name="line.923"></a>
+<span class="sourceLineNo">924</span>      } catch (TableNotFoundException e) {<a name="line.924"></a>
+<span class="sourceLineNo">925</span>        // if we got this error, probably means the table just plain doesn't<a name="line.925"></a>
+<span class="sourceLineNo">926</span>        // exist. rethrow the error immediately. this should always be coming<a name="line.926"></a>
+<span class="sourceLineNo">927</span>        // from the HTable constructor.<a name="line.927"></a>
+<span class="sourceLineNo">928</span>        throw e;<a name="line.928"></a>
+<span class="sourceLineNo">929</span>      } catch (IOException e) {<a name="line.929"></a>
+<span class="sourceLineNo">930</span>        ExceptionUtil.rethrowIfInterrupt(e);<a name="line.930"></a>
+<span class="sourceLineNo">931</span>        if (e instanceof RemoteException) {<a name="line.931"></a>
+<span class="sourceLineNo">932</span>          e = ((RemoteException)e).unwrapRemoteException();<a name="line.932"></a>
+<span class="sourceLineNo">933</span>        }<a name="line.933"></a>
+<span class="sourceLineNo">934</span>        if (e instanceof CallQueueTooBigException) {<a name="line.934"></a>
+<span class="sourceLineNo">935</span>          // Give a special check on CallQueueTooBigException, see #HBASE-17114<a name="line.935"></a>
+<span class="sourceLineNo">936</span>          pauseBase = this.pauseForCQTBE;<a name="line.936"></a>
 <span class="sourceLineNo">937</span>        }<a name="line.937"></a>
-<span class="sourceLineNo">938</span>        if (e instanceof CallQueueTooBigException) {<a name="line.938"></a>
-<span class="sourceLineNo">939</span>          // Give a special check on CallQueueTooBigException, see #HBASE-17114<a name="line.939"></a>
-<span class="sourceLineNo">940</span>          pauseBase = this.pauseForCQTBE;<a name="line.940"></a>
-<span class="sourceLineNo">941</span>        }<a name="line.941"></a>
-<span class="sourceLineNo">942</span>        if (tries &lt; maxAttempts - 1) {<a name="line.942"></a>
-<span class="sourceLineNo">943</span>          LOG.debug("locateRegionInMeta parentTable='{}', attempt={} of {} failed; retrying " +<a name="line.943"></a>
-<span class="sourceLineNo">944</span>            "after sleep of {}", TableName.META_TABLE_NAME, tries, maxAttempts, maxAttempts, e);<a name="line.944"></a>
-<span class="sourceLineNo">945</span>        } else {<a name="line.945"></a>
-<span class="sourceLineNo">946</span>          throw e;<a name="line.946"></a>
-<span class="sourceLineNo">947</span>        }<a name="line.947"></a>
-<span class="sourceLineNo">948</span>        // Only relocate the parent region if necessary<a name="line.948"></a>
-<span class="sourceLineNo">949</span>        relocateMeta =<a name="line.949"></a>
-<span class="sourceLineNo">950</span>          !(e instanceof RegionOfflineException || e instanceof NoServerForRegionException);<a name="line.950"></a>
-<span class="sourceLineNo">951</span>      } finally {<a name="line.951"></a>
-<span class="sourceLineNo">952</span>        userRegionLock.unlock();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>      }<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      try{<a name="line.954"></a>
-<span class="sourceLineNo">955</span>        Thread.sleep(ConnectionUtils.getPauseTime(pauseBase, tries));<a name="line.955"></a>
-<span class="sourceLineNo">956</span>      } catch (InterruptedException e) {<a name="line.956"></a>
-<span class="sourceLineNo">957</span>        throw new InterruptedIOException("Giving up trying to location region in " +<a name="line.957"></a>
-<span class="sourceLineNo">958</span>          "meta: thread is interrupted.");<a name="line.958"></a>
-<span class="sourceLineNo">959</span>      }<a name="line.959"></a>
-<span class="sourceLineNo">960</span>    }<a name="line.960"></a>
-<span class="sourceLineNo">961</span>  }<a name="line.961"></a>
-<span class="sourceLineNo">962</span><a name="line.962"></a>
-<span class="sourceLineNo">963</span>  /**<a name="line.963"></a>
-<span class="sourceLineNo">964</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.964"></a>
-<span class="sourceLineNo">965</span>   * @param tableName The table name.<a name="line.965"></a>
-<span class="sourceLineNo">966</span>   * @param location the new location<a name="line.966"></a>
-<span class="sourceLineNo">967</span>   */<a name="line.967"></a>
-<span class="sourceLineNo">968</span>  @Override<a name="line.968"></a>
-<span class="sourceLineNo">969</span>  public void cacheLocation(final TableName tableName, final RegionLocations location) {<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    metaCache.cacheLocation(tableName, location);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Search the cache for a location that fits our table and row key.<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * Return null if no suitable region is located.<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @return Null or region location found in cache.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   */<a name="line.977"></a>
-<span class="sourceLineNo">978</span>  RegionLocations getCachedLocation(final TableName tableName,<a name="line.978"></a>
-<span class="sourceLineNo">979</span>      final byte [] row) {<a name="line.979"></a>
-<span class="sourceLineNo">980</span>    return metaCache.getCachedLocation(tableName, row);<a name="line.980"></a>
+<span class="sourceLineNo">938</span>        if (tries &lt; maxAttempts - 1) {<a name="line.938"></a>
+<span class="sourceLineNo">939</span>          LOG.debug("locateRegionInMeta parentTable='{}', attempt={} of {} failed; retrying " +<a name="line.939"></a>
+<span class="sourceLineNo">940</span>            "after sleep of {}", TableName.META_TABLE_NAME, tries, maxAttempts, maxAttempts, e);<a name="line.940"></a>
+<span class="sourceLineNo">941</span>        } else {<a name="line.941"></a>
+<span class="sourceLineNo">942</span>          throw e;<a name="line.942"></a>
+<span class="sourceLineNo">943</span>        }<a name="line.943"></a>
+<span class="sourceLineNo">944</span>        // Only relocate the parent region if necessary<a name="line.944"></a>
+<span class="sourceLineNo">945</span>        relocateMeta =<a name="line.945"></a>
+<span class="sourceLineNo">946</span>          !(e instanceof RegionOfflineException || e instanceof NoServerForRegionException);<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      } finally {<a name="line.947"></a>
+<span class="sourceLineNo">948</span>        userRegionLock.unlock();<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      }<a name="line.949"></a>
+<span class="sourceLineNo">950</span>      try{<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        Thread.sleep(ConnectionUtils.getPauseTime(pauseBase, tries));<a name="line.951"></a>
+<span class="sourceLineNo">952</span>      } catch (InterruptedException e) {<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        throw new InterruptedIOException("Giving up trying to location region in " +<a name="line.953"></a>
+<span class="sourceLineNo">954</span>          "meta: thread is interrupted.");<a name="line.954"></a>
+<span class="sourceLineNo">955</span>      }<a name="line.955"></a>
+<span class="sourceLineNo">956</span>    }<a name="line.956"></a>
+<span class="sourceLineNo">957</span>  }<a name="line.957"></a>
+<span class="sourceLineNo">958</span><a name="line.958"></a>
+<span class="sourceLineNo">959</span>  /**<a name="line.959"></a>
+<span class="sourceLineNo">960</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.960"></a>
+<span class="sourceLineNo">961</span>   * @param tableName The table name.<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   * @param location the new location<a name="line.962"></a>
+<span class="sourceLineNo">963</span>   */<a name="line.963"></a>
+<span class="sourceLineNo">964</span>  @Override<a name="line.964"></a>
+<span class="sourceLineNo">965</span>  public void cacheLocation(final TableName tableName, final RegionLocations location) {<a name="line.965"></a>
+<span class="sourceLineNo">966</span>    metaCache.cacheLocation(tableName, location);<a name="line.966"></a>
+<span class="sourceLineNo">967</span>  }<a name="line.967"></a>
+<span class="sourceLineNo">968</span><a name="line.968"></a>
+<span class="sourceLineNo">969</span>  /**<a name="line.969"></a>
+<span class="sourceLineNo">970</span>   * Search the cache for a location that fits our table and row key.<a name="line.970"></a>
+<span class="sourceLineNo">971</span>   * Return null if no suitable region is located.<a name="line.971"></a>
+<span class="sourceLineNo">972</span>   * @return Null or region location found in cache.<a name="line.972"></a>
+<span class="sourceLineNo">973</span>   */<a name="line.973"></a>
+<span class="sourceLineNo">974</span>  RegionLocations getCachedLocation(final TableName tableName,<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      final byte [] row) {<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    return metaCache.getCachedLocation(tableName, row);<a name="line.976"></a>
+<span class="sourceLineNo">977</span>  }<a name="line.977"></a>
+<span class="sourceLineNo">978</span><a name="line.978"></a>
+<span class="sourceLineNo">979</span>  public void clearRegionCache(final TableName tableName, byte[] row) {<a name="line.979"></a>
+<span class="sourceLineNo">980</span>    metaCache.clearCache(tableName, row);<a name="line.980"></a>
 <span class="sourceLineNo">981</span>  }<a name="line.981"></a>
 <span class="sourceLineNo">982</span><a name="line.982"></a>
-<span class="sourceLineNo">983</span>  public void clearRegionCache(final TableName tableName, byte[] row) {<a name="line.983"></a>
-<span class="sourceLineNo">984</span>    metaCache.clearCache(tableName, row);<a name="line.984"></a>
-<span class="sourceLineNo">985</span>  }<a name="line.985"></a>
-<span class="sourceLineNo">986</span><a name="line.986"></a>
-<span class="sourceLineNo">987</span>  /*<a name="line.987"></a>
-<span class="sourceLineNo">988</span>   * Delete all cached entries of a table that maps to a specific location.<a name="line.988"></a>
-<span class="sourceLineNo">989</span>   */<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  @Override<a name="line.990"></a>
-<span class="sourceLineNo">991</span>  public void clearCaches(final ServerName serverName) {<a name="line.991"></a>
-<span class="sourceLineNo">992</span>    metaCache.clearCache(serverName);<a name="line.992"></a>
-<span class="sourceLineNo">993</span>  }<a name="line.993"></a>
-<span class="sourceLineNo">994</span><a name="line.994"></a>
-<span class="sourceLineNo">995</span>  @Override<a name="line.995"></a>
-<span class="sourceLineNo">996</span>  public void clearRegionCache() {<a name="line.996"></a>
-<span class="sourceLineNo">997</span>    metaCache.clearCache();<a name="line.997"></a>
-<span class="sourceLineNo">998</span>  }<a name="line.998"></a>
-<span class="sourceLineNo">999</span><a name="line.999"></a>
-<span class="sourceLineNo">1000</span>  @Override<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  public void clearRegionCache(final TableName tableName) {<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span>    metaCache.clearCache(tableName);<a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  }<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span><a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>  /**<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   * @param tableName The table name.<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   * @param source the source of the new location, if it's not coming from meta<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>   * @param location the new location<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>   */<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>  private void cacheLocation(final TableName tableName, final ServerName source,<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>      final HRegionLocation location) {<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    metaCache.cacheLocation(tableName, source, location);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  // Map keyed by service name + regionserver to service stub implementation<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>  private final ConcurrentMap&lt;String, Object&gt; stubs = new ConcurrentHashMap&lt;&gt;();<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span><a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>  /**<a name="line.1019"></a>
-<span class="sourceLineNo">1020</span>   * State of the MasterService connection/setup.<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>   */<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>  static class MasterServiceState {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    Connection connection;<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span><a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>    MasterProtos.MasterService.BlockingInterface stub;<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>    int userCount;<a name="line.1026"></a>
-<span class="sourceLineNo">1027</span><a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>    MasterServiceState(final Connection connection) {<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>      super();<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>      this.connection = connection;<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>    }<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span><a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    @Override<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span>    public String toString() {<a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>      return "MasterService";<a name="line.1035"></a>
+<span class="sourceLineNo">983</span>  /*<a name="line.983"></a>
+<span class="sourceLineNo">984</span>   * Delete all cached entries of a table that maps to a specific location.<a name="line.984"></a>
+<span class="sourceLineNo">985</span>   */<a name="line.985"></a>
+<span class="sourceLineNo">986</span>  @Override<a name="line.986"></a>
+<span class="sourceLineNo">987</span>  public void clearCaches(final ServerName serverName) {<a name="line.987"></a>
+<span class="sourceLineNo">988</span>    metaCache.clearCache(serverName);<a name="line.988"></a>
+<span class="sourceLineNo">989</span>  }<a name="line.989"></a>
+<span class="sourceLineNo">990</span><a name="line.990"></a>
+<span class="sourceLineNo">991</span>  @Override<a name="line.991"></a>
+<span class="sourceLineNo">992</span>  public void clearRegionCache() {<a name="line.992"></a>
+<span class="sourceLineNo">993</span>    metaCache.clearCache();<a name="line.993"></a>
+<span class="sourceLineNo">994</span>  }<a name="line.994"></a>
+<span class="sourceLineNo">995</span><a name="line.995"></a>
+<span class="sourceLineNo">996</span>  @Override<a name="line.996"></a>
+<span class="sourceLineNo">997</span>  public void clearRegionCache(final TableName tableName) {<a name="line.997"></a>
+<span class="sourceLineNo">998</span>    metaCache.clearCache(tableName);<a name="line.998"></a>
+<span class="sourceLineNo">999</span>  }<a name="line.999"></a>
+<span class="sourceLineNo">1000</span><a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>  /**<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>   * Put a newly discovered HRegionLocation into the cache.<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>   * @param tableName The table name.<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>   * @param source the source of the new location, if it's not coming from meta<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>   * @param location the new location<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>   */<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>  private void cacheLocation(final TableName tableName, final ServerName source,<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>      final HRegionLocation location) {<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>    metaCache.cacheLocation(tableName, source, location);<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>  }<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span><a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>  // Map keyed by service name + regionserver to service stub implementation<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>  private final ConcurrentMap&lt;String, Object&gt; stubs = new ConcurrentHashMap&lt;&gt;();<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span><a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>  /**<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>   * State of the MasterService connection/setup.<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>   */<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>  static class MasterServiceState {<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>    Connection connection;<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span><a name="line.1020"></a>
+<span class="sourceLineNo">1021</span>    MasterProtos.MasterService.BlockingInterface stub;<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>    int userCount;<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span><a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>    MasterServiceState(final Connection connection) {<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>      super();<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>      this.connection = connection;<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>    }<a name="line.1027"></a>
+<span class="sourceLineNo">1028</span><a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>    @Override<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>    public String toString() {<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>      return "MasterService";<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>    }<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span><a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>    Object getStub() {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>      return this.stub;<a name="line.1035"></a>
 <span class="sourceLineNo">1036</span>    }<a name="line.1036"></a>
 <span class="sourceLineNo">1037</span><a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    Object getStub() {<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>      return this.stub;<a name="line.1039"></a>
+<span class="sourceLineNo">1038</span>    void clearStub() {<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>      this.stub = null;<a name="line.1039"></a>
 <span class="sourceLineNo">1040</span>    }<a name="line.1040"></a>
 <span class="sourceLineNo">1041</span><a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    void clearStub() {<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span>      this.stub = null;<a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>    }<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span><a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>    boolean isMasterRunning() throws IOException {<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>      MasterProtos.IsMasterRunningResponse response = null;<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>      try {<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>        response = this.stub.isMasterRunning(null, RequestConverter.buildIsMasterRunningRequest());<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>      } catch (Exception e) {<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>        throw ProtobufUtil.handleRemoteException(e);<a name="line.1051"></a>
-<span class="sourceLineNo">1052</span>      }<a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>      return response != null? response.getIsMasterRunning(): false;<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    }<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>  }<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span><a name="line.1056"></a>
-<span class="sourceLineNo">1057</span>  /**<a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>   * The record of errors for servers.<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>   */<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  static class ServerErrorTracker {<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span>    // We need a concurrent map here, as we could have multiple threads updating it in parallel.<a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>    private final ConcurrentMap&lt;ServerName, ServerErrors&gt; errorsByServer = new ConcurrentHashMap&lt;&gt;();<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>    private final long canRetryUntil;<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>    private final int maxTries;// max number to try<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>    private final long startTrackingTime;<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span><a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>    /**<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>     * Constructor<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>     * @param timeout how long to wait before timeout, in unit of millisecond<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>     * @param maxTries how many times to try<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>     */<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>    public ServerErrorTracker(long timeout, int maxTries) {<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>      this.maxTries = maxTries;<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>      this.canRetryUntil = EnvironmentEdgeManager.currentTime() + timeout;<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      this.startTrackingTime = new Date().getTime();<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span><a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    /**<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>     * We stop to retry when we have exhausted BOTH the number of tries and the time allocated.<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span>     * @param numAttempt how many times we have tried by now<a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>     */<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    boolean canTryMore(int numAttempt) {<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>      // If there is a single try we must not take into account the time.<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      return numAttempt &lt; maxTries || (maxTries &gt; 1 &amp;&amp;<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>          EnvironmentEdgeManager.currentTime() &lt; this.canRetryUntil);<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    }<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span><a name="line.1087"></a>
-<span class="sourceLineNo">1088</span>    /**<a name="line.1088"></a>
-<span class="sourceLineNo">1089</span>     * Calculates the back-off time for a retrying request to a particular server.<a name="line.1089"></a>
-<span class="sourceLineNo">1090</span>     *<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>     * @param server    The server in question.<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>     * @param basePause The default hci pause.<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>     * @return The time to wait before sending next request.<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>     */<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    long calculateBackoffTime(ServerName server, long basePause) {<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>      long result;<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>      ServerErrors errorStats = errorsByServer.get(server);<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>      if (errorStats != null) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>        result = ConnectionUtils.getPauseTime(basePause, Math.max(0, errorStats.getCount() - 1));<a name="line.1099"></a>
-<span class="sourceLineNo">1100</span>      } else {<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>        result = 0; // yes, if the server is not in our list we don't wait before retrying.<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>      }<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span>      return result;<a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    }<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span><a name="line.1105"></a>
-<span class="sourceLineNo">1106</span>    /**<a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>     * Reports that there was an error on the server to do whatever bean-counting necessary.<a name="line.1107"></a>
-<span class="sourceLineNo">1108</span>     * @param server The server in question.<a name="line.1108"></a>
-<span class="sourceLineNo">1109</span>     */<a name="line.1109"></a>
-<span class="sourceLineNo">1110</span>    void reportServerError(ServerName server) {<a name="line.1110"></a>
-<span class="sourceLineNo">1111</span>      computeIfAbsent(errorsByServer, server, ServerErrors::new).addError();<a name="line.1111"></a>
+<span class="sourceLineNo">1042</span>    boolean isMasterRunning() throws IOException {<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>      MasterProtos.IsMasterRunningResponse response = null;<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>      try {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>        response = this.stub.isMasterRunning(null, RequestConverter.buildIsMasterRunningRequest());<a name="line.

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html
index 15db0f1..82a8c92 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html
@@ -285,7 +285,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" t
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></h3>
-<code><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertKVListsEqual-java.lang.String-java.util.List-java.util.List-">assertKVListsEqual</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnlyOnServer-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-long-">assertRegionOnlyOnServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnServer-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-long-">assertRegionOnServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assignRegion-org.apache.hadoop.hbase.client.RegionInfo-">assignRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#available-int-">available</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#checksumRows-org.apache.hadoop.hbase.client.Table-">checksumRows</a>, <a href="../../../../org/apache/h
 adoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS--">cleanupDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS-java.lang.String-">cleanupDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL-org.apache.hadoop.hbase.regionserver.HRegion-">closeRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL-org.apache.hadoop.hbase.regionserver.Region-">closeRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact-boolean-">compact</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact-org.apache.hadoop.hbase.TableName-boolean-">compact</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.InternalScanner-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBas
 eTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.Region-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.client.Scan-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-byte:A...-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.TableName-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-org.apache.hadoop.hbase.client.Scan-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-byte:A-byte:A-byte:A-java.lang.String-org.apache.hadoop.conf
 .Configuration-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-byte:A...-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.TableDescriptor-byte:A-byte:A-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.TableName-byte:A-byte:A-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-byte:A...-">createLocalHRegio
 n</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegionWithInMemoryFlags-org.apache.hadoop.hbase.TableName-byte:A-byte:A-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-boolean:A-byte:A...-">createLocalHRegionWithInMemoryFlags</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU--">createLocalHTU</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU-org.apache.hadoop.conf.Configuration-">createLocalHTU</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService--">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService-org.apache.hadoop.hbase.ipc.RpcServerInterface-">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService-org.apache.hadoop
 .hbase.ServerName-">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionsInMeta-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HTableDescriptor-byte:A:A-">createMultiRegionsInMeta</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionsInMeta-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-">createMultiRegionsInMeta</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A-">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A:A-">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createMultiRegionTable</a>, <a href=
 "../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A-int-">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor:A-int-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor:A-org.apache.hadoop.hbase.util.RegionSplitter.SplitAl
 gorithm-int-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-int-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-int-int-org.apache.hadoop.hbase.client.Durability-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-">createPreS
 plitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-int-int-org.apache.hadoop.hbase.client.Durability-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRandomTable-org.apache.hadoop.hbase.TableName-java.util.Collection-int-int-int-int-int-">createRandomTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hado
 op.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-boolean-">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir--">createRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir-boolean-">createRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-byte:A:A-org.apache.hadoop.hbase.regionserver.BloomType-int-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-byte:A:A-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/had
 oop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-int-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBa
 seTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-byte:A-byte:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-int-java.lang.String-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hba
 se.TableName-byte:A-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-java.lang.String-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-java.lang.String:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-java.lang.String-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-java.lang.String-int-int-int-org.apache.hadoop.hbase.KeepDeletedCells-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-">createTableDescriptor</a>, <a href="../.
 ./../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-byte:A-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-int-int-int-org.apache.hadoop.hbase.KeepDeletedCells-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTestRegion-java.lang.String-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">createTestRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createWal-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-">createWal</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createWALRootDir--
 ">createWALRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">deleteNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTable-org.apache.hadoop.hbase.TableName-">deleteTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableData-org.apache.hadoop.hbase.TableName-">deleteTableData</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableIfAny-org.apache.hadoop.hbase.TableName-">deleteTableIfAny</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#enableDebug-java.lang.Class-">enableDebug</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeNonStoppedRegionServersAvailable-int-">ensureSomeNonStoppedRegionServersAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeRegionServersAvailabl
 e-int-">ensureSomeRegionServersAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireMasterSession--">expireMasterSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireRegionServerSession-int-">expireRegionServerSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">expireSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession-org.apache.hadoop.hbase.zookeeper.ZKWatcher-boolean-">expireSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableAvailability-org.apache.hadoop.hbase.TableName-">explainTableAvailability</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableState-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableState.State-">explainTableState</a>, <a href="../../../../org/apache/hadoop
 /hbase/HBaseTestingUtility.html#findLastTableState-org.apache.hadoop.hbase.TableName-">findLastTableState</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#flush--">flush</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#flush-org.apache.hadoop.hbase.TableName-">flush</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColumnDescriptors--">generateColumnDescriptors</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColumnDescriptors-java.lang.String-">generateColumnDescriptors</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getAdmin--">getAdmin</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getAllOnlineRegions-org.apache.hadoop.hbase.MiniHBaseCluster-">getAllOnlineRegions</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClosestRowBefore-org.apache.hadoop.hbase.regionserver.Region-byte:A-by
 te:A-">getClosestRowBefore</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClusterKey--">getClusterKey</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConfiguration--">getConfiguration</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConnection--">getConnection</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS--">getDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS-java.lang.String-">getDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath--">getDefaultRootDirPath</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath-boolean-">getDefaultRootDirPath</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDFSCluster--">getDFSCluster</a>, <a href="../../../..
 /org/apache/hadoop/hbase/HBaseTestingUtility.html#getDifferentUser-org.apache.hadoop.conf.Configuration-java.lang.String-">getDifferentUser</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getFromStoreFile-org.apache.hadoop.hbase.regionserver.HStore-byte:A-java.util.NavigableSet-">getFromStoreFile</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getFromStoreFile-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.hbase.client.Get-">getFromStoreFile</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseAdmin--">getHBaseAdmin</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseCluster--">getHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseClusterInterface--">getHBaseClusterInterface</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHbck--">getHbck</a>, <a href="../../../../org/apache/hadoop/
 hbase/HBaseTestingUtility.html#getMetaRSPort-org.apache.hadoop.hbase.client.Connection-">getMetaRSPort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableDescriptor--">getMetaTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableDescriptorBuilder--">getMetaTableDescriptorBuilder</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows--">getMetaTableRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows-org.apache.hadoop.hbase.TableName-">getMetaTableRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMiniHBaseCluster--">getMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getNumHFiles-org.apache.hadoop.hbase.TableName-byte:A-">getNumHFiles</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getNumHFilesForRS-org.apache.hadoop.hb
 ase.regionserver.HRegionServer-org.apache.hadoop.hbase.TableName-byte:A-">getNumHFilesForRS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getOtherRegionServer-org.apache.hadoop.hbase.regionserver.HRegionServer-">getOtherRegionServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRegionSplitStartKeys-byte:A-byte:A-int-">getRegionSplitStartKeys</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRSForFirstRegionInTable-org.apache.hadoop.hbase.TableName-">getRSForFirstRegionInTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSplittableRegion-org.apache.hadoop.hbase.TableName-int-">getSplittableRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSupportedCompressionAlgorithms--">getSupportedCompressionAlgorithms</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem--">getTestFileSystem</a>, <a href
 ="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isReadShortCircuitOn--">isReadShortCircuitOn</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRandomRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadRandomRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-boolean-">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.Region-byte:A-">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.
 client.Table-byte:A-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-boolean-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-boolean-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSTagsAndOffheapCombination--">memStoreTSTagsAndOffheapCombination</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#modifyTableSync-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.client.TableDescriptor-">modifyTableSync</a>, <a href="../../..
 /../org/apache/hadoop/hbase/HBaseTestingUtility.html#moveRegionAndWait-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">moveRegionAndWait</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateNoRegionsInTransition--">predicateNoRegionsInTransition</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableAvailable-org.apache.hadoop.hbase.TableName-">predicateTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableDisabled-org.apache.hadoop.hbase.TableName-">predicateTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableEnabled-org.apache.hadoop.hbase.TableName-">predicateTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort--">randomFreePort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomMultiCastAddress--">randomMul
 tiCastAddress</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-int-">restartHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#safeGetAsStr-java.util.List-int-">safeGetAsStr</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-">setDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-boolean-">setDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFileSystemURI-java.lang.String-">setFileSystemURI</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseCluster-org.apache.hadoop.hbase.HBaseCluster-">setHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setMaxRecoveryErrorCount-java.io.OutputStream-int-">setMaxRecoveryErrorCount</a>, <a href="../../
 ../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setReplicas-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.TableName-int-">setReplicas</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDir--">setupDataTestDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupMiniKdc-java.io.File-">setupMiniKdc</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster--">shutdownMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniDFSCluster--">shutdownMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster--">shutdownMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster--">shutdownMiniMapReduceCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster--">startMiniClu
 ster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Cl
 ass-java.lang.Class-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-">startMiniDFSCluster</a>, <a href="../../../../org/apach
 e/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-java.lang.String:A-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-java.lang.String:A-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSClusterForTestWAL-int-">startMiniDFSClusterForTestWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster--">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestin
 gUtility.html#startMiniHBaseCluster-int-int-java.util.List-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster--">startMiniMapReduceCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-">truncateTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-">truncateTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-byte:A-">unassignRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-java.lang.String-">unassignRegion</a>, <a href="../../../../org/apache/hadoop/
 hbase/HBaseTestingUtility.html#unassignRegionByRow-byte:A-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-java.lang.String-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-boolean-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-boolean-">verif
 yNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-int-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyTableDescriptorIgnoreTableName-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">verifyTableDescriptorIgnoreTableName</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitForHostPort-java.lang.String-int-">waitForHostPort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitLabelAvailable-long-java.lang.String...-">waitLabelAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-byte:A-long-">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-">waitTableAvailable</a>, <a href="../../../.
 ./org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-long-">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-long-">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-org.apache.hadoop.hbase.TableName-long-">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-byte:A-long-">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-long-">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HB
 aseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-">waitUntilAllRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-long-">waitUntilAllRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllSystemRegionsAssigned--">waitUntilAllSystemRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition--">waitUntilNoRegionsInTransition</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition-long-">waitUntilNoRegionsInTransition</a></code></li>
+<code><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertKVListsEqual-java.lang.String-java.util.List-java.util.List-">assertKVListsEqual</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnlyOnServer-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-long-">assertRegionOnlyOnServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnServer-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-long-">assertRegionOnServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assignRegion-org.apache.hadoop.hbase.client.RegionInfo-">assignRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#available-int-">available</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#checksumRows-org.apache.hadoop.hbase.client.Table-">checksumRows</a>, <a href="../../../../org/apache/h
 adoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS--">cleanupDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS-java.lang.String-">cleanupDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL-org.apache.hadoop.hbase.regionserver.HRegion-">closeRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL-org.apache.hadoop.hbase.regionserver.Region-">closeRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact-boolean-">compact</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact-org.apache.hadoop.hbase.TableName-boolean-">compact</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.InternalScanner-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBas
 eTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.Region-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.client.Scan-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-byte:A...-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.TableName-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-org.apache.hadoop.hbase.client.Scan-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-byte:A-byte:A-byte:A-java.lang.String-org.apache.hadoop.conf
 .Configuration-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-byte:A...-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.TableDescriptor-byte:A-byte:A-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.TableName-byte:A-byte:A-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-byte:A...-">createLocalHRegio
 n</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegionWithInMemoryFlags-org.apache.hadoop.hbase.TableName-byte:A-byte:A-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-boolean:A-byte:A...-">createLocalHRegionWithInMemoryFlags</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU--">createLocalHTU</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU-org.apache.hadoop.conf.Configuration-">createLocalHTU</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService--">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService-org.apache.hadoop.hbase.ipc.RpcServerInterface-">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService-org.apache.hadoop
 .hbase.ServerName-">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionsInMeta-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HTableDescriptor-byte:A:A-">createMultiRegionsInMeta</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionsInMeta-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-">createMultiRegionsInMeta</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A-">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A:A-">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createMultiRegionTable</a>, <a href=
 "../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A-int-">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor:A-int-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor:A-org.apache.hadoop.hbase.util.RegionSplitter.SplitAl
 gorithm-int-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-int-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-int-int-org.apache.hadoop.hbase.client.Durability-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-">createPreS
 plitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-int-int-org.apache.hadoop.hbase.client.Durability-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRandomTable-org.apache.hadoop.hbase.TableName-java.util.Collection-int-int-int-int-int-">createRandomTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hado
 op.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-boolean-">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir--">createRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir-boolean-">createRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-byte:A:A-org.apache.hadoop.hbase.regionserver.BloomType-int-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-byte:A:A-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/had
 oop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-int-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBa
 seTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-byte:A-byte:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-int-java.lang.String-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hba
 se.TableName-byte:A-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-java.lang.String-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-java.lang.String:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-java.lang.String-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-java.lang.String-int-int-int-org.apache.hadoop.hbase.KeepDeletedCells-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-">createTableDescriptor</a>, <a href="../.
 ./../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-byte:A-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-int-int-int-org.apache.hadoop.hbase.KeepDeletedCells-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTestRegion-java.lang.String-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">createTestRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createWal-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-">createWal</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createWALRootDir--
 ">createWALRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">deleteNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTable-org.apache.hadoop.hbase.TableName-">deleteTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableData-org.apache.hadoop.hbase.TableName-">deleteTableData</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableIfAny-org.apache.hadoop.hbase.TableName-">deleteTableIfAny</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#enableDebug-java.lang.Class-">enableDebug</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeNonStoppedRegionServersAvailable-int-">ensureSomeNonStoppedRegionServersAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeRegionServersAvailabl
 e-int-">ensureSomeRegionServersAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireMasterSession--">expireMasterSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireRegionServerSession-int-">expireRegionServerSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">expireSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession-org.apache.hadoop.hbase.zookeeper.ZKWatcher-boolean-">expireSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableAvailability-org.apache.hadoop.hbase.TableName-">explainTableAvailability</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableState-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableState.State-">explainTableState</a>, <a href="../../../../org/apache/hadoop
 /hbase/HBaseTestingUtility.html#findLastTableState-org.apache.hadoop.hbase.TableName-">findLastTableState</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#flush--">flush</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#flush-org.apache.hadoop.hbase.TableName-">flush</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColumnDescriptors--">generateColumnDescriptors</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColumnDescriptors-java.lang.String-">generateColumnDescriptors</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getAdmin--">getAdmin</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getAllOnlineRegions-org.apache.hadoop.hbase.MiniHBaseCluster-">getAllOnlineRegions</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClosestRowBefore-org.apache.hadoop.hbase.regionserver.Region-byte:A-by
 te:A-">getClosestRowBefore</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClusterKey--">getClusterKey</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConfiguration--">getConfiguration</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConnection--">getConnection</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS--">getDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS-java.lang.String-">getDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath--">getDefaultRootDirPath</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath-boolean-">getDefaultRootDirPath</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDFSCluster--">getDFSCluster</a>, <a href="../../../..
 /org/apache/hadoop/hbase/HBaseTestingUtility.html#getDifferentUser-org.apache.hadoop.conf.Configuration-java.lang.String-">getDifferentUser</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getFromStoreFile-org.apache.hadoop.hbase.regionserver.HStore-byte:A-java.util.NavigableSet-">getFromStoreFile</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getFromStoreFile-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.hbase.client.Get-">getFromStoreFile</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseAdmin--">getHBaseAdmin</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseCluster--">getHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseClusterInterface--">getHBaseClusterInterface</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHbck--">getHbck</a>, <a href="../../../../org/apache/hadoop/
 hbase/HBaseTestingUtility.html#getMetaRSPort-org.apache.hadoop.hbase.client.Connection-">getMetaRSPort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableDescriptor--">getMetaTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableDescriptorBuilder--">getMetaTableDescriptorBuilder</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows--">getMetaTableRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows-org.apache.hadoop.hbase.TableName-">getMetaTableRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMiniHBaseCluster--">getMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getNumHFiles-org.apache.hadoop.hbase.TableName-byte:A-">getNumHFiles</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getNumHFilesForRS-org.apache.hadoop.hb
 ase.regionserver.HRegionServer-org.apache.hadoop.hbase.TableName-byte:A-">getNumHFilesForRS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getOtherRegionServer-org.apache.hadoop.hbase.regionserver.HRegionServer-">getOtherRegionServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRegionSplitStartKeys-byte:A-byte:A-int-">getRegionSplitStartKeys</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRSForFirstRegionInTable-org.apache.hadoop.hbase.TableName-">getRSForFirstRegionInTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSplittableRegion-org.apache.hadoop.hbase.TableName-int-">getSplittableRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSupportedCompressionAlgorithms--">getSupportedCompressionAlgorithms</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem--">getTestFileSystem</a>, <a href
 ="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isReadShortCircuitOn--">isReadShortCircuitOn</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#killMiniHBaseCluster--">killMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRandomRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadRandomRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-boolean-">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.Region-byte:A-">
 loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-boolean-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-boolean-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSTagsAndOffheapCombination--">memStoreTSTagsAndOffheapCombination</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#modifyTableSync-org.
 apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.client.TableDescriptor-">modifyTableSync</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#moveRegionAndWait-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">moveRegionAndWait</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateNoRegionsInTransition--">predicateNoRegionsInTransition</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableAvailable-org.apache.hadoop.hbase.TableName-">predicateTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableDisabled-org.apache.hadoop.hbase.TableName-">predicateTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableEnabled-org.apache.hadoop.hbase.TableName-">predicateTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort--">rando
 mFreePort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomMultiCastAddress--">randomMultiCastAddress</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-int-">restartHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#safeGetAsStr-java.util.List-int-">safeGetAsStr</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-">setDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-boolean-">setDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFileSystemURI-java.lang.String-">setFileSystemURI</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseCluster-org.apache.hadoop.hbase.HBaseCluster-">setHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HB
 aseTestingUtility.html#setMaxRecoveryErrorCount-java.io.OutputStream-int-">setMaxRecoveryErrorCount</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setReplicas-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.TableName-int-">setReplicas</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDir--">setupDataTestDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupMiniKdc-java.io.File-">setupMiniKdc</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster--">shutdownMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniDFSCluster--">shutdownMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster--">shutdownMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster--">shutdownMiniMapR
 educeCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster--">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-">startMiniCluster</a>, <a href=".
 ./../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniCluster</a>, <a href="../../../../org/apache
 /hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-java.lang.String:A-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-java.lang.String:A-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSClusterForTestWAL-int-">startMiniDFSClusterForTestWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster--">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniH
 BaseCluster-int-int-java.util.List-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster--">startMiniMapReduceCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-">truncateTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-">truncateTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-byte:A-">unassignRegion</a>, <a href="../../../../org/apache/hadoop/hbas
 e/HBaseTestingUtility.html#unassignRegion-java.lang.String-">unassignRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-byte:A-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-java.lang.String-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-boolean-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hba
 se/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-boolean-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-int-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyTableDescriptorIgnoreTableName-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">verifyTableDescriptorIgnoreTableName</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitForHostPort-java.lang.String-int-">waitForHostPort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitLabelAvailable-long-java.lang.String...-">waitLabelAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-byte:A-long-">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBa
 seTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-long-">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-long-">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-org.apache.hadoop.hbase.TableName-long-">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-byte:A-long-">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTab
 leEnabled-org.apache.hadoop.hbase.TableName-long-">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-">waitUntilAllRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-long-">waitUntilAllRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllSystemRegionsAssigned--">waitUntilAllSystemRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition--">waitUntilNoRegionsInTransition</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition-long-">waitUntilNoRegionsInTransition</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.HBaseZKTestingUtility">


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/constant-values.html b/testdevapidocs/constant-values.html
index d3d862a..b479472 100644
--- a/testdevapidocs/constant-values.html
+++ b/testdevapidocs/constant-values.html
@@ -1771,6 +1771,39 @@
 </li>
 <li class="blockList">
 <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestHBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">TestHBaseTestingUtility</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.TestHBaseTestingUtility.NUMREGIONS">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/TestHBaseTestingUtility.html#NUMREGIONS">NUMREGIONS</a></code></td>
+<td class="colLast"><code>10</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.TestHBaseTestingUtility.NUMROWS">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/TestHBaseTestingUtility.html#NUMROWS">NUMROWS</a></code></td>
+<td class="colLast"><code>100</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.TestHBaseTestingUtility.NUMTABLES">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/TestHBaseTestingUtility.html#NUMTABLES">NUMTABLES</a></code></td>
+<td class="colLast"><code>1</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestIOFencing.html" title="class in org.apache.hadoop.hbase">TestIOFencing</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 300b530..f979b24 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -6911,6 +6911,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestSecureExport.html#cleanup--">cleanup()</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestSecureExport.html" title="class in org.apache.hadoop.hbase.coprocessor">TestSecureExport</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#cleanup--">cleanup()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/http/jmx/TestJMXJsonServlet.html#cleanup--">cleanup()</a></span> - Static method in class org.apache.hadoop.hbase.http.jmx.<a href="org/apache/hadoop/hbase/http/jmx/TestJMXJsonServlet.html" title="class in org.apache.hadoop.hbase.http.jmx">TestJMXJsonServlet</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/http/TestHttpServer.html#cleanup--">cleanup()</a></span> - Static method in class org.apache.hadoop.hbase.http.<a href="org/apache/hadoop/hbase/http/TestHttpServer.html" title="class in org.apache.hadoop.hbase.http">TestHttpServer</a></dt>
@@ -23181,6 +23183,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/chaos/factories/UnbalanceMonkeyFactory.html#killMetaRs">killMetaRs</a></span> - Variable in class org.apache.hadoop.hbase.chaos.factories.<a href="org/apache/hadoop/hbase/chaos/factories/UnbalanceMonkeyFactory.html" title="class in org.apache.hadoop.hbase.chaos.factories">UnbalanceMonkeyFactory</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#killMiniHBaseCluster--">killMiniHBaseCluster()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
+<dd>
+<div class="block">Abruptly Shutdown HBase mini cluster.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/chaos/actions/Action.html#killNameNode-org.apache.hadoop.hbase.ServerName-">killNameNode(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.chaos.actions.<a href="org/apache/hadoop/hbase/chaos/actions/Action.html" title="class in org.apache.hadoop.hbase.chaos.actions">Action</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/DistributedHBaseCluster.html#killNameNode-org.apache.hadoop.hbase.ServerName-">killNameNode(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/DistributedHBaseCluster.html" title="class in org.apache.hadoop.hbase">DistributedHBaseCluster</a></dt>
@@ -28942,6 +28948,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/LoadBalancerPerformanceEvaluation.html#numRegions">numRegions</a></span> - Variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/LoadBalancerPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase.master.balancer">LoadBalancerPerformanceEvaluation</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestHBaseTestingUtility.html#NUMREGIONS">NUMREGIONS</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestHBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">TestHBaseTestingUtility</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorServiceBackwardCompatibility.DummyCoprocessorService.html#numRegionServer">numRegionServer</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorServiceBackwardCompatibility.DummyCoprocessorService.html" title="class in org.apache.hadoop.hbase.coprocessor">TestCoprocessorServiceBackwardCompatibility.DummyCoprocessorService</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationEndpoint.html#numRegionServers">numRegionServers</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationEndpoint.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationEndpoint</a></dt>
@@ -29006,6 +29014,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/TestScannersWithFilters.html#numRows">numRows</a></span> - Static variable in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/TestScannersWithFilters.html" title="class in org.apache.hadoop.hbase.rest">TestScannersWithFilters</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestHBaseTestingUtility.html#NUMROWS">NUMROWS</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestHBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">TestHBaseTestingUtility</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.html#numRowsLoadedWithExp1">numRowsLoadedWithExp1</a></span> - Variable in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestWithCellVisibilityLoadAndVerify</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.html#numRowsLoadedWithExp2">numRowsLoadedWithExp2</a></span> - Variable in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestWithCellVisibilityLoadAndVerify</a></dt>
@@ -29054,6 +29064,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureSchedulerPerformanceEvaluation.html#numTables">numTables</a></span> - Variable in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureSchedulerPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureSchedulerPerformanceEvaluation</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestHBaseTestingUtility.html#NUMTABLES">NUMTABLES</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestHBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">TestHBaseTestingUtility</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/LoadTestTool.html#numTables">numTables</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/LoadTestTool.html" title="class in org.apache.hadoop.hbase.util">LoadTestTool</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html#numThreads">numThreads</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.html" title="class in org.apache.hadoop.hbase">IntegrationTestDDLMasterFailover</a></dt>
@@ -39951,7 +39963,7 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster--">shutdownMiniHBaseCluster()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
 <dd>
-<div class="block">Shutdown HBase mini cluster.</div>
+<div class="block">Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster--">shutdownMiniMapReduceCluster()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
 <dd>
@@ -51809,6 +51821,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#TestFIFOCompactionPolicy--">TestFIFOCompactionPolicy()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.compactions.<a href="org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">TestFIFOCompactionPolicy</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#testFIFOCompactionPolicyExpiredEmptyHFiles--">testFIFOCompactionPolicyExpiredEmptyHFiles()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.compactions.<a href="org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">TestFIFOCompactionPolicy</a></dt>
+<dd>
+<div class="block">Unit test for HBASE-21504</div>
+</dd>
 <dt><a href="org/apache/hadoop/hbase/ipc/TestFifoRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">TestFifoRpcScheduler</span></a> - Class in <a href="org/apache/hadoop/hbase/ipc/package-summary.html">org.apache.hadoop.hbase.ipc</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/TestFifoRpcScheduler.html#TestFifoRpcScheduler--">TestFifoRpcScheduler()</a></span> - Constructor for class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/TestFifoRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">TestFifoRpcScheduler</a></dt>
@@ -55066,6 +55082,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/TestEncryptionUtil.html#testKeyWrapping--">testKeyWrapping()</a></span> - Method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/TestEncryptionUtil.html" title="class in org.apache.hadoop.hbase.security">TestEncryptionUtil</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testKillMiniHBaseCluster--">testKillMiniHBaseCluster()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestHBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">TestHBaseTestingUtility</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestSerialReplicationFailover.html#testKillRS--">testKillRS()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestSerialReplicationFailover.html" title="class in org.apache.hadoop.hbase.replication">TestSerialReplicationFailover</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rsgroup/TestRSGroupsKillRS.html#testKillRS--">testKillRS()</a></span> - Method in class org.apache.hadoop.hbase.rsgroup.<a href="org/apache/hadoop/hbase/rsgroup/TestRSGroupsKillRS.html" title="class in org.apache.hadoop.hbase.rsgroup">TestRSGroupsKillRS</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
index 53aba37..6fa04ad 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
@@ -105,7 +105,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static interface <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3783">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></pre>
+<pre>static interface <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3805">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></pre>
 </li>
 </ul>
 </div>
@@ -149,7 +149,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>available</h4>
-<pre>boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html#line.3784">available</a>(int&nbsp;port)</pre>
+<pre>boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html#line.3806">available</a>(int&nbsp;port)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
index a276748..4bc39e5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3722">HBaseTestingUtility.PortAllocator</a>
+<pre>static class <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3744">HBaseTestingUtility.PortAllocator</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -250,7 +250,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MIN_RANDOM_PORT</h4>
-<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3723">MIN_RANDOM_PORT</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3745">MIN_RANDOM_PORT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.MIN_RANDOM_PORT">Constant Field Values</a></dd>
@@ -263,7 +263,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MAX_RANDOM_PORT</h4>
-<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3724">MAX_RANDOM_PORT</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3746">MAX_RANDOM_PORT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.MAX_RANDOM_PORT">Constant Field Values</a></dd>
@@ -276,7 +276,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>takenRandomPorts</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3727">takenRandomPorts</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3749">takenRandomPorts</a></pre>
 <div class="block">A set of ports that have been claimed using <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#randomFreePort--"><code>randomFreePort()</code></a>.</div>
 </li>
 </ul>
@@ -286,7 +286,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>random</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3729">random</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3751">random</a></pre>
 </li>
 </ul>
 <a name="portChecker">
@@ -295,7 +295,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>portChecker</h4>
-<pre>private final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3730">portChecker</a></pre>
+<pre>private final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3752">portChecker</a></pre>
 </li>
 </ul>
 </li>
@@ -312,7 +312,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>PortAllocator</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3732">PortAllocator</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random)</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3754">PortAllocator</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random)</pre>
 </li>
 </ul>
 <a name="PortAllocator-java.util.Random-org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.AvailablePortChecker-">
@@ -321,7 +321,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PortAllocator</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3748">PortAllocator</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3770">PortAllocator</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random,
                      <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a>&nbsp;portChecker)</pre>
 </li>
 </ul>
@@ -339,7 +339,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>randomFreePort</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3757">randomFreePort</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3779">randomFreePort</a>()</pre>
 <div class="block">Returns a random free port and marks that port as taken. Not thread-safe. Expected to be
  called from single-threaded test setup code/</div>
 </li>
@@ -350,7 +350,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>randomPort</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3778">randomPort</a>()</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3800">randomPort</a>()</pre>
 <div class="block">Returns a random port. These ports cannot be registered with IANA and are
  intended for dynamic allocation (see http://bit.ly/dynports).</div>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
index 8076874..b76fd78 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2123">HBaseTestingUtility.SeenRowTracker</a>
+<pre>public static class <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2145">HBaseTestingUtility.SeenRowTracker</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">A tracker for tracking and validating table rows
  generated with <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-"><code>HBaseTestingUtility.loadTable(Table, byte[])</code></a></div>
@@ -231,7 +231,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>dim</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2124">dim</a></pre>
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2146">dim</a></pre>
 </li>
 </ul>
 <a name="seenRows">
@@ -240,7 +240,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>seenRows</h4>
-<pre>int[][][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2125">seenRows</a></pre>
+<pre>int[][][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2147">seenRows</a></pre>
 </li>
 </ul>
 <a name="startRow">
@@ -249,7 +249,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>startRow</h4>
-<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2126">startRow</a></pre>
+<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2148">startRow</a></pre>
 </li>
 </ul>
 <a name="stopRow">
@@ -258,7 +258,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>stopRow</h4>
-<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2127">stopRow</a></pre>
+<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2149">stopRow</a></pre>
 </li>
 </ul>
 </li>
@@ -275,7 +275,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SeenRowTracker</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2129">SeenRowTracker</a>(byte[]&nbsp;startRow,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2151">SeenRowTracker</a>(byte[]&nbsp;startRow,
                       byte[]&nbsp;stopRow)</pre>
 </li>
 </ul>
@@ -293,7 +293,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>reset</h4>
-<pre>void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2134">reset</a>()</pre>
+<pre>void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2156">reset</a>()</pre>
 </li>
 </ul>
 <a name="i-byte-">
@@ -302,7 +302,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>i</h4>
-<pre>int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2140">i</a>(byte&nbsp;b)</pre>
+<pre>int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2162">i</a>(byte&nbsp;b)</pre>
 </li>
 </ul>
 <a name="addRow-byte:A-">
@@ -311,7 +311,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2144">addRow</a>(byte[]&nbsp;row)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2166">addRow</a>(byte[]&nbsp;row)</pre>
 </li>
 </ul>
 <a name="validate--">
@@ -320,7 +320,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>validate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2151">validate</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2173">validate</a>()</pre>
 <div class="block">Validate that all the rows between startRow and stopRow are seen exactly once, and
  all other rows none</div>
 </li>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/org/apache/hadoop/hbase/TestHBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestHBaseTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/TestHBaseTestingUtility.html
index da74c1c..8a4c5fe 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestHBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestHBaseTestingUtility.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};
+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};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.64">TestHBaseTestingUtility</a>
+<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.60">TestHBaseTestingUtility</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Test our testing utility class</div>
 </li>
@@ -142,6 +142,18 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colFirst"><code>org.junit.rules.TestName</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#name">name</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#NUMREGIONS">NUMREGIONS</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#NUMROWS">NUMROWS</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#NUMTABLES">NUMTABLES</a></span></code>&nbsp;</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -176,59 +188,63 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i0" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMiniCluster--">testMiniCluster</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testKillMiniHBaseCluster--">testKillMiniHBaseCluster</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/TestHBaseTestingUtility.html#testMiniClusterBindToWildcard--">testMiniClusterBindToWildcard</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMiniCluster--">testMiniCluster</a></span>()</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/TestHBaseTestingUtility.html#testMiniClusterWithSSLOn--">testMiniClusterWithSSLOn</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMiniClusterBindToWildcard--">testMiniClusterBindToWildcard</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i3" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMiniDFSCluster--">testMiniDFSCluster</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMiniClusterWithSSLOn--">testMiniClusterWithSSLOn</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i4" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMiniZooKeeperWithMultipleClientPorts--">testMiniZooKeeperWithMultipleClientPorts</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMiniDFSCluster--">testMiniDFSCluster</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i5" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMiniZooKeeperWithMultipleServers--">testMiniZooKeeperWithMultipleServers</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMiniZooKeeperWithMultipleClientPorts--">testMiniZooKeeperWithMultipleClientPorts</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i6" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMiniZooKeeperWithOneServer--">testMiniZooKeeperWithOneServer</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMiniZooKeeperWithMultipleServers--">testMiniZooKeeperWithMultipleServers</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i7" class="rowColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMiniZooKeeperWithOneServer--">testMiniZooKeeperWithOneServer</a></span>()</code>&nbsp;</td>
+</tr>
+<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/TestHBaseTestingUtility.html#testMultiClusters--">testMultiClusters</a></span>()</code>
 <div class="block">Basic sanity test that spins up multiple HDFS and HBase clusters that share
  the same ZK ensemble.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testMultipleStartStop--">testMultipleStartStop</a></span>()</code>
 <div class="block">Test that we can start and stop multiple time a cluster
    with the same HBaseTestingUtility.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testOverridingOfDefaultPorts--">testOverridingOfDefaultPorts</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testResolvePortConflict--">testResolvePortConflict</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testSetupClusterTestBuildDir--">testSetupClusterTestBuildDir</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestHBaseTestingUtility.html#testTestDir--">testTestDir</a></span>()</code>&nbsp;</td>
 </tr>
@@ -254,13 +270,52 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Field Detail</h3>
+<a name="NUMTABLES">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>NUMTABLES</h4>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.61">NUMTABLES</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.TestHBaseTestingUtility.NUMTABLES">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="NUMROWS">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>NUMROWS</h4>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.62">NUMROWS</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.TestHBaseTestingUtility.NUMROWS">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="NUMREGIONS">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>NUMREGIONS</h4>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.63">NUMREGIONS</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.TestHBaseTestingUtility.NUMREGIONS">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="CLASS_RULE">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.67">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.66">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -269,7 +324,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.70">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.69">LOG</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -278,7 +333,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.73">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.72">name</a></pre>
 </li>
 </ul>
 </li>
@@ -295,7 +350,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestHBaseTestingUtility</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.64">TestHBaseTestingUtility</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.60">TestHBaseTestingUtility</a>()</pre>
 </li>
 </ul>
 </li>
@@ -312,7 +367,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMultiClusters</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.82">testMultiClusters</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.81">testMultiClusters</a>()
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Basic sanity test that spins up multiple HDFS and HBase clusters that share
  the same ZK ensemble. We then create the same table in both and make sure
@@ -329,7 +384,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.143">testMiniCluster</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.142">testMiniCluster</a>()
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -343,7 +398,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniClusterBindToWildcard</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.155">testMiniClusterBindToWildcard</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.154">testMiniClusterBindToWildcard</a>()
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -357,7 +412,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniClusterWithSSLOn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.167">testMiniClusterWithSSLOn</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.166">testMiniClusterWithSSLOn</a>()
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -371,7 +426,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMultipleStartStop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.196">testMultipleStartStop</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.195">testMultipleStartStop</a>()
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test that we can start and stop multiple time a cluster
    with the same HBaseTestingUtility.</div>
@@ -387,7 +442,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniZooKeeperWithOneServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.213">testMiniZooKeeperWithOneServer</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.212">testMiniZooKeeperWithOneServer</a>()
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -401,7 +456,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniZooKeeperWithMultipleServers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.225">testMiniZooKeeperWithMultipleServers</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.224">testMiniZooKeeperWithMultipleServers</a>()
                                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -415,7 +470,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniZooKeeperWithMultipleClientPorts</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.267">testMiniZooKeeperWithMultipleClientPorts</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.266">testMiniZooKeeperWithMultipleClientPorts</a>()
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -429,7 +484,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMiniDFSCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.371">testMiniDFSCluster</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.370">testMiniDFSCluster</a>()
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -443,7 +498,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSetupClusterTestBuildDir</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.384">testSetupClusterTestBuildDir</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.383">testSetupClusterTestBuildDir</a>()
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -457,7 +512,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testTestDir</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.399">testTestDir</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.398">testTestDir</a>()
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -471,7 +526,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testResolvePortConflict</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.409">testResolvePortConflict</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.408">testResolvePortConflict</a>()
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -482,10 +537,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="testOverridingOfDefaultPorts--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>testOverridingOfDefaultPorts</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.439">testOverridingOfDefaultPorts</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.438">testOverridingOfDefaultPorts</a>()
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -493,6 +548,20 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="testKillMiniHBaseCluster--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testKillMiniHBaseCluster</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestHBaseTestingUtility.html#line.477">testKillMiniHBaseCluster</a>()
+                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/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 8c9e190..bd291d1 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -579,15 +579,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/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/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/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/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/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/testdevapidocs/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html
index a2c911f..8607c59 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":9,"i3":9,"i4":10,"i5":10,"i6":10,"i7":10};
+var methods = {"i0":10,"i1":10,"i2":9,"i3":9,"i4":10,"i5":10,"i6":10,"i7":10,"i8":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";
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.60">TestFIFOCompactionPolicy</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.63">TestFIFOCompactionPolicy</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -203,18 +203,24 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i4" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#testPurgeExpiredFiles--">testPurgeExpiredFiles</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#testFIFOCompactionPolicyExpiredEmptyHFiles--">testFIFOCompactionPolicyExpiredEmptyHFiles</a></span>()</code>
+<div class="block">Unit test for HBASE-21504</div>
+</td>
 </tr>
 <tr id="i5" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#testSanityCheckBlockingStoreFiles--">testSanityCheckBlockingStoreFiles</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#testPurgeExpiredFiles--">testPurgeExpiredFiles</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i6" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#testSanityCheckMinVersion--">testSanityCheckMinVersion</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#testSanityCheckBlockingStoreFiles--">testSanityCheckBlockingStoreFiles</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i7" class="rowColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#testSanityCheckMinVersion--">testSanityCheckMinVersion</a></span>()</code>&nbsp;</td>
+</tr>
+<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/regionserver/compactions/TestFIFOCompactionPolicy.html#testSanityCheckTTL--">testSanityCheckTTL</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
@@ -245,7 +251,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.63">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.66">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -254,7 +260,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.66">TEST_UTIL</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.69">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="tableName">
@@ -263,7 +269,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tableName</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.68">tableName</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.71">tableName</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -272,7 +278,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.70">family</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.73">family</a></pre>
 </li>
 </ul>
 <a name="qualifier">
@@ -281,7 +287,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>qualifier</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.72">qualifier</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.75">qualifier</a></pre>
 </li>
 </ul>
 <a name="error">
@@ -290,7 +296,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>error</h4>
-<pre>public&nbsp;org.junit.rules.ExpectedException <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.75">error</a></pre>
+<pre>public&nbsp;org.junit.rules.ExpectedException <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.78">error</a></pre>
 </li>
 </ul>
 </li>
@@ -307,7 +313,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestFIFOCompactionPolicy</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.60">TestFIFOCompactionPolicy</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.63">TestFIFOCompactionPolicy</a>()</pre>
 </li>
 </ul>
 </li>
@@ -324,7 +330,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreWithName</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HStore&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.77">getStoreWithName</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HStore&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.80">getStoreWithName</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</pre>
 </li>
 </ul>
 <a name="prepareData--">
@@ -333,7 +339,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareData</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HStore&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.89">prepareData</a>()
+<pre>private&nbsp;org.apache.hadoop.hbase.regionserver.HStore&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.92">prepareData</a>()
                                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -347,7 +353,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setEnvironmentEdge</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.115">setEnvironmentEdge</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.118">setEnvironmentEdge</a>()
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -361,7 +367,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>resetEnvironmentEdge</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.124">resetEnvironmentEdge</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.127">resetEnvironmentEdge</a>()
                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -375,7 +381,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testPurgeExpiredFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.130">testPurgeExpiredFiles</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.133">testPurgeExpiredFiles</a>()
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -389,7 +395,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSanityCheckTTL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.149">testSanityCheckTTL</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.152">testSanityCheckTTL</a>()
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -403,7 +409,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSanityCheckMinVersion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.163">testSanityCheckMinVersion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.166">testSanityCheckMinVersion</a>()
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -414,10 +420,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="testSanityCheckBlockingStoreFiles--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>testSanityCheckBlockingStoreFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.179">testSanityCheckBlockingStoreFiles</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.182">testSanityCheckBlockingStoreFiles</a>()
                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -425,6 +431,21 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="testFIFOCompactionPolicyExpiredEmptyHFiles--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testFIFOCompactionPolicyExpiredEmptyHFiles</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/compactions/TestFIFOCompactionPolicy.html#line.202">testFIFOCompactionPolicyExpiredEmptyHFiles</a>()
+                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<div class="block">Unit test for HBASE-21504</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

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

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

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


[20/26] hbase-site git commit: Published site at dfeab9f5c968625ac1c642c53c721eb5e81068c0.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/32cb0f25/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 981ebcd..b8c030f 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
@@ -237,1811 +237,1817 @@
 <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>  private void waitForSystemTable(Admin admin, TableName tableName) throws IOException {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    long TIMEOUT = 60000;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    long startTime = EnvironmentEdgeManager.currentTime();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    while (!admin.tableExists(tableName) || !admin.isTableAvailable(tableName)) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      try {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        Thread.sleep(100);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      } catch (InterruptedException e) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      if (EnvironmentEdgeManager.currentTime() - startTime &gt; TIMEOUT) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        throw new IOException(<a name="line.240"></a>
-<span class="sourceLineNo">241</span>          "Failed to create backup system table " + tableName + " after " + TIMEOUT + "ms");<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    LOG.debug("Backup table " + tableName + " exists and available");<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>  @Override<a name="line.247"></a>
-<span class="sourceLineNo">248</span>  public void close() {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // do nothing<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>  /**<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * Updates status (state) of a backup session in backup system table table<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   * @param info backup info<a name="line.254"></a>
-<span class="sourceLineNo">255</span>   * @throws IOException exception<a name="line.255"></a>
-<span class="sourceLineNo">256</span>   */<a name="line.256"></a>
-<span class="sourceLineNo">257</span>  public void updateBackupInfo(BackupInfo info) throws IOException {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    if (LOG.isTraceEnabled()) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      LOG.trace("update backup status in backup system table for: " + info.getBackupId()<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        + " set status=" + info.getState());<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    try (Table table = connection.getTable(tableName)) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      Put put = createPutForBackupInfo(info);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      table.put(put);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>  }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>  /*<a name="line.268"></a>
-<span class="sourceLineNo">269</span>   * @param backupId the backup Id<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * @return Map of rows to path of bulk loaded hfile<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   */<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  Map&lt;byte[], String&gt; readBulkLoadedFiles(String backupId) throws IOException {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    Scan scan = BackupSystemTable.createScanForBulkLoadedFiles(backupId);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    try (Table table = connection.getTable(bulkLoadTableName);<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      Result res = null;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      Map&lt;byte[], String&gt; map = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      while ((res = scanner.next()) != null) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        res.advance();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        byte[] row = CellUtil.cloneRow(res.listCells().get(0));<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        for (Cell cell : res.listCells()) {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.282"></a>
-<span class="sourceLineNo">283</span>            BackupSystemTable.PATH_COL.length) == 0) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>            map.put(row, Bytes.toString(CellUtil.cloneValue(cell)));<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>      return map;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    }<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>  /*<a name="line.292"></a>
-<span class="sourceLineNo">293</span>   * Used during restore<a name="line.293"></a>
-<span class="sourceLineNo">294</span>   * @param backupId the backup Id<a name="line.294"></a>
-<span class="sourceLineNo">295</span>   * @param sTableList List of tables<a name="line.295"></a>
-<span class="sourceLineNo">296</span>   * @return array of Map of family to List of Paths<a name="line.296"></a>
-<span class="sourceLineNo">297</span>   */<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public Map&lt;byte[], List&lt;Path&gt;&gt;[] readBulkLoadedFiles(String backupId, List&lt;TableName&gt; sTableList)<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      throws IOException {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    Scan scan = BackupSystemTable.createScanForBulkLoadedFiles(backupId);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    Map&lt;byte[], List&lt;Path&gt;&gt;[] mapForSrc = new Map[sTableList == null ? 1 : sTableList.size()];<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    try (Table table = connection.getTable(bulkLoadTableName);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      Result res = null;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      while ((res = scanner.next()) != null) {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        res.advance();<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        TableName tbl = null;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        byte[] fam = null;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        String path = null;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        for (Cell cell : res.listCells()) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>          if (CellUtil.compareQualifiers(cell, BackupSystemTable.TBL_COL, 0,<a name="line.311"></a>
-<span class="sourceLineNo">312</span>            BackupSystemTable.TBL_COL.length) == 0) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>            tbl = TableName.valueOf(CellUtil.cloneValue(cell));<a name="line.313"></a>
-<span class="sourceLineNo">314</span>          } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.FAM_COL, 0,<a name="line.314"></a>
-<span class="sourceLineNo">315</span>            BackupSystemTable.FAM_COL.length) == 0) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>            fam = CellUtil.cloneValue(cell);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>          } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.317"></a>
-<span class="sourceLineNo">318</span>            BackupSystemTable.PATH_COL.length) == 0) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>            path = Bytes.toString(CellUtil.cloneValue(cell));<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>        int srcIdx = IncrementalTableBackupClient.getIndex(tbl, sTableList);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        if (srcIdx == -1) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          // the table is not among the query<a name="line.324"></a>
-<span class="sourceLineNo">325</span>          continue;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        }<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        if (mapForSrc[srcIdx] == null) {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>          mapForSrc[srcIdx] = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        }<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        List&lt;Path&gt; files;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        if (!mapForSrc[srcIdx].containsKey(fam)) {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          files = new ArrayList&lt;Path&gt;();<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          mapForSrc[srcIdx].put(fam, files);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        } else {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          files = mapForSrc[srcIdx].get(fam);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        }<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        files.add(new Path(path));<a name="line.337"></a>
-<span class="sourceLineNo">338</span>        if (LOG.isDebugEnabled()) {<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          LOG.debug("found bulk loaded file : " + tbl + " " + Bytes.toString(fam) + " " + path);<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      }<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>      return mapForSrc;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>  /**<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   * Deletes backup status from backup system table table<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   * @param backupId backup id<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * @throws IOException exception<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  public void deleteBackupInfo(String backupId) throws IOException {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    if (LOG.isTraceEnabled()) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      LOG.trace("delete backup status in backup system table for " + backupId);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    }<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    try (Table table = connection.getTable(tableName)) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      Delete del = createDeleteForBackupInfo(backupId);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      table.delete(del);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  /*<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * For postBulkLoadHFile() hook.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * @param tabName table name<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * @param region the region receiving hfile<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @param finalPaths family and associated hfiles<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void writePathsPostBulkLoad(TableName tabName, byte[] region,<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      Map&lt;byte[], List&lt;Path&gt;&gt; finalPaths) throws IOException {<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    if (LOG.isDebugEnabled()) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      LOG.debug("write bulk load descriptor to backup " + tabName + " with " + finalPaths.size()<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        + " entries");<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      List&lt;Put&gt; puts = BackupSystemTable.createPutForCommittedBulkload(tabName, region, finalPaths);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      table.put(puts);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      LOG.debug("written " + puts.size() + " rows for bulk load of " + tabName);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    }<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  }<a name="line.379"></a>
-<span class="sourceLineNo">380</span><a name="line.380"></a>
-<span class="sourceLineNo">381</span>  /*<a name="line.381"></a>
-<span class="sourceLineNo">382</span>   * For preCommitStoreFile() hook<a name="line.382"></a>
-<span class="sourceLineNo">383</span>   * @param tabName table name<a name="line.383"></a>
-<span class="sourceLineNo">384</span>   * @param region the region receiving hfile<a name="line.384"></a>
-<span class="sourceLineNo">385</span>   * @param family column family<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   * @param pairs list of paths for hfiles<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   */<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void writeFilesForBulkLoadPreCommit(TableName tabName, byte[] region, final byte[] family,<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      final List&lt;Pair&lt;Path, Path&gt;&gt; pairs) throws IOException {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    if (LOG.isDebugEnabled()) {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      LOG.debug(<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        "write bulk load descriptor to backup " + tabName + " with " + pairs.size() + " entries");<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      List&lt;Put&gt; puts =<a name="line.395"></a>
-<span class="sourceLineNo">396</span>          BackupSystemTable.createPutForPreparedBulkload(tabName, region, family, pairs);<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      table.put(puts);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      LOG.debug("written " + puts.size() + " rows for bulk load of " + tabName);<a name="line.398"></a>
+<span class="sourceLineNo">232</span>    // Return fast if the table is available and avoid a log message<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    if (admin.tableExists(tableName) &amp;&amp; admin.isTableAvailable(tableName)) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      return;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    long TIMEOUT = 60000;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    long startTime = EnvironmentEdgeManager.currentTime();<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    LOG.debug("Backup table {} is not present and available, waiting for it to become so",<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        tableName);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    while (!admin.tableExists(tableName) || !admin.isTableAvailable(tableName)) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      try {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        Thread.sleep(100);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      } catch (InterruptedException e) {<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      }<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      if (EnvironmentEdgeManager.currentTime() - startTime &gt; TIMEOUT) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>        throw new IOException(<a name="line.246"></a>
+<span class="sourceLineNo">247</span>          "Failed to create backup system table " + tableName + " after " + TIMEOUT + "ms");<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>    LOG.debug("Backup table {} exists and available", tableName);<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>  @Override<a name="line.253"></a>
+<span class="sourceLineNo">254</span>  public void close() {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    // do nothing<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  /**<a name="line.258"></a>
+<span class="sourceLineNo">259</span>   * Updates status (state) of a backup session in backup system table table<a name="line.259"></a>
+<span class="sourceLineNo">260</span>   * @param info backup info<a name="line.260"></a>
+<span class="sourceLineNo">261</span>   * @throws IOException exception<a name="line.261"></a>
+<span class="sourceLineNo">262</span>   */<a name="line.262"></a>
+<span class="sourceLineNo">263</span>  public void updateBackupInfo(BackupInfo info) throws IOException {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    if (LOG.isTraceEnabled()) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      LOG.trace("update backup status in backup system table for: " + info.getBackupId()<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        + " set status=" + info.getState());<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    try (Table table = connection.getTable(tableName)) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      Put put = createPutForBackupInfo(info);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      table.put(put);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  }<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>  /*<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   * @param backupId the backup Id<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   * @return Map of rows to path of bulk loaded hfile<a name="line.276"></a>
+<span class="sourceLineNo">277</span>   */<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  Map&lt;byte[], String&gt; readBulkLoadedFiles(String backupId) 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>    try (Table table = connection.getTable(bulkLoadTableName);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      Result res = null;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      Map&lt;byte[], String&gt; map = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<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>        byte[] row = CellUtil.cloneRow(res.listCells().get(0));<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        for (Cell cell : res.listCells()) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.288"></a>
+<span class="sourceLineNo">289</span>            BackupSystemTable.PATH_COL.length) == 0) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>            map.put(row, Bytes.toString(CellUtil.cloneValue(cell)));<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        }<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      }<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      return map;<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>  /*<a name="line.298"></a>
+<span class="sourceLineNo">299</span>   * Used during restore<a name="line.299"></a>
+<span class="sourceLineNo">300</span>   * @param backupId the backup Id<a name="line.300"></a>
+<span class="sourceLineNo">301</span>   * @param sTableList List of tables<a name="line.301"></a>
+<span class="sourceLineNo">302</span>   * @return array of Map of family to List of Paths<a name="line.302"></a>
+<span class="sourceLineNo">303</span>   */<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  public Map&lt;byte[], List&lt;Path&gt;&gt;[] readBulkLoadedFiles(String backupId, List&lt;TableName&gt; sTableList)<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      throws IOException {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    Scan scan = BackupSystemTable.createScanForBulkLoadedFiles(backupId);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    Map&lt;byte[], List&lt;Path&gt;&gt;[] mapForSrc = new Map[sTableList == null ? 1 : sTableList.size()];<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    try (Table table = connection.getTable(bulkLoadTableName);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      Result res = null;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      while ((res = scanner.next()) != null) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        res.advance();<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        TableName tbl = null;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        byte[] fam = null;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        String path = null;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        for (Cell cell : res.listCells()) {<a name="line.316"></a>
+<span class="sourceLineNo">317</span>          if (CellUtil.compareQualifiers(cell, BackupSystemTable.TBL_COL, 0,<a name="line.317"></a>
+<span class="sourceLineNo">318</span>            BackupSystemTable.TBL_COL.length) == 0) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>            tbl = TableName.valueOf(CellUtil.cloneValue(cell));<a name="line.319"></a>
+<span class="sourceLineNo">320</span>          } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.FAM_COL, 0,<a name="line.320"></a>
+<span class="sourceLineNo">321</span>            BackupSystemTable.FAM_COL.length) == 0) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>            fam = CellUtil.cloneValue(cell);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.323"></a>
+<span class="sourceLineNo">324</span>            BackupSystemTable.PATH_COL.length) == 0) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>            path = Bytes.toString(CellUtil.cloneValue(cell));<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>        int srcIdx = IncrementalTableBackupClient.getIndex(tbl, sTableList);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        if (srcIdx == -1) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          // the table is not among the query<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          continue;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        }<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        if (mapForSrc[srcIdx] == null) {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          mapForSrc[srcIdx] = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        }<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        List&lt;Path&gt; files;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        if (!mapForSrc[srcIdx].containsKey(fam)) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>          files = new ArrayList&lt;Path&gt;();<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          mapForSrc[srcIdx].put(fam, files);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        } else {<a name="line.340"></a>
+<span class="sourceLineNo">341</span>          files = mapForSrc[srcIdx].get(fam);<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
+<span class="sourceLineNo">343</span>        files.add(new Path(path));<a name="line.343"></a>
+<span class="sourceLineNo">344</span>        if (LOG.isDebugEnabled()) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>          LOG.debug("found bulk loaded file : " + tbl + " " + Bytes.toString(fam) + " " + path);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>        }<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      }<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>      return mapForSrc;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
+<span class="sourceLineNo">352</span><a name="line.352"></a>
+<span class="sourceLineNo">353</span>  /**<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * Deletes backup status from backup system table table<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param backupId backup id<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @throws IOException exception<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  public void deleteBackupInfo(String backupId) throws IOException {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (LOG.isTraceEnabled()) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      LOG.trace("delete backup status in backup system table for " + backupId);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    }<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    try (Table table = connection.getTable(tableName)) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      Delete del = createDeleteForBackupInfo(backupId);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      table.delete(del);<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><a name="line.367"></a>
+<span class="sourceLineNo">368</span>  /*<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * For postBulkLoadHFile() hook.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   * @param tabName table name<a name="line.370"></a>
+<span class="sourceLineNo">371</span>   * @param region the region receiving hfile<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * @param finalPaths family and associated hfiles<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public void writePathsPostBulkLoad(TableName tabName, byte[] region,<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      Map&lt;byte[], List&lt;Path&gt;&gt; finalPaths) throws IOException {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    if (LOG.isDebugEnabled()) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      LOG.debug("write bulk load descriptor to backup " + tabName + " with " + finalPaths.size()<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        + " entries");<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      List&lt;Put&gt; puts = BackupSystemTable.createPutForCommittedBulkload(tabName, region, finalPaths);<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      table.put(puts);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      LOG.debug("written " + puts.size() + " rows for bulk load of " + tabName);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>  /*<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * For preCommitStoreFile() hook<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * @param tabName table name<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   * @param region the region receiving hfile<a name="line.390"></a>
+<span class="sourceLineNo">391</span>   * @param family column family<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * @param pairs list of paths for hfiles<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  public void writeFilesForBulkLoadPreCommit(TableName tabName, byte[] region, final byte[] family,<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      final List&lt;Pair&lt;Path, Path&gt;&gt; pairs) throws IOException {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    if (LOG.isDebugEnabled()) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      LOG.debug(<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        "write bulk load descriptor to backup " + tabName + " with " + pairs.size() + " entries");<a name="line.398"></a>
 <span class="sourceLineNo">399</span>    }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  /*<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * Removes rows recording bulk loaded hfiles from backup table<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @param lst list of table names<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * @param rows the rows to be deleted<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public void deleteBulkLoadedRows(List&lt;byte[]&gt; rows) throws IOException {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      List&lt;Delete&gt; lstDels = new ArrayList&lt;&gt;();<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      for (byte[] row : rows) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        Delete del = new Delete(row);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        lstDels.add(del);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        LOG.debug("orig deleting the row: " + Bytes.toString(row));<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      table.delete(lstDels);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      LOG.debug("deleted " + rows.size() + " original bulkload rows");<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><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /*<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * Reads the rows from backup table recording bulk loaded hfiles<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * @param tableList list of table names<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * @return The keys of the Map are table, region and column family. Value of the map reflects<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * whether the hfile was recorded by preCommitStoreFile hook (true)<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   */<a name="line.425"></a>
-<span class="sourceLineNo">426</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.426"></a>
-<span class="sourceLineNo">427</span>    readBulkloadRows(List&lt;TableName&gt; tableList) throws IOException {<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</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.429"></a>
-<span class="sourceLineNo">430</span>    List&lt;byte[]&gt; rows = new ArrayList&lt;&gt;();<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    for (TableName tTable : tableList) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      Scan scan = BackupSystemTable.createScanForOrigBulkLoadedFiles(tTable);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      Map&lt;String, Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;&gt; tblMap = map.get(tTable);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      try (Table table = connection.getTable(bulkLoadTableName);<a name="line.434"></a>
-<span class="sourceLineNo">435</span>          ResultScanner scanner = table.getScanner(scan)) {<a name="line.435"></a>
-<span class="sourceLineNo">436</span>        Result res = null;<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        while ((res = scanner.next()) != null) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>          res.advance();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          String fam = null;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          String path = null;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>          boolean raw = false;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>          byte[] row;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>          String region = null;<a name="line.443"></a>
-<span class="sourceLineNo">444</span>          for (Cell cell : res.listCells()) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>            row = CellUtil.cloneRow(cell);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>            rows.add(row);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>            String rowStr = Bytes.toString(row);<a name="line.447"></a>
-<span class="sourceLineNo">448</span>            region = BackupSystemTable.getRegionNameFromOrigBulkLoadRow(rowStr);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>            if (CellUtil.compareQualifiers(cell, BackupSystemTable.FAM_COL, 0,<a name="line.449"></a>
-<span class="sourceLineNo">450</span>              BackupSystemTable.FAM_COL.length) == 0) {<a name="line.450"></a>
-<span class="sourceLineNo">451</span>              fam = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.451"></a>
-<span class="sourceLineNo">452</span>            } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              BackupSystemTable.PATH_COL.length) == 0) {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>              path = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.454"></a>
-<span class="sourceLineNo">455</span>            } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.STATE_COL, 0,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>              BackupSystemTable.STATE_COL.length) == 0) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>              byte[] state = CellUtil.cloneValue(cell);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>              if (Bytes.equals(BackupSystemTable.BL_PREPARE, state)) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>                raw = true;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>              } else {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>                raw = false;<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>          }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>          if (map.get(tTable) == null) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>            map.put(tTable, new HashMap&lt;&gt;());<a name="line.466"></a>
-<span class="sourceLineNo">467</span>            tblMap = map.get(tTable);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>          }<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          if (tblMap.get(region) == null) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>            tblMap.put(region, new HashMap&lt;&gt;());<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>          Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt; famMap = tblMap.get(region);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>          if (famMap.get(fam) == null) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>            famMap.put(fam, new ArrayList&lt;&gt;());<a name="line.474"></a>
-<span class="sourceLineNo">475</span>          }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>          famMap.get(fam).add(new Pair&lt;&gt;(path, raw));<a name="line.476"></a>
-<span class="sourceLineNo">477</span>          LOG.debug("found orig " + path + " for " + fam + " of table " + region);<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>    return new Pair&lt;&gt;(map, rows);<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>  /*<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param sTableList List of tables<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param maps array of Map of family to List of Paths<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param backupId the backup Id<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   */<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  public void writeBulkLoadedFiles(List&lt;TableName&gt; sTableList, Map&lt;byte[], List&lt;Path&gt;&gt;[] maps,<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      String backupId) throws IOException {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      long ts = EnvironmentEdgeManager.currentTime();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      int cnt = 0;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      for (int idx = 0; idx &lt; maps.length; idx++) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        Map&lt;byte[], List&lt;Path&gt;&gt; map = maps[idx];<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        TableName tn = sTableList.get(idx);<a name="line.497"></a>
-<span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>        if (map == null) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>          continue;<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>        for (Map.Entry&lt;byte[], List&lt;Path&gt;&gt; entry : map.entrySet()) {<a name="line.503"></a>
-<span class="sourceLineNo">504</span>          byte[] fam = entry.getKey();<a name="line.504"></a>
-<span class="sourceLineNo">505</span>          List&lt;Path&gt; paths = entry.getValue();<a name="line.505"></a>
-<span class="sourceLineNo">506</span>          for (Path p : paths) {<a name="line.506"></a>
-<span class="sourceLineNo">507</span>            Put put = BackupSystemTable.createPutForBulkLoadedFile(tn, fam, p.toString(), backupId,<a name="line.507"></a>
-<span class="sourceLineNo">508</span>              ts, cnt++);<a name="line.508"></a>
-<span class="sourceLineNo">509</span>            puts.add(put);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>          }<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        }<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>      if (!puts.isEmpty()) {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        table.put(puts);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      }<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>  }<a name="line.517"></a>
-<span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span>  /**<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * Reads backup status object (instance of backup info) from backup system table table<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param backupId backup id<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @return Current status of backup session or null<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   */<a name="line.523"></a>
-<span class="sourceLineNo">524</span>  public BackupInfo readBackupInfo(String backupId) throws IOException {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    if (LOG.isTraceEnabled()) {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      LOG.trace("read backup status from backup system table for: " + backupId);<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>    try (Table table = connection.getTable(tableName)) {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      Get get = createGetForBackupInfo(backupId);<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      Result res = table.get(get);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      if (res.isEmpty()) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        return null;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      return resultToBackupInfo(res);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    }<a name="line.536"></a>
-<span class="sourceLineNo">537</span>  }<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span>  /**<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * Read the last backup start code (timestamp) of last successful backup. Will return null if<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * there is no start code stored on hbase or the value is of length 0. These two cases indicate<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * there is no successful backup completed so far.<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @param backupRoot directory path to backup destination<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * @return the timestamp of last successful backup<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   * @throws IOException exception<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   */<a name="line.546"></a>
-<span class="sourceLineNo">547</span>  public String readBackupStartCode(String backupRoot) throws IOException {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    LOG.trace("read backup start code from backup system table");<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    try (Table table = connection.getTable(tableName)) {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      Get get = createGetForStartCode(backupRoot);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      Result res = table.get(get);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      if (res.isEmpty()) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>        return null;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      Cell cell = res.listCells().get(0);<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      byte[] val = CellUtil.cloneValue(cell);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      if (val.length == 0) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        return null;<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      }<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      return new String(val);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    }<a name="line.562"></a>
-<span class="sourceLineNo">563</span>  }<a name="line.563"></a>
-<span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span>  /**<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   * Write the start code (timestamp) to backup system table. If passed in null, then write 0 byte.<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * @param startCode start code<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * @param backupRoot root directory path to backup<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   * @throws IOException exception<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   */<a name="line.570"></a>
-<span class="sourceLineNo">571</span>  public void writeBackupStartCode(Long startCode, String backupRoot) throws IOException {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    if (LOG.isTraceEnabled()) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      LOG.trace("write backup start code to backup system table " + startCode);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    }<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    try (Table table = connection.getTable(tableName)) {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      Put put = createPutForStartCode(startCode.toString(), backupRoot);<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      table.put(put);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span>  /**<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * Exclusive operations are: create, delete, merge<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * @throws IOException if a table operation fails or an active backup exclusive operation is<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   *           already underway<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   */<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void startBackupExclusiveOperation() throws IOException {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    LOG.debug("Start new backup exclusive operation");<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span>    try (Table table = connection.getTable(tableName)) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      Put put = createPutForStartBackupSession();<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      // First try to put if row does not exist<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.592"></a>
-<span class="sourceLineNo">593</span>          .ifNotExists().thenPut(put)) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>        // Row exists, try to put if value == ACTIVE_SESSION_NO<a name="line.594"></a>
-<span class="sourceLineNo">595</span>        if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.595"></a>
-<span class="sourceLineNo">596</span>            .ifEquals(ACTIVE_SESSION_NO).thenPut(put)) {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>          throw new ExclusiveOperationException();<a name="line.597"></a>
-<span class="sourceLineNo">598</span>        }<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>  }<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>  private Put createPutForStartBackupSession() {<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    Put put = new Put(ACTIVE_SESSION_ROW);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    put.addColumn(SESSIONS_FAMILY, ACTIVE_SESSION_COL, ACTIVE_SESSION_YES);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    return put;<a name="line.606"></a>
+<span class="sourceLineNo">400</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      List&lt;Put&gt; puts =<a name="line.401"></a>
+<span class="sourceLineNo">402</span>          BackupSystemTable.createPutForPreparedBulkload(tabName, region, family, pairs);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      table.put(puts);<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      LOG.debug("written " + puts.size() + " rows for bulk load of " + tabName);<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>  /*<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Removes rows recording bulk loaded hfiles from backup table<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * @param lst list of table names<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * @param rows the rows to be deleted<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   */<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  public void deleteBulkLoadedRows(List&lt;byte[]&gt; rows) throws IOException {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      List&lt;Delete&gt; lstDels = new ArrayList&lt;&gt;();<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      for (byte[] row : rows) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        Delete del = new Delete(row);<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        lstDels.add(del);<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        LOG.debug("orig deleting the row: " + Bytes.toString(row));<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      table.delete(lstDels);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      LOG.debug("deleted " + rows.size() + " original bulkload rows");<a name="line.422"></a>
+<span class="sourceLineNo">423</span>    }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  }<a name="line.424"></a>
+<span class="sourceLineNo">425</span><a name="line.425"></a>
+<span class="sourceLineNo">426</span>  /*<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * Reads the rows from backup table recording bulk loaded hfiles<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param tableList list of table names<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @return The keys of the Map are table, region and column family. Value of the map reflects<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * whether the hfile was recorded by preCommitStoreFile hook (true)<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</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.432"></a>
+<span class="sourceLineNo">433</span>    readBulkloadRows(List&lt;TableName&gt; tableList) throws IOException {<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</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.435"></a>
+<span class="sourceLineNo">436</span>    List&lt;byte[]&gt; rows = new ArrayList&lt;&gt;();<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    for (TableName tTable : tableList) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>      Scan scan = BackupSystemTable.createScanForOrigBulkLoadedFiles(tTable);<a name="line.438"></a>
+<span class="sourceLineNo">439</span>      Map&lt;String, Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt;&gt; tblMap = map.get(tTable);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      try (Table table = connection.getTable(bulkLoadTableName);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>          ResultScanner scanner = table.getScanner(scan)) {<a name="line.441"></a>
+<span class="sourceLineNo">442</span>        Result res = null;<a name="line.442"></a>
+<span class="sourceLineNo">443</span>        while ((res = scanner.next()) != null) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>          res.advance();<a name="line.444"></a>
+<span class="sourceLineNo">445</span>          String fam = null;<a name="line.445"></a>
+<span class="sourceLineNo">446</span>          String path = null;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>          boolean raw = false;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>          byte[] row;<a name="line.448"></a>
+<span class="sourceLineNo">449</span>          String region = null;<a name="line.449"></a>
+<span class="sourceLineNo">450</span>          for (Cell cell : res.listCells()) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>            row = CellUtil.cloneRow(cell);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>            rows.add(row);<a name="line.452"></a>
+<span class="sourceLineNo">453</span>            String rowStr = Bytes.toString(row);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>            region = BackupSystemTable.getRegionNameFromOrigBulkLoadRow(rowStr);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>            if (CellUtil.compareQualifiers(cell, BackupSystemTable.FAM_COL, 0,<a name="line.455"></a>
+<span class="sourceLineNo">456</span>              BackupSystemTable.FAM_COL.length) == 0) {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>              fam = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.457"></a>
+<span class="sourceLineNo">458</span>            } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.PATH_COL, 0,<a name="line.458"></a>
+<span class="sourceLineNo">459</span>              BackupSystemTable.PATH_COL.length) == 0) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>              path = Bytes.toString(CellUtil.cloneValue(cell));<a name="line.460"></a>
+<span class="sourceLineNo">461</span>            } else if (CellUtil.compareQualifiers(cell, BackupSystemTable.STATE_COL, 0,<a name="line.461"></a>
+<span class="sourceLineNo">462</span>              BackupSystemTable.STATE_COL.length) == 0) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>              byte[] state = CellUtil.cloneValue(cell);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>              if (Bytes.equals(BackupSystemTable.BL_PREPARE, state)) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>                raw = true;<a name="line.465"></a>
+<span class="sourceLineNo">466</span>              } else {<a name="line.466"></a>
+<span class="sourceLineNo">467</span>                raw = false;<a name="line.467"></a>
+<span class="sourceLineNo">468</span>              }<a name="line.468"></a>
+<span class="sourceLineNo">469</span>            }<a name="line.469"></a>
+<span class="sourceLineNo">470</span>          }<a name="line.470"></a>
+<span class="sourceLineNo">471</span>          if (map.get(tTable) == null) {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>            map.put(tTable, new HashMap&lt;&gt;());<a name="line.472"></a>
+<span class="sourceLineNo">473</span>            tblMap = map.get(tTable);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>          }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>          if (tblMap.get(region) == null) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>            tblMap.put(region, new HashMap&lt;&gt;());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>          }<a name="line.477"></a>
+<span class="sourceLineNo">478</span>          Map&lt;String, List&lt;Pair&lt;String, Boolean&gt;&gt;&gt; famMap = tblMap.get(region);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>          if (famMap.get(fam) == null) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>            famMap.put(fam, new ArrayList&lt;&gt;());<a name="line.480"></a>
+<span class="sourceLineNo">481</span>          }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>          famMap.get(fam).add(new Pair&lt;&gt;(path, raw));<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          LOG.debug("found orig " + path + " for " + fam + " of table " + region);<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>    }<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    return new Pair&lt;&gt;(map, rows);<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>   * @param sTableList List of tables<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * @param maps array of Map of family to List of Paths<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * @param backupId the backup Id<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   */<a name="line.494"></a>
+<span class="sourceLineNo">495</span>  public void writeBulkLoadedFiles(List&lt;TableName&gt; sTableList, Map&lt;byte[], List&lt;Path&gt;&gt;[] maps,<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      String backupId) throws IOException {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>    try (Table table = connection.getTable(bulkLoadTableName)) {<a name="line.497"></a>
+<span class="sourceLineNo">498</span>      long ts = EnvironmentEdgeManager.currentTime();<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      int cnt = 0;<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      for (int idx = 0; idx &lt; maps.length; idx++) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        Map&lt;byte[], List&lt;Path&gt;&gt; map = maps[idx];<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        TableName tn = sTableList.get(idx);<a name="line.503"></a>
+<span class="sourceLineNo">504</span><a name="line.504"></a>
+<span class="sourceLineNo">505</span>        if (map == null) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>          continue;<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>        for (Map.Entry&lt;byte[], List&lt;Path&gt;&gt; entry : map.entrySet()) {<a name="line.509"></a>
+<span class="sourceLineNo">510</span>          byte[] fam = entry.getKey();<a name="line.510"></a>
+<span class="sourceLineNo">511</span>          List&lt;Path&gt; paths = entry.getValue();<a name="line.511"></a>
+<span class="sourceLineNo">512</span>          for (Path p : paths) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>            Put put = BackupSystemTable.createPutForBulkLoadedFile(tn, fam, p.toString(), backupId,<a name="line.513"></a>
+<span class="sourceLineNo">514</span>              ts, cnt++);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>            puts.add(put);<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>      }<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      if (!puts.isEmpty()) {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        table.put(puts);<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      }<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    }<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * Reads backup status object (instance of backup info) from backup system table table<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * @param backupId backup id<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * @return Current status of backup session or null<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   */<a name="line.529"></a>
+<span class="sourceLineNo">530</span>  public BackupInfo readBackupInfo(String backupId) throws IOException {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    if (LOG.isTraceEnabled()) {<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      LOG.trace("read backup status from backup system table for: " + backupId);<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
+<span class="sourceLineNo">534</span><a name="line.534"></a>
+<span class="sourceLineNo">535</span>    try (Table table = connection.getTable(tableName)) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      Get get = createGetForBackupInfo(backupId);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      Result res = table.get(get);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      if (res.isEmpty()) {<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        return null;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      }<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      return resultToBackupInfo(res);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    }<a name="line.542"></a>
+<span class="sourceLineNo">543</span>  }<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>  /**<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   * Read the last backup start code (timestamp) of last successful backup. Will return null if<a name="line.546"></a>
+<span class="sourceLineNo">547</span>   * there is no start code stored on hbase or the value is of length 0. These two cases indicate<a name="line.547"></a>
+<span class="sourceLineNo">548</span>   * there is no successful backup completed so far.<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * @param backupRoot directory path to backup destination<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * @return the timestamp of last successful backup<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @throws IOException exception<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   */<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  public String readBackupStartCode(String backupRoot) throws IOException {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    LOG.trace("read backup start code from backup system table");<a name="line.554"></a>
+<span class="sourceLineNo">555</span><a name="line.555"></a>
+<span class="sourceLineNo">556</span>    try (Table table = connection.getTable(tableName)) {<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      Get get = createGetForStartCode(backupRoot);<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      Result res = table.get(get);<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      if (res.isEmpty()) {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>        return null;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      }<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      Cell cell = res.listCells().get(0);<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      byte[] val = CellUtil.cloneValue(cell);<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      if (val.length == 0) {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        return null;<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      }<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      return new String(val);<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>  /**<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * Write the start code (timestamp) to backup system table. If passed in null, then write 0 byte.<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * @param startCode start code<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @param backupRoot root directory path to backup<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   * @throws IOException exception<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   */<a name="line.576"></a>
+<span class="sourceLineNo">577</span>  public void writeBackupStartCode(Long startCode, String backupRoot) throws IOException {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>    if (LOG.isTraceEnabled()) {<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      LOG.trace("write backup start code to backup system table " + startCode);<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    }<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    try (Table table = connection.getTable(tableName)) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>      Put put = createPutForStartCode(startCode.toString(), backupRoot);<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      table.put(put);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    }<a name="line.584"></a>
+<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
+<span class="sourceLineNo">586</span><a name="line.586"></a>
+<span class="sourceLineNo">587</span>  /**<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * Exclusive operations are: create, delete, merge<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * @throws IOException if a table operation fails or an active backup exclusive operation is<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   *           already underway<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   */<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  public void startBackupExclusiveOperation() throws IOException {<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    LOG.debug("Start new backup exclusive operation");<a name="line.593"></a>
+<span class="sourceLineNo">594</span><a name="line.594"></a>
+<span class="sourceLineNo">595</span>    try (Table table = connection.getTable(tableName)) {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      Put put = createPutForStartBackupSession();<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      // First try to put if row does not exist<a name="line.597"></a>
+<span class="sourceLineNo">598</span>      if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.598"></a>
+<span class="sourceLineNo">599</span>          .ifNotExists().thenPut(put)) {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>        // Row exists, try to put if value == ACTIVE_SESSION_NO<a name="line.600"></a>
+<span class="sourceLineNo">601</span>        if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.601"></a>
+<span class="sourceLineNo">602</span>            .ifEquals(ACTIVE_SESSION_NO).thenPut(put)) {<a name="line.602"></a>
+<span class="sourceLineNo">603</span>          throw new ExclusiveOperationException();<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        }<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      }<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
 <span class="sourceLineNo">607</span>  }<a name="line.607"></a>
 <span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  public void finishBackupExclusiveOperation() throws IOException {<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    LOG.debug("Finish backup exclusive operation");<a name="line.610"></a>
-<span class="sourceLineNo">611</span><a name="line.611"></a>
-<span class="sourceLineNo">612</span>    try (Table table = connection.getTable(tableName)) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      Put put = createPutForStopBackupSession();<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.614"></a>
-<span class="sourceLineNo">615</span>          .ifEquals(ACTIVE_SESSION_YES).thenPut(put)) {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>        throw new IOException("There is no active backup exclusive operation");<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      }<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    }<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>  private Put createPutForStopBackupSession() {<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    Put put = new Put(ACTIVE_SESSION_ROW);<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    put.addColumn(SESSIONS_FAMILY, ACTIVE_SESSION_COL, ACTIVE_SESSION_NO);<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    return put;<a name="line.624"></a>
+<span class="sourceLineNo">609</span>  private Put createPutForStartBackupSession() {<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    Put put = new Put(ACTIVE_SESSION_ROW);<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    put.addColumn(SESSIONS_FAMILY, ACTIVE_SESSION_COL, ACTIVE_SESSION_YES);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    return put;<a name="line.612"></a>
+<span class="sourceLineNo">613</span>  }<a name="line.613"></a>
+<span class="sourceLineNo">614</span><a name="line.614"></a>
+<span class="sourceLineNo">615</span>  public void finishBackupExclusiveOperation() throws IOException {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    LOG.debug("Finish backup exclusive operation");<a name="line.616"></a>
+<span class="sourceLineNo">617</span><a name="line.617"></a>
+<span class="sourceLineNo">618</span>    try (Table table = connection.getTable(tableName)) {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>      Put put = createPutForStopBackupSession();<a name="line.619"></a>
+<span class="sourceLineNo">620</span>      if (!table.checkAndMutate(ACTIVE_SESSION_ROW, SESSIONS_FAMILY).qualifier(ACTIVE_SESSION_COL)<a name="line.620"></a>
+<span class="sourceLineNo">621</span>          .ifEquals(ACTIVE_SESSION_YES).thenPut(put)) {<a name="line.621"></a>
+<span class="sourceLineNo">622</span>        throw new IOException("There is no active backup exclusive operation");<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      }<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    }<a name="line.624"></a>
 <span class="sourceLineNo">625</span>  }<a name="line.625"></a>
 <span class="sourceLineNo">626</span><a name="line.626"></a>
-<span class="sourceLineNo">627</span>  /**<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * Get the Region Servers log information after the last log roll from backup system table.<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @param backupRoot root directory path to backup<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @return RS log info<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   * @throws IOException exception<a name="line.631"></a>
-<span class="sourceLineNo">632</span>   */<a name="line.632"></a>
-<span class="sourceLineNo">633</span>  public HashMap&lt;String, Long&gt; readRegionServerLastLogRollResult(String backupRoot)<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      throws IOException {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    LOG.trace("read region server last roll log result to backup system table");<a name="line.635"></a>
-<span class="sourceLineNo">636</span><a name="line.636"></a>
-<span class="sourceLineNo">637</span>    Scan scan = createScanForReadRegionServerLastLogRollResult(backupRoot);<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    try (Table table = connection.getTable(tableName);<a name="line.639"></a>
-<span class="sourceLineNo">640</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      Result res;<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      HashMap&lt;String, Long&gt; rsTimestampMap = new HashMap&lt;&gt;();<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      while ((res = scanner.next()) != null) {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>        res.advance();<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        Cell cell = res.current();<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        byte[] row = CellUtil.cloneRow(cell);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>        String server = getServerNameForReadRegionServerLastLogRollResult(row);<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        byte[] data = CellUtil.cloneValue(cell);<a name="line.648"></a>
-<span class="sourceLineNo">649</span>        rsTimestampMap.put(server, Bytes.toLong(data));<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      }<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      return rsTimestampMap;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>  }<a name="line.653"></a>
-<span class="sourceLineNo">654</span><a name="line.654"></a>
-<span class="sourceLineNo">655</span>  /**<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   * Writes Region Server last roll log result (timestamp) to backup system table table<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   * @param server Region Server name<a name="line.657"></a>
-<span class="sourceLineNo">658</span>   * @param ts last log timestamp<a name="line.658"></a>
-<span class="sourceLineNo">659</span>   * @param backupRoot root directory path to backup<a name="line.659"></a>
-<span class="sourceLineNo">660</span>   * @throws IOException exception<a name="line.660"></a>
-<span class="sourceLineNo">661</span>   */<a name="line.661"></a>
-<span class="sourceLineNo">662</span>  public void writeRegionServerLastLogRollResult(String server, Long ts, String backupRoot)<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      throws IOException {<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    LOG.trace("write region server last roll log result to backup system table");<a name="line.664"></a>
-<span class="sourceLineNo">665</span><a name="line.665"></a>
-<span class="sourceLineNo">666</span>    try (Table table = connection.getTable(tableName)) {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>      Put put = createPutForRegionServerLastLogRollResult(server, ts, backupRoot);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>      table.put(put);<a name="line.668"></a>
-<span class="sourceLineNo">669</span>    }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>  }<a name="line.670"></a>
+<span class="sourceLineNo">627</span>  private Put createPutForStopBackupSession() {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    Put put = new Put(ACTIVE_SESSION_ROW);<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    put.addColumn(SESSIONS_FAMILY, ACTIVE_SESSION_COL, ACTIVE_SESSION_NO);<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    return put;<a name="line.630"></a>
+<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>  /**<a name="line.633"></a>
+<span class="sourceLineNo">634</span>   * Get the Region Servers log information after the last log roll from backup system table.<a name="line.634"></a>
+<span class="sourceLineNo">635</span>   * @param backupRoot root directory path to backup<a name="line.635"></a>
+<span class="sourceLineNo">636</span>   * @return RS log info<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * @throws IOException exception<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   */<a name="line.638"></a>
+<span class="sourceLineNo">639</span>  public HashMap&lt;String, Long&gt; readRegionServerLastLogRollResult(String backupRoot)<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      throws IOException {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>    LOG.trace("read region server last roll log result to backup system table");<a name="line.641"></a>
+<span class="sourceLineNo">642</span><a name="line.642"></a>
+<span class="sourceLineNo">643</span>    Scan scan = createScanForReadRegionServerLastLogRollResult(backupRoot);<a name="line.643"></a>
+<span class="sourceLineNo">644</span><a name="line.644"></a>
+<span class="sourceLineNo">645</span>    try (Table table = connection.getTable(tableName);<a name="line.645"></a>
+<span class="sourceLineNo">646</span>        ResultScanner scanner = table.getScanner(scan)) {<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      Result res;<a name="line.647"></a>
+<span class="sourceLineNo">648</span>      HashMap&lt;String, Long&gt; rsTimestampMap = new HashMap&lt;&gt;();<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      while ((res = scanner.next()) != null) {<a name="line.649"></a>
+<span class="sourceLineNo">650</span>        res.advance();<a name="line.650"></a>
+<span class="sourceLineNo">651</span>        Cell cell = res.current();<a name="line.651"></a>
+<span class="sourceLineNo">652</span>        byte[] row = CellUtil.cloneRow(cell);<a name="line.652"></a>
+<span class="sourceLineNo">653</span>        String server = getServerNameForReadRegionServerLastLogRollResult(row);<a name="line.653"></a>
+<span class="sourceLineNo">654</span>        byte[] data = CellUtil.cloneValue(cell);<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        rsTimestampMap.put(server, Bytes.toLong(data));<a name="line.655"></a>
+<span class="sourceLineNo">656</span>      }<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      return rsTimestampMap;<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>   * Writes Region Server last roll log result (timestamp) to backup system table table<a name="line.662"></a>
+<span class="sourceLineNo">663</span>   * @param server Region Server name<a name="line.663"></a>
+<span class="sourceLineNo">664</span>   * @param ts last log timestamp<a name="line.664"></a>
+<span class="sourceLineNo">665</span>   * @param backupRoot root directory path to backup<a name="line.665"></a>
+<span class="sourceLineNo">666</span>   * @throws IOException exception<a name="line.666"></a>
+<span class="sourceLineNo">667</span>   */<a name="line.667"></a>
+<span class="sourceLineNo">668</span>  public void writeRegionServerLastLogRollResult(String server, Long ts, String backupRoot)<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      throws IOException {<a name="line.669"></a>
+<span class="sourceLineNo">670</span>    LOG.trace("write region server last roll log result to backup system table");<a name="line.670"></a>
 <span class="sourceLineNo">671</span><a name="line.671"></a>
-<span class="sourceLineNo">672</span>  /**<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   * Get all completed backup information (in desc order by time)<a name="line.673"></a>
-<span class="sourceLineNo">674</span>   * @param onlyCompleted true, if only successfully completed sessions<a name="line.674"></a>
-<span class="sourceLineNo">675</span>   * @return history info of BackupCompleteData<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   * @throws IOException exception<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  public ArrayList&lt;BackupInfo&gt; getBackupHistory(boolean onlyCompleted) throws IOException {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    LOG.trace("get backup history from backup system table");<a name="line.679"></a>
-<span class="sourceLineNo">680</span><a name="line.680"></a>
-<span class="sourceLineNo">681</span>    BackupState state = onlyCompleted ? BackupState.COMPLETE : BackupState.ANY;<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    ArrayList&lt;BackupInfo&gt; list = getBackupInfos(state);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    return BackupUtils.sortHistoryListDesc(list);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>  }<a name="line.684"></a>
-<span class="sourceLineNo">685</span><a name="line.685"></a>
-<span class="sourceLineNo">686</span>  /**<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   * Get all backup

<TRUNCATED>